簡體   English   中英

C ++ MFC MDI在創建時更改子窗口變量

[英]C++ MFC MDI change child window variables on creation

我有一個MDI應用程序,其中在調用OnFileNew()函數(由theApp對象處理OnFileNew()時會調用一個對話框。 該對話框允許用戶為某些變量設置值,然后將這些值傳遞給調用->CreateNewChild()函數時創建的CChildFrame對象。

如何將這些變量傳遞到由->CreateNewChild()函數創建的CChildFrame對象上?

編輯:作為對我的回答,這是使用->Create() vs- ->CreateNewChild()

鏈接: CMainFrame *pFrame; pFrame->CreateNewChild()

鏈接: CChildFrame *childFrame; childFrame->Create()

如何獲得第一個鏈接中顯示的選項卡式窗口以及第二個鏈接中描述的函數聲明?

您可以通過自定義的文檔模板傳遞數據。 從CMultiDocTemplate派生一個類以添加其他數據成員,然后將指向派生文檔模板類的指針添加到CWinApp派生的應用程序類。 除完成操作外,以通常的方式初始化文檔模板,將新文檔模板對象保存到應用程序類中的指針。

現在,在CreateNewChild函數中,不必調用CWinApp :: OnFileNew,而只需從當前幀獲取數據,然后在調用OpenDocumentFile(NULL)之前將其分配給應用程序類中保存的文檔模板中的數據成員。 您可以在OpenDocumentFile返回時清除數據成員。

文檔模板將依次創建子框架,並在創建上下文中傳遞doc模板。 要在子框架中獲取創建上下文,可以覆蓋CChildFrame :: OnCreateClient或在OnCreate中讀取創建結構:

MDICREATESTRUCT * pMDICreateStruct=(MDICREATESTRUCT * )lpCreateStruct->lpCreateParams;
CCreateContext *pCreateContext=(CCreateContext *)pMDICreateStruct->lParam;

除了將初始化數據傳遞到文檔模板中之外,您還可以將數據傳遞到新文檔中。 基本上,您將從CMultiDocTemplate :: OpenDocumentFile復制代碼,並添加代碼以從主框架的活動文檔中獲取初始化數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM