個人考勤軟件開發實例
作者:YangLanGuang
CAttendanceDlg dlg;
之後立即把這個對象的指針信息存入CWinApp::m_pMainWnd 和附加的m_pMiddle中備用
m_pMainWnd = &dlg; m_pMiddle = &dlg;
在ClassWizard中為主對話框類導入OnCreate()函數
在其中創建子框架對象CChildFrame
CChildFrame* pFrame = new CChildFrame; m_pChildFrame = pFrame; pFrame>LoadFrame(IDR_MAINFRAME WS_OVERLAPPEDWINDOW | FWS_ADDTOTITLE NULL//m_pMainWnd NULL);
暫時將其顯示狀態置為隱藏
m_pChildFrame
>ShowWindow(SW_HIDE);
在子框架對象CChildFrame的OnCreate()函數中創建子視類對象CChildView
CCreateContext context; contextm_pNewViewClass = RUNTIME_CLASS(CChildView); contextm_pCurrentFrame = this; contextm_pCurrentDoc = NULL; contextm_pLastView = NULL; m_pView = STATIC_DOWNCAST(CChildView CreateView(&context)); //CreateView(&context); if(m_pView != NULL) { m_pView>ShowWindow(SW_HIDE);//暫時將其顯示狀態也置為隱藏 SetActiveView(m_pView); }
在主對話框的打印或打印預覽處理函數中只要向子框架CChildFrame發送相應的消息即可
對於打印函數為
m_pChildFrame>SendMessage(WM_COMMAND ID_FILE_PRINT);
或對於打印預覽函數為
m_pChildFrame>ShowWindow(SW_SHOW);//將子框架CChildFrame顯示狀態置為顯示 m_pChildFrame>SendMessage(WM_COMMAND ID_FILE_PRINT_PREVIEW);//打印預覽
在子框架CChildFrame的打印預覽處理函數中需要將CWinApp::m_pMainWnd暫時替換為子框架CChildFrame的指針
並把子視類對象的顯示狀態激活後調用子視類對象的打印預覽處理函數
CAttendanceApp* app=(CAttendanceApp*)AfxGetApp(); app>m_pMainWnd = this;//應用程序主窗口臨時替換為子框架窗口 m_pView>ShowWindow(SW_SHOW); SetActiveView(m_pView); m_pView>OnFilePrintPreview(this);
打印預覽結束退出之前必須恢復原有的顯示狀態
並將CWinApp::m_pMainWnd恢復為主對話框
pParent>ShowWindow(SW_HIDE);//將子框架CChildFrame顯示狀態重新置為隱藏 pParent>UpdateWindow(); CAttendanceApp* app=(CAttendanceApp*)AfxGetApp(); app>m_pMainWnd = app>m_pMiddle;//應用程序主窗口恢復為主對話框窗口 app>m_pMiddle>UpdateWindow();
這些後處理工作放在CWrapperView::OnEndPrintPreview(
)函數中的結尾處完成
最後還要為子框架創建一個標識為IDR_MAINFRAME的菜單資源
From:http://tw.wingwit.com/Article/program/c/201401/30249.html