Dialog in einer GroupBox anzeigen

VoidPointer

Grünschnabel
Hallo zusammen,

ich habe folgende Frage. Ich habe ein SDI Projekt mit einer Ableitung von CFormView und auf diesem erstellten Basis Dialog befindet sich eine Group Box. In dieser Box soll auf Knopfdruck ein Dialog mit weitern Buttons erscheinen.

Ich habe folgendes mal zu Test zwecken in die OnInitialUpdate() eingetragen:

Code:
             CWnd *pMovieCtrlFrame = GetDlgItem(IDC_MOVIE_CTRL_FRAME); // Group Box
	CRect rMovieFrame;
	pMovieCtrlFrame->GetClientRect(&rMovieFrame);

	int nX, nY, nXz, nYz;
	nX = rMovieFrame.left;
	nY = rMovieFrame.bottom+1; 
	
	CMovieCtrl MovieCtrl; // DIALOG mit weiteren Buttons
	MovieCtrl.Create(IDD_MOVIE_CTRL, GetParent());
	MovieCtrl.SetWindowPos( GetParent(), nX, nY, nX, nY, SWP_SHOWWINDOW );
	MovieCtrl.ShowWindow(SW_SHOW);

Leider wird der Dialog beim starten nicht angezeigt. Kann mir vielleicht jemand einen Tip geben wie ich diesen Dialog in der Group Box Sichtbar machen kann?

Gruß

Void
 
Ich würde Dir vorschlagen, die Buttons fest zu erstellen und nur bei Bedarf anzuzeigen.

Außerdem hast Du vergessen, Breite und Höhe zu setzen. Wenn du den Dialog bei 0,0 anzeigst, hat er auch die Breite und Höhe 0.
Da kommen wir der Sache auch schon näher: Du ermittelst die Koordinaten der Groupbox mit GetClientRect. Das zurückgelieferte Rechteck liegt immer bei 0,0, die Funktion gibt Dir nur Breite und Höhe. Du mußt das noch in die Clientkoordinaten Deines Hauptfensters umrechnen.
Dazu mußt du sie erst mit
Code:
MovieCtrl.ClientToScreen(&rMovieFrame)
in Bildschirmkoordinaten umrechnen und dann mit
Code:
ScreenToClient(&rMovieFrame)
in Clientkoordinaten Deines Hauptfensters umrechnen.
Danach natürlich nicht vergessen, nXz und nYz zu setzen und auch beim Aufruf von SetWindowPos mit anzugeben.

Der einfachere Weg (außer dem ganz oben) wäre allerdings, Du kennst die Koordinaten Deiner GroupBox im Hauptfenster (ACHTUNG: nicht identisch mit den Koordinaten im Dialogeditor). Da sich die Position und Größe der Groupbox im Hauptfenster wahrscheinlich nicht ändert, kannst Du sie auch fest (als Konstanten) setzen.
 
Zurück