實現SDI與MDI的轉換
發表于:2007-07-14來源:作者:點擊數:
標簽:
如果想將一個編好的SDI應用程序轉換為MDI,首先要建立一個繼承于CMDIChidWnd的類,假設為 CC hldFrm,在CWinApp中作如下變化。 InitInstance() { . ... //instead of adding CSingleDocTemplate // Add CMultiDocTemplate. pDocTemplate = new CMultiDocTemp
如果想將一個編好的SDI應用程序轉換為MDI,首先要建立一個繼承于CMDIChidWnd的類,假設為
CChldFrm,在CWinApp中作如下變化。
InitInstance()
{
. ...
//instead of adding CSingleDocTemplate
// Add CMultiDocTemplate.
pDocTemplate = new CMultiDocTemplate(
IDR_MAINFRAME,
RUNTIME_CLASS(CSDIDoc),
RUNTIME_CLASS(CChldFrm),
// For Main MDI Frame change this frame window from
// CFrameWnd derivative ( i.e. CMainFrame )
// to your CMDIChildWnd derived CChldFrm.
RUNTIME_CLASS(CSDIView));
/// After this it is required to create the main frame window
// which will contain all the child
windows. Now this window is
// what was initially frame window for SDI.
CMainFrame* pMainFrame = new CMainFrame;
if (!pMainFrame->LoadFrame(IDR_MAINFRAME))
return FALSE;
m_pMainWnd = pMainFrame;
.....
}
在從CMDIFrameWnd中繼承的類CMainFrame代替CFramWnd后,所有的類都將從CMDIFrame繼承,而不是CFrameWnd,編譯運行后你就會發現程序已經從SDI變換到MDI。
注意:在CMainFram中必須將構造函數從private改為public.否則會出錯。
原文轉自:http://www.anti-gravitydesign.com