(本章节中例子都是用 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)

View Code

//获得窗口大小
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)相关推荐

  1. 框架、文档、视图类之间的调用关系

    在多文档MFC应用程序执行过程中,创建了多于一个的文档类.视图类.子框架类对象和一个主框架类.应用类对象.这些对象之间是通过一定的方式联系在一起的,在应用程序设计中,时常需要通过这些对象之间的关系来实 ...

  2. JS-DOM-节点-获取元素-文档结构-元素的属性

    JS-DOM-节点-获取元素-文档结构-元素的属性 1 回顾 1.1 内置构造函数 Function Function 的实例的属性和方法:lengthcall()applay()bind() 1.2 ...

  3. 织梦DEDECMS首页调用单页文档内容并带过滤HTML的方法

    织梦dedecms网站首页调用单页文档内容并带过滤html的方法: 1.调用的语句 {dede:sql sql="SELECT body FROM `dede_sgpage` where a ...

  4. 最新网页素材文档图库下载类网站源码+织梦CMS内核

    正文: 网页素材文档图库下载类网站源码+织梦CMS内核,本程序采用一库两站简洁方便管理后台,一个后台管理两网站,电脑版+手机版 程序特点: 1.网站手工DIV+css,代码精简,首页排版整洁大方.布局 ...

  5. wps批量将文档括号内的字符串修改颜色

    wps批量将文档括号内的字符串修改颜色 文档内容如下,我们想把括号内的字符串全部修改为红色. 1)使用快捷键Ctrl+h,打开替换会话框. 输入查找的内容:((*)) 输出替换的内容:(\1) 然后点 ...

  6. cview类 public_在MFC单文档的View类中,如何获得指向状态栏的指针

    匿名用户 1级 2016-01-18 回答 众所周知,View窗口覆盖在主窗口MainFrame之上.在CView类的WN_MOUSEMOVE消息响应函数中操作状态栏,可以显示鼠标的位置坐标.这需要在 ...

  7. MFC文档、视图类的基本功能和二者基本关系

    MFC中,文档类的基本功能是负责管理数据:视图类的基本功能是显示数据: 二者的基本关系是,视图类有一个文档指针m_pDocument : 使用VC6新建一个单文档工程:生成的类中,xxxDoc这个是文 ...

  8. Xml文档添加节点和属性

    在实际的应用开发中需要我们对xml进行添加节点和属性,动态的去完成,在这之前,先看看XmlNode和XmlElement之间的关系 1.XmlElement继承XmlLinkedNode又继承XmlN ...

  9. layuiAdmin 框架单页面文档

    快速入门 部署 解压文件后,将 layuiAdmin 完整放置在任意目录 通过本地 web 服务器去访问 ./start/index.html 即可运行 Demo 由于 layuiAdmin 可采用前 ...

  10. XML第二讲:格式正规的XML文档、XML文档的元素、属性、实体深度详解

    1. 对比XML与HTML下图所示: 从图中可以很好的判断出XML的优越性,XML更能显示出清晰的数据结构信息 2. XML与 HTML的区别 1) 元标记:表示从标记上面就可以描述内容本身是什么,比 ...

最新文章

  1. 从来富贵险中求 为何低学历的人能成为亿万富翁
  2. 线性代数学习资料汇编
  3. Zuul鉴权和添加用户服务
  4. python11-28笔记(1.6-1.7)
  5. 5分钟看懂微服务架构下的Consul 特性及搭建
  6. linux mint视频,Linux Mint 20.1 beta 发布,新增免费视频播放器
  7. 作者:刘岩(1982-),男,泰康保险集团股份有限公司数据信息中心高级工程师、高级主管,中国计算机学会会员...
  8. pytorch 中 torch.optim.Adam
  9. 高一计算机基础知识ppt课件,高一信息技术课件
  10. 【附源码】计算机毕业设计JAVA家庭记账系统
  11. 计算机无法访问inter,电脑网络提示无Internet访问权限解决办法
  12. 普通人下场全球贸易,新一轮结构性机会浮出水面
  13. [ZT]第14节:粮食战争(14)--我的评论:中国农业的必经之路?
  14. OpenStack实践(十一):Instance Live Migrate and Evacuate
  15. ACWing n-皇后问题
  16. 微软软件实现技术授课系列内容之五:软件测试基础
  17. rom是计算机硬件吗,rom,教你手机中ram和rom的区别
  18. hdu5594 ZYB's Prime
  19. 互斥锁Mutex解锁两次
  20. 论文阅读笔记:YOLO9000: Better,Faster,Stronger

热门文章

  1. java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~...
  2. Scrapy输出CSV指定列顺序
  3. 【HDU-5246】超级赛亚ACMer(贪心)
  4. ASP.NET Web API 2基于令牌的身份验证
  5. linux密码特殊字符识别
  6. 【转载】shell中EOF的用法
  7. Centos 7.2基础安装和配置(含分区方案建议)
  8. VueJS 组件参数名命名方式和前台显示
  9. select选中值传递到后台action中
  10. 常见的设计模式 ----- 桥接模式