- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.4窗口样式和状态 5.4.1 窗口样式 窗口样式通常有一般(以WS_为前缀)和扩展(以WS_EX_为前缀)两种形式。这两种形式的窗口样式可在函数CWnd::Create或CWnd::CreateEx参数中指定,其中CreateEx函数可同时支持以上两种样式,而CWnd::Create只能指定窗口的一般样式。需要说明的是,对于控件和对话框这样的窗口来说,它们的窗口样式可直接通过其属性对话框来设置。常见的一般窗口样式如表5.2所示。 需要说明的是,除了上述样式外,框架窗口还有以下3个自己的样式。它们都可以在PreCreateWindow重载函数中指定。 (1)FWS_ADDTOTITLE。该样式指定一个文档名添加到框架窗口标题中,例如“Ex_MDI – Ex_MDI1”中,Ex_MDI1是文档名。对于单文档应用程序来说,默认的文档名是“无标题”。 (2)FWS_PREFIXTITLE。该样式使得框架窗口标题中的文档名显示在应用程序名之前。例如,若未指定该样式时的窗口标题为“Ex_MDI – Ex_MDI1”,当指定该样式后就变成了“Ex_MDI1 – Ex_MDI”。 (3)FWS_SNAPTOBARS。该样式用来调整窗口的大小,使它刚好包含了框架窗口中的控制栏(如工具栏)。 5.4窗口样式和状态 5.4.1 窗口样式设置 1. 在MFC AppWizard中设置 MFC AppWizard 有一个[高级]按扭(在创建单文档或多文档应用程序过程的第四步中),允许用户指定有关SDI和MDI框架窗口的属性,图5.10表示了单文档应用程序创建时的“高级选项”(Advanced Options)对话框的“窗口样式”(Window Styles)页面,其中的选项含义见表5.3。但在该对话框中,用户只能设定少数几种窗口样式。 表5.3 高级选项对话框窗口样式的各项含义 选 项 含 义 使用可拆分窗口(Use split window) 选中时,将程序的文档窗口创建成“切分”(或称拆分)窗口 厚边框(Thick frame) 选中时,设置窗口样式WS_THICKFRAME 最小化边框(Minimize box) 选中时,设置窗口样式WS_MINIMIZEBOX,标题右侧含有最小化按钮 最大化边框(Maximize box) 选中时,设置窗口样式WS_MAXIMIZEBOX,标题右侧含有最大化按钮 系统菜单(System menu) 选中时,设置窗口样式WS_SYSMENU,标题左侧有系统菜单 最小化(Minimized) 选中时,设置窗口样式WS_MINIMIZE 最大化(Maximized) 选中时,设置窗口样式WS_MAXIMIZE 5.4窗口样式和状态 修改CREATESTRUCT结构 当窗口创建之前,系统自动调用PreCreateWindow虚函数。在用MFC AppWizard创建文档应用程序结构时,MFC已为主窗口或文档窗口类自动重载了该虚函数。用户可以在此函数中通过修改CREATESTRUCT结构来设置窗口的绝大多数样式。 例如,在单文档应用程序中,框架窗口默认的样式是WS_OVERLAPPEDWINDOW和FWS_ADDTOTITLE的组合,更改其样式可如下列的代码: 图5.10 高级选项对话框 BOOL CMainFrame::PreCreateWindow(CREATESTRUCT cs) { // 新窗口不带有[最大化]按钮 cs.style = ~WS_MAXIMIZEBOX; // 将窗口的大小设为1/3屏幕并居中 cs.cy = ::GetSystemMetrics(SM_CYSCREEN) / 3; cs.cx = ::GetSystemMetrics(SM_CXSCREEN) / 3; cs.y = ((cs.cy * 3) - cs.cy) / 2; cs.x = ((cs.cx * 3) - cs.cx) / 2; return CFrameWnd::PreCreateWindow(cs); } 5.4窗口样式和状态 代码中,前面有“::”作用域符号的函数是指全局函数,一般都是一些API函数。“cs.style = ~WS_MAXIMIZEBOX;”中的“~”是按位取“反”运算符,它将WS_MAXIMIZEBOX的值按位取反后,再和cs.style值按位“与
文档评论(0)