从头开始如何利用MFC分割窗口.doc_第1页
从头开始如何利用MFC分割窗口.doc_第2页
从头开始如何利用MFC分割窗口.doc_第3页
从头开始如何利用MFC分割窗口.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

(转)从头开始如何利用MFC分割窗口 程序所采用平台为Microsoft Visual C+6.0,将要得到如下效果在网络上找到一些窗口分割的程序和方法说明,但是有说明的没有非常明确的编写顺序,有源码的又不是很容易理解,对于新手来讲,都有不小的难度,自己琢磨了一天,终于做了一个合乎自己预期要求的窗口分割程序,以备后续使用。现在把具体的实现步骤从头到尾表述出来,希望能对其他人有所帮助。 首先建立MFC AppWizard(exe),取名字为SplitterWnd,下一步,选择单文档“Single document”,其他默认,点击“完成”。 点击ResourceView,在Dialog下插入两个个Dialog窗口用于稍后的分割后的窗口,ID号分别改为“IDD_FORMVIEW1”和“IDD_FORMVIEW2”。记得及时保存。 单击ClassView标签,添加2个类,当然也可以从ClassWizard中添加,名字叫FormView1,类选择CFormView,Dialog ID选择IDD_FORMVIEW1,另一个类叫FormView2,ID选择IDD_FORMVIEW2。 在CMainFrame中添加两个成员变量,类型都为CSplitterWnd,变量名分别为m_splitter和m_splitter1,然后添加一个虚函数OnCreateClient,点击编辑代码,将如下代码更改 BOOLCMainFrame:OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)/TODO:Addyourspecializedcodehereand/orcallthebaseclassreturnCFrameWnd:OnCreateClient(lpcs,pContext);改为BOOLCMainFrame:OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)/创建一个静态分栏窗口,分为一行二列if(m_splitter.CreateStatic(this,1,2)=NULL)returnFALSE;/将CCSplitterWndView连接到0行0列窗格上m_splitter.CreateView(0,0,RUNTIME_CLASS(CSplitterWndView),CSize(600,600),pContext);if(m_splitter1.CreateStatic(&m_splitter,2,1,WS_CHILD|WS_VISIBLE,m_splitter.IdFromRowCol(0,1)=NULL)returnFALSE;/将第0行1列再分开2行1列/将FormView1类连接到第二个分栏对象的0行0列m_splitter1.CreateView(0,0,RUNTIME_CLASS(FormView1),CSize(200,400),pContext);/将FormView2类连接到第二个分栏对象的1行0列m_splitter1.CreateView(1,0,RUNTIME_CLASS(FormView2),CSize(200,200),pContext);returnTRUE;添加头文件:#includeSplitterWndDoc.h#includeSplitterWndView.h#includeFormView1.h#includeFormView2.h好了,现在编译运行,可以得到分栏的结果了。但是可以看到,得到的窗口位置随机,窗口大小可以随意改变,所以我们可以再增加语句进行设置,仍然在框架类中添加voidCMainFrame:OnGetMinMaxInfo(MINMAXINFOFAR*lpMMI)/TODO:Addyourmessagehandlercodehereand/orcalldefaultlpMMI-ptMaxTrackSize.x=820;lpMMI-ptMaxTrackSize.y=720;lpMMI-ptMinTrackSize.x=820;lpMMI-ptMinTrackSize.y=720;CFrameWnd:OnGetMinMaxInfo(lpMMI);在CMainFrame:OnCreate中添加如下语句,使得窗口居中CenterWindow(NULL);由于固定了窗口的大小,所以需要屏蔽掉最大化按钮,使用户不会觉得如此不正规,在CMainFrame:PreCreateWindow中添加cs.style&=WS_MAXIMIZEBOX;/屏蔽最大化按钮这样,一个初级的窗口分割就做完了,庆祝一下吧!注:让CFormView窗口加上去.要先设置它的属性.否则会产生错误.设置窗口属性. Styles标签下的Style:Child 和Border:None其他参考资料分割参考资料/Lee/archive/2008/09/18/62232.html/blog/cns!CE6F552D3BD9A192!137.entry/zhangyin/archive/2007/01/17/622164.html/document/viewdoc/?id=192/debug1984/archive/2008/12/19/3556420.aspx/vc/2007-10-03/2b5e040d0f7a2e0e4221767984437b4a.html/如果在Frame的菜单调用得到子类的指针/ CMainFrame* pFrame = (CMainFrame *)AfxGetMainWnd();/ CDllSdkView5View* pDllSdkView = (CDllSdkView5View*)pFrame-m_splitter.GetPane(0,1);记忆de碎片关注 - 0粉丝 - 1关

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论