【vc++精品源码栏目提醒】:文章导读:在新的一年中,各位网友都进入紧张的学习或是工作阶段。
网学会员整理了vc++精品源码-vc界面编程经典实例3 - 其它资料的相关内容供大家参考,祝大家在新的一年里工作和学习顺利!
数据库开发之窗体编程 在很多管理信息系统的窗体都有一些共同点:可以通过框架菜单打开各种类型的视图窗口,而这些视图窗口具有 MDI 的一些特点,可以在框架窗体中最小化最大化还原等,并且点击菜单只能产生一个窗口(象SDI)。
这种形式的窗口设计给人与一种条理感。
于是我用 VC6.0 尝试创建这种窗口,现将整个过程为大家写下来,这里应含有 MFC 的一些内幕技术。
一、新建 AppWizadexe工程,名为 mdisdi,基于 MDI 的文档视模式其余默认。
二、在 CApp 子类中添加如下代码: public: CMultiDocTemplate pDoctemp1 CMultiDocTemplate pDoctemp2三、修改 InitInstance中将如下代码: CMultiDocTemplate pDocTemplate pDocTemplate new CMultiDocTemplate IDR_MDISDITYPE RUNTIME_CLASSCMdisdiDoc RUNTIME_CLASSCChildFrame // custom MDI child frame RUNTIME_CLASSCMdisdiView AddDocTemplatepDocTemplate改为: //CMultiDocTemplate pDocTemplate//删除 pDoctemp1 new CMultiDocTemplate IDR_MDISDITYPE RUNTIME_CLASSCMdisdiDoc RUNTIME_CLASSCChildFrame // custom MDI child frame RUNTIME_CLASSCMdisdiView AddDocTemplatepDoctemp1四、加入新类 CDoc2基类为 CDocument利用菜单 Insert-New Class…让其自动生成即可;加入新框架类CChildFrame2基类为 CMDIChildWnd;加入新视类,这里新加 CView2 基类为 CFormView 类Insert-New Form…,注意在添加对话框中将 Document选为 CDoc2五、同(三)将如下代码: CMultiDocTemplate pNewDocTemplate new CMultiDocTemplate IDR_VIEW2_TMPL RUNTIME_CLASSCDoc2 // document class RUNTIME_CLASSCMDIChildWnd // frame class RUNTIME_CLASSCView2 // view class AddDocTemplatepNewDocTemplate改为: pDoctemp2 new CMultiDocTemplate IDR_VIEW2_TMPL RUNTIME_CLASSCDoc2 // document class RUNTIME_CLASSCChildFrame2 // frame class RUNTIME_CLASSCView2 // view class AddDocTemplatepDoctemp2并在 mdisdi.cpp 头部添加: include quotDoc2.hquot六、修改 IDR_MAINFRAME 菜单,新添一菜单“功能”,其子菜单为窗口 1 和窗口 2.用 ctrlc 复制ctrlv粘贴产生二个新菜单 IDR_MAINFRAME1 和 IDR_MAINFRAME2再将其更名为 IDR_MDISDITYPEIDR_VIEW2_TMPL.七、为 IDR_MAINFRAME 菜单新添菜单增加消息应射函数 OnMenuitem32771和 OnMenuitem32772八、在 MainFrm.h 加入: include quotmdisdiDoc.hquot include quotDoc2.hquot并在类中添加: public: CMdisdiDoc pDoc1 CDoc2 pDoc2在 MainFrm.cpp 增加代码如下: void CMainFrame::OnMenuitem32771 // TODO: Add your command handler code here ifpDoc1NULL CMdisdiApp pmdisdiapp CMdisdiApp AfxGetApp pDoc1CMdisdiDoc pmdisdiapp-gtpDoctemp1-gtOpenDocumentFileNULL else POSITION pos pospDoc1-gtGetFirstViewPosition CView pView pViewpDoc1-gtGetNextViewpos pView-gtGetParentFrame-gtActivateFrame void CMainFrame::OnMenuitem32772 ifpDoc2NULL CMdisdiApp pmdisdiapp CMdisdiApp AfxGetApp pDoc2CDoc2 pmdisdiapp-gtpDoctemp2-gtOpenDocumentFileNULL else POSITION pos pospDoc2-gtGetFirstViewPosition CView pView pViewpDoc2-gtGetNextViewpos pView-gtGetParentFrame-gtActivateFrame 九、在 MainFrm.cpp 添加如下代码: CMainFrame::CMainFrame pDoc1NULL pDoc2NULL 在 ChildFrm.cpp 中添加: include quotMainFrm.hquot 和如下代码: CChildFrame::CChildFrame CMainFrame pmainwnd CMainFrame AfxGetMainWnd pmainwnd-gtpDoc1NULL 在 ChildFrame2.cpp 中添加: include quotMainFrm.hquot 和如下代码: CChildFrame2::CChildFrame2 CMainFrame pmainwnd CMainFrame AfxGet