Child Dialog erzeugen
-
Hi zusammen...
Ich bin momentan an einer SDI Anwendung, da versuche ich gerade, einen nicht modalen Dialog im HauptFrame zu erzeugen.
Ich habe dazu eine Frage:
Ich erzeuge den Dialog in der OnCreate Methode und habe nachher das Problem, dass der Dialog wohl auf der Oberfläche steht, aber nicht im MainFrame eingebettet wird.
Wenn ich das Hauptfenster meiner APP verschiebe, dann bleibt das Dialogfeld am ursprünglichen Ort stehen!Ich habe nun gelesen, dass man das Dialogfeld als CHILD erzeugen soll, nur wo und wie mache ich das genau?
Muss ich mein Dialogfeld in diesem Fall auf eine andere Art erzeugen?
Als Beispiel habe ich meinen Code einmal angefügt:
CDlgPCTL *pDlg1 = new CDlgPCTL; //Erzeugung des Control Dialogs pDlg1->Create(IDD_DLGPCTL); //Startposition des Fensters pDlg1->SetWindowPos(&CWnd::wndTopMost,15,56,240,334,SWP_NOSIZE); pDlg1->ShowWindow(SW_SHOW);
Ich habe die Koordinaten statisch angegeben. Kann man dies auch so lassen, wenn man den Dialog als CHILD erzeugt, oder muss ich die jeweilige Position des Parent Window übergeben?
Gruz
Danny
-
Probier's mal so. Ka, ob's tut.
[cpp] CDlgPCTL *pDlg1 = new CDlgPCTL;
//Erzeugung des Control Dialogs
pDlg1->Create(IDD_DLGPCTL,this);
//Startposition des Fensters
pDlg1->SetWindowPos(&CWnd::wndTopMost,15,56,240,334,SWP_NOSIZE);
pDlg1->ShowWindow(SW_SHOW);[/cpp]
-
Wenn du es als Child erzeugen willst, dann musst du es so schreiben :
CWnd* pWnd = new CWnd; pWnd->Create(ClassName...,"Fenstername", WS_BORDER | WS_VISIBLE | [u]WS_CHILD[/u], CRect(100,200,200,100), this, 111);
Doch das Problem ist, dass du jedes einzelne Control einzeln in dem Window
erzeugen musst ...Gruß
:: NoName ::
-
Danke für die Tips...
Das erzeugen jedes einzelnen Controls wollte ich eben vermeiden...
Drum habe ich mich gefragt, ob's wohl noch ne andere Möglichkeit gibt..Na, dann muss ich wohl noch n'bisschen rumtüfteln...
Gibt es eine Möglichkeit, das Dialogfeld trotzdem mit dem Hauptframe zu verschieben, auch wenn es kein Child Fenster ist?
Gruz Danny
-
Hast du meine Methode schon getestet?
Du musst als Style im Dialogeditor für den Dialog möglicherweise noch "Untergeordnert" auswählen.
-
Hallo
Ja habe ich...Mit dem this Zeiger kann ich den Dialog im Hauptframe einbinden.
Ich kann ihn jedoch noch immer nicht mit dem Hauptframe verschieben (Wenn ich also mit der Maus das ganze Hauptframe meiner APP verschiebe, verschiebt sich das Dialogfeld nicht mit, auch nicht, wenn ich das Hauptframe kleiner mache oder sowas...).Unter einbinden verstehe ich dies: Wenn ich das Dialogfeld ohne this Zeiger erzeuge, dann erscheinen mir in der Taskleiste beim Start der APP zwei Einträge.
Mit dem this Zeiger jedoch nur der Eintrag der APP...Wenn ich jedoch unter Style "Untergeordnet" anwähle, verschwindet mir das Dialogfeld von der Oberfläche (Ist nicht mehr sichtbar) Was kann das sein?
Gruss
Danny
-
Ich bin's nochmal:
Ich glaube, dass ich noch etwas zu erwähnen habe: Kann es sein, das das
"nichterscheinen" des Dialogfeldes beim Style "Untergeordnet" daran liegt,dass
ich das Hauptframe meiner SDI Anwendung von CFormView abgeleitet habe?Das währe ziemlich blöd...
Das Form vom Hauptframe hat nämlich ebenfalls den Style "Untergeordnet", was glaube ich nicht so ganz klappt....
Wenn ich jedoch da noch den Punkt "Nebengordete ausschneiden" anwähle, dann erscheint mir das Dialogfeld und es lässt sich auch zusammen mit dem Hauptframe verschieben. Nur klatscht es mir dann an die linke obere Ecke....Meine Positionsbestimmungen haben also da keine Wirkung...
Wenn ich einen anderen Style anwähle (Kontextmenu oder Überlappend) Crasht mir die APP...Könnte ich das noch anders lösen...??
Es dürfte kritisch werden, die gesamte App umzubauen, nur um nicht von der Klasse
CFormView abzuleiten...Puuh, hätte wirklich Pech gehabt, wenn das tatsächlich mit CFormView nicht geht...
Was kann ich da noch tun??