在单文档程序中动态切换多个窗体-界面类编程-vc

在单文档程序中动态切换多个窗体-界面类编程-vc

ID:9786719

大小:32.50 KB

页数:10页

时间:2018-05-09

在单文档程序中动态切换多个窗体-界面类编程-vc_第1页
在单文档程序中动态切换多个窗体-界面类编程-vc_第2页
在单文档程序中动态切换多个窗体-界面类编程-vc_第3页
在单文档程序中动态切换多个窗体-界面类编程-vc_第4页
在单文档程序中动态切换多个窗体-界面类编程-vc_第5页
资源描述:

《在单文档程序中动态切换多个窗体-界面类编程-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

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。