Neues Fenster anzeigen
-
Abend zusammen,
ich glaube ich habe mir als Anfänger was verbaut. Da ich das Fenster-Konzept verstehen wollte, habe ich ohne den Assistent getippt. Mein Problem ist nun, dass der folgende Source mein Fenster anzeigt. Dies soll das Hauptfenster sein. Nun möchte ich gerne in diesem angezeigten Fenster weitere Fenster anzeigen lassen. Irgendwie habe ich das Gefühl, da das Fenster nicht den Anschein eines MDIs macht, dass es so nicht gehen wird. Was muss ich jetzt tun? Hier mal mein aktueller Source
myapp.h
//Applikation #include <afxwin.h> class CMyApp : public CWinApp { public: virtual BOOL InitInstance(); //Hier wird Rahmen erstellt };
myframe.h
//Rahmen #include <afxwin.h> #include <afxext.h> class CMyFrame : public CFrameWnd { public: CMyFrame(); //Konstruktor };
myview.h
//Ansicht #include <afxwin.h> class CMyView : public CView { public: CMyView(CFrameWnd *parent); //Konstruktor - Ansicht bekommt Zeiger von Rahmen mitgeteilt protected: afx_msg void OnDraw(class CDC *); //OnDraw-Methode };
myapp.cpp
#include "MyApp.h" #include "MyFrame.h" CMyApp Anwendung; BOOL CMyApp::InitInstance() { //Zeiger auf neues Rahmen-Objekt setzen //Ruft somit auch den Konstruktor auf CMyFrame *pMyFrame = new CMyFrame; //Adresse an globale MFC-Variable übergeben, damit die das Startfenster kennt m_pMainWnd = pMyFrame; //Hauptfenster anzeigen m_pMainWnd->ShowWindow(m_nCmdShow); m_pMainWnd->UpdateWindow(); return TRUE; }
myframe.cpp
#include "MyFrame.h" #include "MyView.h" #include "resource.h" // Rahmenfenster CMyFrame::CMyFrame() { LPCTSTR wndClass = AfxRegisterWndClass(NULL,AfxGetApp()->LoadCursor(IDC_ARROW), (HBRUSH) (COLOR_WINDOW+1),AfxGetApp()->LoadIcon(IDI_ICON1)); // Fenster erzeugen Create(wndClass,"EMS 2005.7", WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZEBOX| WS_MAXIMIZEBOX, rectDefault,0,MAKEINTRESOURCE(IDR_MENU1)); // Rahmen ist erstellt // Ansicht erzeugen und an Rahmen anhängen new CMyView(this); }
myview.cpp
#include "MyView.h" // Ansichtsfenster CMyView::CMyView(CFrameWnd *parent) { Create(0,0, WS_CHILD | WS_VISIBLE, CRect(), parent, AFX_IDW_PANE_FIRST); } void CMyView::OnDraw(class CDC *dc) { RECT rect; TEXTMETRIC tm; GetClientRect(&rect); dc->GetTextMetrics(&tm); dc->TextOut(10,(rect.bottom-tm.tmHeight)/2, "Dies ist die Ansichtsklasse!"); }