第6章+章框架窗口、文档和视图

第6章+章框架窗口、文档和视图

ID:46327621

大小:1.36 MB

页数:126页

时间:2019-11-22

第6章+章框架窗口、文档和视图_第1页
第6章+章框架窗口、文档和视图_第2页
第6章+章框架窗口、文档和视图_第3页
第6章+章框架窗口、文档和视图_第4页
第6章+章框架窗口、文档和视图_第5页
资源描述:

《第6章+章框架窗口、文档和视图》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第6章框架窗口、文档和视图尽管窗口、文档和视图是MFC的基础,但可能也是最不易理解的部分,因为其概念性比传统编程所需的WindowsAPI函数更强一些6.1框架窗口框架窗口可分为两类:一类是应用程序主窗口,另一类是文档窗口。6.1.1主窗口和文档窗口主框架窗口是应用程序直接放置在桌面(DeskTop)上的那个窗口,每个应用程序只能有一个主框架窗口,主框架窗口的标题栏上往往显示应用程序的名称。6.1.1主窗口和文档窗口文档窗口对于单文档应用程序来说,它和主框架窗口是一致的,即主框架窗口就是文档窗口;

2、而对于多文档应用程序,文档窗口是主框架窗口的子窗口,如图6.1所示。文档窗口主框架窗口6.1.2窗口风格的设置窗口风格既可以通过MFCAppWizard来设置,也可以在主窗口或文档窗口类的PreCreateWindow函数中修改CREATESTRUCT结构,或是可以调用CWnd类的成员函数ModifyStyle和ModifyStyleEx来更改。1.窗口风格窗口风格通常有一般(以WS_为前缀)和扩展(以WS_EX_为前缀)两种形式。这两种形式的窗口风格可在函数CWnd::Create或CWnd::

3、CreateEx参数中指定,其中CreateEx函数可同时支持以上两种风格,而CWnd::Create只能指定窗口的一般风格。需要说明的是,对于控件和对话框这样的窗口来说,它们的窗口风格可直接通过其属性对话框来设置。常见的一般窗口风格如表6.1所示。1.窗口风格表6.1窗口的一般风格6.1.2窗口风格的设置2.用MFCAppWizard设置MFCAppWizard有一个[高级]按扭(在创建单文档或多文档应用程序过程的第四步中),允许用户指定有关SDI和MDI框架窗口的属性,图6.2表示了Advan

4、cedOptions对话框的WindowStyles页面,其中的选项含义见表6.2。但在该对话框中,用户只能设定少数几种窗口风格。图6.2高级选项对话框表6.2高级选项对话框窗口风格的各项含义6.1.2窗口风格的设置3.修改CREATESTRUCT结构当窗口创建之前,系统自动调用PreCreateWindow虚函数。在用MFCAppWizard创建文档应用程序结构时,MFC已为主窗口或文档窗口类自动重载了该虚函数。用户可以在此函数中通过修改CREATESTRUCT结构来设置窗口的绝大多数风格。例如

5、,在单文档应用程序中,框架窗口默认的风格是WS_OVERLAPPEDWINDOW和FWS_ADDTOTITLE的组合,更改其风格可如下列的代码:BOOLCMainFrame::PreCreateWindow(CREATESTRUCT&cs){//新窗口不带有[最大化]按钮cs.style&=~WS_MAXIMIZEBOX;//将窗口的大小设为1/3屏幕并居中cs.cy=::GetSystemMetrics(SM_CYSCREEN)/3;cs.cx=::GetSystemMetrics(SM_CXS

6、CREEN)/3;cs.y=((cs.cy*3)-cs.cy)/2;cs.x=((cs.cx*3)-cs.cx)/2;returnCFrameWnd::PreCreateWindow(cs);}代码中,前面有“::”作用域符号的函数是指全局函数,一般都是一些API函数。“cs.style&=~WS_MAXIMIZEBOX;”中的“~”是按位取“反”运算符,它将WS_MAXIMIZEBOX的值按位取反后,再和cs.style值按位“与”,其结果是将cs.style值中的WS_MAXIMIZEBOX标

7、志位清零。6.1.2窗口风格的设置4.使用ModifyStyle和ModifyStyleExCWnd类中的成员函数ModifyStyle和ModifyStyleEx也可用来更改窗口的风格,其中ModifyStyleEx还可更改窗口的扩展风格。这两个函数具有相同的参数,其含义如下。BOOLModifyXXXX(DWORDdwRemove,DWORDdwAdd,UINTnFlags=0);其中,参数dwRemove用来指定需要删除的风格,dwAdd用来指定需要增加的风格,nFlags表示SetWind

8、owPos的标志,0(默认)表示更改风格的同时不调用SetWindowPos函数。由于框架窗口在创建时不能直接设定其扩展风格,因此只能通过调用ModifyStyle函数来进行。例如用MFCClassWizard为一个多文档应用程序Ex_MDI的子文档窗口类CChildFrame添加OnCreateClient消息处理,并增加下列代码:BOOLCChildFrame::OnCreateClient(LPCREATESTRUCTlpcs,CCreateContext*pContext)

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

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

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