欢迎来到天天文库
浏览记录
ID:9786719
大小:32.50 KB
页数:10页
时间:2018-05-09
《在单文档程序中动态切换多个窗体-界面类编程-vc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、在单文档程序中动态切换多个窗体-界面类编程-VC摘要:本文通过一个程序实例描述了在VC++6.0下如何在单文档程序中通过菜单动态控制多个窗体的切换。 一、引言 我们在编制程序中根据需求的不同会在程序风格上选择多文档、单文档或是对话框模式,对于单文档模式可能是我们使用比较多的,但有时我们想采用单文档的形式显示多个不同的窗体,如作为数据库前台应用程序就会遇到此类问题,数据库由大量的表单组成,而同常一个窗体内只用来显示一个表单,所以要显示其他的表单时就要用到切换窗体的技术了,下面就通过一个程序说明该技术的实现方法。 二、实现技术 新建一个基于CFormVie
2、w的单文档应用程序,再添加一个窗体和与之对应的基于CFormView的新视类,然后通过在主框架类里添加控制代码和菜单控制实现这两个窗体的动态切换,下面就是具体的实现过程: (一)用"MFCAppWizard(exe)"建立一个新项目"SwitchForm",并在第二步的创建类型上选择为"Singledocumnet"单文档模式,第三、四、五、六步均取确省状态,最后一步选择"CFormView"作为视类的基类。点按"完成"按钮,生成了初始工程"SwitchForm"。 (二)点选菜单"Insert"、"Resource…",在弹出的"InsertResour
3、ce"对话框中"Dialog"树里的"IDD_FORMVIEW",点击"New"按钮,生成了一个新的窗体,将其ID号改为"IDD_NEXTFORM"。在原有的窗体上加一个静态框"这是第一个窗体";在新建的窗体上也添加一个静态框"这是第二个窗体"。 (三)在菜单资源的"IDR_MAINFRAME"上添加一级菜单"窗体切换",及其二级菜单"第一个窗体"、"第二个窗体",其标识号分别为"ID_FIRSTFORM"和"ID_SECONDFORM"。修该"第一个窗体"的属性为"Checked",表明程序初始时显示的是第一个窗体。 (四)在"ClassView"属性页
4、里的"SwitchFormclasses"上右键,在弹出菜单上选择"NewClass…",弹出"NewClass"对话框,选择"DialogID:"为我们刚添加的新窗体"IDD_NEXTFORM",选择"Baseclass:"为"CFormView",类名取为"CNextFormView",这样就把第二个窗体对应的视图类添加到了工程。(五)在框架类里添加函数SwitchToForm():voidCMainFrame::SwitchToForm(intnForm){file://获取原来的活动窗体的视图句柄CView*pOldActiveView=GetActi
5、veView();file://获取由"nForm"标识的窗体所对应的视图句柄CView*pNewActiveView=(CView*)GetDlgItem(nForm);file://若视图句柄为空,则创建一新的。if(pNewActiveView==NULL){if(nForm==IDD_SWITCHFORM_FORM)pNewActiveView=(CView*)newCSwitchFormView;if(nForm==IDD_NEXTFORM)pNewActiveView=(CView*)newCNextFormView;CCreateContextc
6、ontext;context.m_pCurrentDoc=pOldActiveView->GetDocument();pNewActiveView->Create(NULL,NULL,0L,CFrameWnd::rectDefault,this,nForm,&context);pNewActiveView->OnInitialUpdate();}file://选择pNewActiveView为活动窗体SetActiveView(pNewActiveView);file://显示活动窗体,隐藏非活动窗体pNewActiveView->ShowWindow(SW_
7、SHOW);pOldActiveView->ShowWindow(SW_HIDE);intID;if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CSwitchFormView))ID=IDD_SWITCHFORM_FORM;if(pOldActiveView->GetRuntimeClass()==RUNTIME_CLASS(CNextFormView))ID=IDD_NEXTFORM;file://设置窗体的ID号pOldActiveView->SetDlgCtrlID(ID);pNewActiveVi
8、ew->SetDlgCtrlID(AF
此文档下载收益归作者所有