Neues View in MDI
-
Servus,
ich möchte ein Fenster im MDI Rahmen (View) erstellen. Was passiert, ist das das neue Fenster auf dem kompletten Desktop verschoben werden kann.
void CChildFrame::OnDir() { CWnd* mFrame = (CWnd*)GetDlgItem(IDD_FAMOSIMPORT_FORM); //CDC* pDC = this->GetDC(); pDir = new CDialog(); pDir->Create(IDD_DIR,mFrame); pDir->ShowWindow(SW_SHOWNORMAL); //ReleaseDC(pDC); ///////////////////////////////////////////////////////////////////////// //CDialog Dialog(IDD_DIR,this); //Dialog.DoModal(); }Wie gehts richtig?
-
Richtig wäre, ein CMDIChildWnd in einem CMDIFrameWnd zu erstellen.
Mit Dialogen geht das nicht, soweit ich weiss.
-
Dann halt CFormView...
Ich mach mir ein CDir::CFormView
Dann mach ich mir in einem CChildFrame ChildFrm.hCDir* pDir;und ein Menüpunkt der OnDir aufruft...
void CChildFrame::OnDir() { CRect rect; GetClientRect(rect); pDir = new CDir(); pDir->Create(NULL, "Test", WS_CHILDWINDOW, rect, GetActiveView(), 1234, NULL); pDir->ShowWindow(WS_CHILD || WS_VISIBLE); }...dann steht geschrieben
D:\test\ChildFrm.cpp(97) : error C2248: "CDir::CDir" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CDir" erfolgte
d:\werner\famosimport\dir.h(20) : Siehe Deklaration von 'CDir::CDir'
D:\test\ChildFrm.cpp(104) : error C2248: "Create" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CFormView" erfolgte
c:\program files\microsoft visual studio\vc98\mfc\include\afxext.h(756) : Siehe Deklaration von 'Create'warum protected ??
Ich mein, wenn ich versuch das einfach in CDir auf public zu setzen ist CFormView Standardkonstruktor protected. In SDI funktioniert das, was ist hier anders.... ich hab mich mal umgeschaut. Es scheint, als gäbe es keine Einführung in Sachen MDI.
-
MSDN (sollte man kennen, wenn man MFC macht)
Dort gibt es auch Beispiele.CMDIFrameWnd
http://msdn.microsoft.com/en-us/library/30a87cxk.aspxCMDIChildWnd
http://msdn.microsoft.com/en-us/library/hw5095wc.aspx