VCwindowsMFC(窗口句柄资源鼠标样式)「vc获取窗口句柄」

1.LoadStringW()函数解析LoadStringW( _In_opt_ HINSTANCE hInstance, //实例句柄 _In_ UINT uID, //定义好的资源ID _Out_writes_to_(cchBufferMax, return + 1) LPWSTR lpBuffer,//资源指针 _In_ int cchBufferMax//资源大小 );这个函数用来加载字符串:一个应用窗口程序运行就是在一个实例中,如果运行了两个窗口的应用程序,就是两个实例
实例句柄就是指向实例的指针
已有的资源就已经在项目文件中了,项目文件会对资源提供ID号,我们加载的字符串就是这个资源
缓存区指针就是对加载的资源进行存储区域的指针
存放资源缓存区的大小就是对加载的资源进行存储区域的大小
整个过程:对项目文件的资源(这里是指字符串,通过ID号找到)加载到实例的缓存区(通过指针加载,且指定缓存区大小)
HINSTANCE 是“句柄型”数据类型
相当于装入到了内存的资源的ID
HINSTANCE对应的资源是instance.句柄实际上是一个 无符号长整数
2.窗口类结构体WNDCLASSEX分析typedef struct{ UINT cbSize; UINT style; WNDPROC lpfnWndProc; int cbClsExtra; int cbWndExtra; HINSTANCE hInstance; HICON hIcon; HCURSOR hCursor; HBRUSH hbrBackground; LPCTSTR lpszMenuName; LPCTSTR lpszClassName; HICON hIconSm;} WNDCLASSEX, PWNDCLASSEX;1. cbSize WNDCLASSEX 的大小
在调用GetClassInfoEx前必须要先设置它值
我们可以用sizeof(WNDCLASSEX)来获得准确的值
2. style 窗口类的样式,它的值可以是窗口样式值的任意组合
可以有以下的值:
1. cbSize WNDCLASSEX 的大小
在调用GetClassInfoEx前必须要先设置它值
我们可以用sizeof(WNDCLASSEX)来获得准确的值
2. style 窗口类的样式,它的值可以是窗口样式值的任意组合
CS_BYTEALIGNCLIENT窗口的客户区域以“字符边界”对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍CS_BYTEALIGNWINDOW窗口以“字符边界”对齐,当系统调整窗口的水平位置时,客户区域的左边坐标是8的整数倍CS_CLASSDC分配一个设备环境并被类中的所有窗体共享
它是可以适用于一个应用程序的若干线程创建的一个相同类的窗体
当多个线程试图同时使用相同的设备环境时,系统只允许一个线程成功地进行绘图操作CS_DBLCLKS当用户双击窗口时,将向窗口函数发送鼠标双击消息CS_GLOBALCLASS指定此窗体类是一个应用程序全局类
应用程序全局类是由一个在进程中对所有模块有效的exe或dll注册的窗体类CS_HREDRAW如果窗口的位置或宽度发生改变,将重绘窗口CS_NOCLOSE窗口中的“关闭”按钮不可见CS_OWNDC为同一个窗口类中的每个窗口创建一个唯一的设备上下文CS_PARENTDC设置子窗口中剪下的矩形区域到父窗口中,以使子窗口可以在父窗口上绘图
指定该风格可以提高应用程序的性能CS_SAVEBITS把被窗口遮掩的屏幕图像作为位图保存起来
当该窗口被移动时,Windows操作系统使用被保存的位图来重建屏幕图像CS_VREDRAW如果窗口的位置或高度改变,将重绘窗口3. lpfnWndProc 指向窗口处理函数(回调函数)
处理窗口事件,像单击鼠标会怎样,右击鼠标会怎样,都是由此函数控制的
4. cbClsExtra 为窗口类的额外信息做记录,初始化为0
5. cbWndExtra 记录窗口实例的额外信息,系统初始为0.如果程序使用WNDCLASSEX注册一个从资源文件里创建的对话框,则此参数必须设置为DLGWINDOWEXTRA6. hInstance:本模块的事例句柄
7. hIcon 窗口类的图标,为资源句柄,如果设置为NULL,系统将为窗口提供一个默认的图标
8. hCursor 窗口类的鼠标样式,为鼠标样式资源的句柄,如果设置为NULL,系统提供一个默认的鼠标样式
9. hbrBackground 窗口类的背景刷,为背景刷句柄,也可以为系统颜色值,如果颜色值已给出,则必须转化为以下的HBRUSH的值· COLOR_ACTIVEBORDER· COLOR_ACTIVECAPTION· COLOR_APPWORKSPACE· COLOR_BACKGROUND· COLOR_BTNFACE· COLOR_BTNSHADOW· COLOR_BTNTEXT· COLOR_CAPTIONTEXT· COLOR_GRAYTEXT· COLOR_HIGHLIGHT· COLOR_HIGHLIGHTTEXT· COLOR_INACTIVEBORDER· COLOR_INACTIVECAPTION· COLOR_MENU· COLOR_MENUTEXT· COLOR_SCROLLBAR· COLOR_WINDOW· COLOR_WINDOWFRAME· COLOR_WINDOWTEXT10. lpszMenuName 指向一个以NULL结尾的字符串,同目录资源的名字一样
如果使用整型id表示菜单,可以用MAKEINTRESOURCE定义一个宏
如果它的值为NULL,那么该类创建的窗口将都没有默认的菜单
11. lpszClassName 指向窗口类的指针,LPSTR类型
12. hIconSm 小图标的句柄,在任务栏显示的图标,可以和上面的那个一样
3.资源文件自己制作一个ICO图标文件:最后,编译代码,生成应用程序,运行后,如图所示:NICE[呲牙][偷笑][偷笑][呲牙]
VCwindowsMFC(窗口句柄资源鼠标样式)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息