单/多文档的窗体类属性修改(VC_MFC)
(本章节中例子都是用 VS2005 编译调试的)
窗口与窗口类关系
与窗口类关系 MFC 类窗口类中封装了一个窗口句柄,窗口销毁时候,与之对应的MFC类窗口对象看其生命是否结束,但是MFC类窗口类对象销毁时候,与之对应的窗口一定会被销毁
修改程序外观
- 修改应用程序窗口图标,标题栏在框架类中实现
- 修改应用程序背景与光标(因为视觉类窗口始终覆盖在框架类上) 在视类中实现
设置窗口类属性
在窗体生成前且窗口类注册前
在CMainFrame的PreCreateWindow函数中进行:
- 第一种 修改函数中传递的CREATESTRUT结构的对象cs,修改cs中的对应属性,便可以达到修改窗体类的对应属性(CREATESTRUT结构类似于Win32编制中的WNDCLASS结构)
- 第二种 自身定义一个 WNDCLASS 结构成员变量,并注册此窗体结构变量,(用RegisterClass函数注册窗体类),后 cs.lpszClass = "窗体类名"
- 第三种 MFC提供了一个全局函数,用来设定窗口的类型,光标,背景和图标 AfxRegisterWndClass 函数,然后 cs.lpszClass = AfxRegisterWndClass();
代码示例(用VS2005调试):
首先先看看未被改变的时,工程生成的单文档示例的运行结果:
第一种:(使初始化程序无菜单栏)
在CMainFrame的PreCreateWindow函数中添加下添加:
cs.hMenu = NULL;
运行结果:
第二种:(使初始化程序无菜单栏)
在CMainFrame的PreCreateWindow函数中添加下添加:
WNDCLASS wndclass;WNDCLASS wndcls; wndcls.cbClsExtra=0; wndcls.cbWndExtra=0; wndcls.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH); wndcls.hCursor=LoadCursor(NULL,IDC_ARROW); wndcls.hIcon=AfxGetApp()->LoadIcon(IDR_MAINFRAME); wndcls.hInstance=AfxGetInstanceHandle(); wndcls.lpfnWndProc=::DefWindowProc; wndcls.lpszClassName=L"test"; wndcls.lpszMenuName=NULL; wndcls.style=CS_HREDRAW | CS_VREDRAW;RegisterClass(&wndcls);cs.lpszClass=L"test";
运行结果同上
第三种:(修改程序图标)
首先为工程添加一个图标资源(资源 ID 为 IDI_ICON1),资源视图如下:
然后在CMainFrame的PreCreateWindow函数中添加下添加:(AfxRegisterWndClass)
cs.lpszClass=AfxRegisterWndClass(CS_HREDRAW | CS_VREDRAW,0,0,LoadIcon(NULL,IDI_WARNING));
运行结果:
在窗体显示前且窗体类注册后
说明
在类中的 OnCreate 函数实现,用SetClassLong函数设置窗体类的属性
代码示例(用VS2005调试):
首先先看看未被改变的时,工程生成的单文档示例的运行结果:
接着需要修改窗口图标,先为工程添加一个图标资源(资源 ID 为 IDI_ICON1),资源视图如下:
然后在 CMainFrame 的 OnCreate 函数中添加下添加:(SetWindowLong)
SetClassLong(m_hWnd,GCL_HICON,(LONG)AfxGetApp()->LoadIcon(IDI_ICON1));
运行结果:
在窗体生成后
- 用 SetWindowLong 函数实现
- 用 GetWindowLong 函数获得当前窗体属性
- 在 MFC 中还提供 ModifyStyleEx 修改窗口的扩展属性(你可以在 OnCreate 函数中调用它去掉 WS_EX_TOOLWINDOW,然后便可以在任务栏中去掉显示的本窗体图标)
实现代码(用VS2010调试):
首先先看看未被改变的时,工程生成的单文档示例的运行结果:
接着需要修改窗口属性,为文档程序在主菜单栏上添加个 显示/隐藏系统栏 的菜单项,完成显示/隐藏系统栏的这个功能.菜单资源(菜单资源 ID 为 IDR_MAINFRAME,菜单项 ID 为 ID_CH)视图如下:
为菜单项 显示/隐藏系统栏 在框架类中添加事件响应函数(添加在框架类中,即 MainFrm 中),后在事件响应函数中添加相关操作,具体代码如下:(SetWindowLong)
//获得窗口大小 CRect rc; this->GetWindowRect(&rc); //判断窗体是否有系统栏 if(GetWindowLong(GetSafeHwnd(),GWL_STYLE) & WS_CAPTION) {//去掉标题栏SetWindowLong(this->GetSafeHwnd(),GWL_STYLE,GetWindowLong(GetSafeHwnd(),GWL_STYLE) & ~WS_CAPTION);//窗体高度减 30 个像素点,即为窗体减去标题栏的高度rc.top+=30;} else {//添加标题栏栏SetWindowLong(this->GetSafeHwnd(),GWL_STYLE,GetWindowLong(GetSafeHwnd(),GWL_STYLE) | WS_CAPTION);//窗体高度加 30 个像素点,即为窗体加上标题栏的高度rc.top-=30; } //移动窗体到新矩形区中 this->MoveWindow(&rc);
运行结果:
注意:
函数在窗口完全创建完成后第一个调用的函数并且在OnPaint前相应
单/多文档的窗体类属性修改(VC_MFC)相关推荐
- 框架、文档、视图类之间的调用关系
在多文档MFC应用程序执行过程中,创建了多于一个的文档类.视图类.子框架类对象和一个主框架类.应用类对象.这些对象之间是通过一定的方式联系在一起的,在应用程序设计中,时常需要通过这些对象之间的关系来实 ...
- JS-DOM-节点-获取元素-文档结构-元素的属性
JS-DOM-节点-获取元素-文档结构-元素的属性 1 回顾 1.1 内置构造函数 Function Function 的实例的属性和方法:lengthcall()applay()bind() 1.2 ...
- 织梦DEDECMS首页调用单页文档内容并带过滤HTML的方法
织梦dedecms网站首页调用单页文档内容并带过滤html的方法: 1.调用的语句 {dede:sql sql="SELECT body FROM `dede_sgpage` where a ...
- 最新网页素材文档图库下载类网站源码+织梦CMS内核
正文: 网页素材文档图库下载类网站源码+织梦CMS内核,本程序采用一库两站简洁方便管理后台,一个后台管理两网站,电脑版+手机版 程序特点: 1.网站手工DIV+css,代码精简,首页排版整洁大方.布局 ...
- wps批量将文档括号内的字符串修改颜色
wps批量将文档括号内的字符串修改颜色 文档内容如下,我们想把括号内的字符串全部修改为红色. 1)使用快捷键Ctrl+h,打开替换会话框. 输入查找的内容:((*)) 输出替换的内容:(\1) 然后点 ...
- cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针
匿名用户 1级 2016-01-18 回答 众所周知,View窗口覆盖在主窗口MainFrame之上.在CView类的WN_MOUSEMOVE消息响应函数中操作状态栏,可以显示鼠标的位置坐标.这需要在 ...
- MFC文档、视图类的基本功能和二者基本关系
MFC中,文档类的基本功能是负责管理数据:视图类的基本功能是显示数据: 二者的基本关系是,视图类有一个文档指针m_pDocument : 使用VC6新建一个单文档工程:生成的类中,xxxDoc这个是文 ...
- Xml文档添加节点和属性
在实际的应用开发中需要我们对xml进行添加节点和属性,动态的去完成,在这之前,先看看XmlNode和XmlElement之间的关系 1.XmlElement继承XmlLinkedNode又继承XmlN ...
- layuiAdmin 框架单页面文档
快速入门 部署 解压文件后,将 layuiAdmin 完整放置在任意目录 通过本地 web 服务器去访问 ./start/index.html 即可运行 Demo 由于 layuiAdmin 可采用前 ...
- XML第二讲:格式正规的XML文档、XML文档的元素、属性、实体深度详解
1. 对比XML与HTML下图所示: 从图中可以很好的判断出XML的优越性,XML更能显示出清晰的数据结构信息 2. XML与 HTML的区别 1) 元标记:表示从标记上面就可以描述内容本身是什么,比 ...
最新文章
- 从来富贵险中求 为何低学历的人能成为亿万富翁
- 线性代数学习资料汇编
- Zuul鉴权和添加用户服务
- python11-28笔记(1.6-1.7)
- 5分钟看懂微服务架构下的Consul 特性及搭建
- linux mint视频,Linux Mint 20.1 beta 发布,新增免费视频播放器
- 作者:刘岩(1982-),男,泰康保险集团股份有限公司数据信息中心高级工程师、高级主管,中国计算机学会会员...
- pytorch 中 torch.optim.Adam
- 高一计算机基础知识ppt课件,高一信息技术课件
- 【附源码】计算机毕业设计JAVA家庭记账系统
- 计算机无法访问inter,电脑网络提示无Internet访问权限解决办法
- 普通人下场全球贸易,新一轮结构性机会浮出水面
- [ZT]第14节:粮食战争(14)--我的评论:中国农业的必经之路?
- OpenStack实践(十一):Instance Live Migrate and Evacuate
- ACWing n-皇后问题
- 微软软件实现技术授课系列内容之五:软件测试基础
- rom是计算机硬件吗,rom,教你手机中ram和rom的区别
- hdu5594 ZYB's Prime
- 互斥锁Mutex解锁两次
- 论文阅读笔记:YOLO9000: Better,Faster,Stronger