MFC中注册WNDCLASS样式并建立窗口
来源:互联网 发布:绿灯侠 知乎 编辑:程序博客网 时间:2024/06/17 21:18
如果程序主窗口不是由CframeWnd派生而来,而是由CWnd派生而来,那么在创建窗口的时候,必须注册自己的WNDCLASS,因为CWnd::CreateEX不接受NULL WNDCLASS名称。
这种情况下,注册WNDCLASS样式半建立窗口有两种方式。
方式一,定义一个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样式并建立窗口
- MFC中注册WNDCLASS样式并建立窗口
- MFC中注册WNDCLASS样式并建立窗口
- MFC中注册WNDCLASS样式并建立窗口(使用WNDCLASS创建无父窗口的窗口)
- Win32窗口类样式WNDCLASS.style
- MFC中更改窗口样式
- MFC中基本控件的WNDCLASS
- MFC中基本控件的WNDCLASS
- MFC中更改窗口的样式
- MFC注册窗口类
- MFC注册窗口
- MFC中创建并弹出子窗口
- MFC改变窗口样式
- MFC 修改窗口样式
- 建立MFC窗口
- 在MFC中注册自己的窗口类名
- MFC学习第一节:建立窗口
- (一)建立,注册窗口类 (转)
- 论文-基于椭球你和的三轴磁传感器误差补偿方法---第一个矩阵的解析
- Java9新特性调研
- linux 学习系列-Linux yum 命令
- Android开发打开指定QQ,申请加入QQ群,打开微信
- ThinkPHP之add、save无法添加、修改的解决方案
- MFC中注册WNDCLASS样式并建立窗口
- Android Studio 时间选择器创建
- MySQL的Join使用
- redis Cli删除redis tokenwhen it is locked
- 关于页面性能优化的一些建议
- 最近都在说移民火星_这些太空黑科技你了解吗?
- 深度学习-深度信念(置信)网络(DBN)-从原理到实现(DeepLearnToolBox)
- 关于javaweb连接数据库无任何报错信息的问题
- 第十三章 红黑树