首先,我们必须要注册这一个类,否则在vc(c写的代码)是不能输出的,如果在mfc建立的项目中可以不用定义,因为frame文件里面已经有了相应的定义。同时,我们需要注意的是如果一个基类如果注册了相应的窗口样式,这时,子类可以不用定义(具体的原因不明,建议查看源码)。

如果没有相应的注册,这时我们需要有一下两种思路解决问题:

方式一,定义一个WNDCLASS结构实例,并对每个字段进行初始化,然后调用::RegisterClass或者MFC的全局函数AfxRegisterClass注册WNDCLASS。

如:

WNDCLASS wc;

wc.style=0;

wc.lpfnWndProc=(WNDPROC)WndProc;

wc.cbClsExtra=0;

wc.cbWndExtra=0;

wc.hInstance=hInstance;

wc.hIcon=LoadIcon(NULL,IDI_WINLOGO);

wc.hCursor=LoadCursor(NULL,IDC_ARROW);

wc.hbrBackground=(HBRUSH)(COLOR_WINDOW+1);

wc.lpszMenuName=NULL;

wc.lpszClassName="MyWndClass";

RegisterClass(&wc);

这种方式比较麻烦。

方式二:用MFC的全局函数AfxRegisterWndClass注册WNDCLASS,不需要定义所有字段,只需要关注其4个参数值。函数原型:LPCTSTR AfxRegisterWndClass(UINT nClassStyle,HCURSOR hCursor=0,HBRUSH hbrBackground=0,HICON hIcon=0);

第一个参数指定类样式,定义窗口的某种操作特性;第二个参数指定窗口识别“类光标”;第三个参数指定窗口默认背景颜色,可以传递一个画刷句柄,也可以指定一个预定义的Windows系统颜色并加1,第四个参数指定windows用来在桌面上、任务栏和其它地方代表应用程序的图标句柄,可以自定义图标然后加载,也可以加载系统图标。

该函数返回一个包含WNDCLASS名称的非空结尾字符串的指针,作用CreateEX函数的参数,用以创建窗口。

如:

CString strWndClass=AfxRegisterWndClass(CS_DBLCLKS, AfxGetApp()->LoadStandardCursor(IDC_ARROW), (HBRUSH)(COLOR_3DFACE+1), AfxGetApp()->LoadStandardIcon(IDI_WINLOGO));

CreateEx(0,strWndClass,_T("my program"),
   WS_OVERLAPPED|WS_SYSMENU|WS_CAPTION|WS_MINIMIZEBOX,
   CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,
   NULL,NULL);

注:决定窗口能否缩放的部份,是创建窗口是为窗口指定样式的参数部份。

一般传递的参数是WS_OVERLAPPEDWINDOW,其定义如下:

#define WS_OVERLAPPEDWINDOW(WS_OVERLAPPED|WS_CAPTION|WS_SYSMENU|WS_THICKFRAME|WS_MINIMIZE|WS_MAXIMIZE);

其中WS_THICKFRAME样式增加了一个其边和角可以用鼠标抓取并拖动的可调整大小的边框,如果不定义这个样式,则所生成的窗口不能缩放,此时,一般情况下是把最大化按钮也撤消,即不定义WS_MAXIMIZE样式。

