Child fenster in sdi maximieren
-
Hallo zusammen,
habe folgendes Problem: In einer SDI Anwendung will ich ein Tochterfenster erzeugen. Dieses soll beim Start so gross sein wie das Ansichtsfenster.
Dazu habe ich in die Mainframe.h folgende Zeilen ergänzt:// Attribute public: CGeneral m_General;In der OnCreate der Mainframe erzeuge ich dann das Tochterfenster mit:
int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){ if (CFrameWnd::OnCreate(lpCreateStruct) == -1) return -1; if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Fehler beim Erstellen der Statusleiste.\n"); return -1; // Fehler beim Erstellen } CRect ParentRect; this->GetClientRect(ParentRect); m_General.Create(NULL,_T("MyChild1"),WS_CHILD|WS_VISIBLE, CRect(0,0,ParentRect.Width(),ParentRect.Height()),this,1,NULL); m_General.SetWindowPos(&wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE); return 0; }Die Anwendung erzeugt mir zwar mein Tochterfenster jedoch deckt es gerade mal 3/4 des Ansichtsfensters ab. Weiss jemand vielleicht was ich falschm mache?
Danke..
-
Was ist denn CGeneral für ein Typ?

-
hi connan,
CGeneral ist ein CWnd.
-
Dann sollte es eigentlich funktionieren. Passt du vieleicht die Größe des Mainframes später noch an?
-
hi connan,
angeregt durch deinen Tip habe ich versucht mal das Childfenster am Ende der Initinstance zu erzeugen.
m_pMainWnd->ShowWindow(SW_SHOWMAXIMIZED); CMainFrame* pMainWnd = (CMainFrame*) m_pMainWnd; m_pMainWnd->UpdateWindow(); CRect ParentRect; pMainWnd->GetClientRect(ParentRect); pMainWnd->m_General.Create(NULL,_T("MyChild1"),WS_CHILD|WS_VISIBLE, CRect(0,0,ParentRect.Width(),ParentRect.Height()),pMainWnd,1,NULL); pMainWnd->m_General.SetWindowPos(&CWnd::wndTop,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);So klappt es auch. D.h. die Mainframe wurde irgendwie noch verändert.
Vielen Dank!
-
Du solltest die Größenänderunen an dieser Stelle gar nicht machen.
Reagiere auf WM_SIZE in dem äußeren Fensterund passe auf diese Nachricht hin, das innere Fenster an.