为什么mfc要注册WNDCLASS样式相关推荐

  1. 第三部分:MFC中控件的样式

    2019独角兽企业重金招聘Python工程师标准>>> 第三部分:MFC中控件的样式 控件是用来建立Windows应用程序用户界面的用户界面对象.你所见到的大部分Windows应用程 ...

  2. Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版

    Visual Studio 2017,C++MFC免注册调用大漠插件图文教程,详细版 前言 提示:这里可以添加本文要记录的大概内容: 有很多人都在问C++MFC怎么免注册调用?其实这些都有参考但是对于 ...

  3. 【MFC】Windows窗口样式

    00. 目录 文章目录 00. 目录 01. 框架窗口样式 02. 静态样式 03. 窗口样式 04. 扩展的窗口样式 05. 附录 01. 框架窗口样式 框架窗口样式适用于 CFrameWnd 类 ...

  4. vs2008环境下MFC对注册表的读写操作

    最近修改一个在vs2008环境下的MFC project,其中用到对注册表的读写操作,虽然在网上down了不少代码也查阅了不少文章,但运行始终存在不少问题,现把我运行成功的代码分享出来,希望对有需要的 ...

  5. WordPress自定义登录和注册页面样式并且添加验证码

    通过一番尝试和验证以及网络搜索,终于实现了WordPress默认的登录和注册界面的样式修改,下面把过程记录下来.笔者主要是通过在主题中添加WordPress的钩子来实现登录和注册界面的样式修改的.Wo ...

  6. VC++ MFC 遍历注册表,获取网卡名称。(设备管理器中的名称)

    HKEY hKey_tmp = NULL, hKey = NULL;TCHAR comNum[64],achKey[64];CString comname,sActive,temp;DWORD cbM ...

  7. 使用MFC修改注册表DWORD类型的值

    最近需要禁用一个UAC的权限的功能,在注册表里修改一个DWORD类型的值,找了好多方法都只有一部分管用,自己摸索着把功能实现了,还是很感谢网上的大神写的帖子的 在 .h 文件中定义好方法 在 .cpp ...

  8. C++ (MFC) 编写注册表,使开机自启动

    注册表的编写 设置一个按钮来调用注册表的函数: void CMFCtest1Dlg::OnBnClickedButton5() {// TODO: 在此添加控件通知处理程序代码Autostart(); ...

  9. 样式集(11)注册页面样式,全部代码附效果图

    效果图: 代码: <template><view class="page"><view class="top">新用户注册& ...

  10. MFC自动注册ODBC数据源

    首先,在stdafx.h内添加如下头文件: #include <odbcinst.h> //ODBC数据库API头文件 #include <afxdb.h> //包含数据库头文 ...

最新文章

  1. 全文翻译(全文合集):TVM: An Automated End-to-End Optimizing Compiler for Deep Learning
  2. windows xp开机音乐7秒_(老旧电脑的福音)win 10 ltsb2015开机只要7秒
  3. 程序员必备:Java 日期处理的十个坑
  4. Clojure的学习笔记(二)
  5. 修改、读取txt文档
  6. [SceneKit] 不会 Unity3D 的另一种选择
  7. 程序员打字练习_程序员必须来看的面试圣经!!
  8. 这是我见过最通俗易懂的单例模式讲解了!
  9. 路普达-区块链系统开发项目之DAPP
  10. Luogu3792 由乃与大母神原型和偶像崇拜
  11. 官宣:教父级讲师李明加入尚硅谷
  12. wsl arch linux图形,WSL2(Arch Linux)使用systemd
  13. 5k显示器和4k显示器有什么区别
  14. 计算机密码是空的怎么重置,电脑忘记开机登录密码怎么办? Windows 密码重置 - 合一学院...
  15. python位运算用途_Python 位运算符与位运算
  16. 炸金花游戏(5)--动态收敛预期胜率的一种思路
  17. 一次神坑:Qt的QFile新建文件
  18. 刚来10天,这个程序员要被逼跳楼了...
  19. folx pro 激活码使用安装下载教程(mac优秀下载工具)
  20. 数据恢复领军企业飞客与全球数据恢复“兵工厂”ACE建立战略合作

热门文章

  1. 6.5. Properties
  2. 老生长谈的$.extend()方法
  3. Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)(转)
  4. 分布式游戏网关--fooking
  5. 货币转换函数:CURRENCY_CONVERTING_FACTOR
  6. love2d游戏1--1942game(一)
  7. 2.1 机器中数据的存储
  8. Accurate, Large Minibatch SGD
  9. pandas.Series
  10. 2019全国知识图谱与语义计算大会