我是靠谱客的博主 虚心早晨,最近开发中收集的这篇文章主要介绍WIN32 资源,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

首先解释一下句柄:

        win32中的句柄在数值上表示一个32位的数,用来标识应用程序/进程中不同对象以及同类对象中的不同实例,而所谓实例就是指被实例化的对象,实例化的过程就是通过类创建对象的过程。实例化对象的目地是为对象开辟内存空间。所以句柄是指向一片内存空间的。

        句柄与普通指针的区别在于,指针包含的是引用对象的内存地址,而句柄则是由系统所管理的引用标识,该标识可以被系统重新定位到一个内存地址上。这种间接访问对象的模式增强了系统对引用对象的控制。也就是说句柄是指向指针的指针。

        资源加载过程简单来说,rc资源通过编译成为二进制res资源,通过链接加载到程序中,程序运行过程中通过句柄以及资源ID找到资源的内存空间,进而将资源加载展示。

1、菜单资源

1、添加资源文件

2、加载资源文件(三种方式)

        1、注册窗口类时加载菜单资源

        2、创建窗口时传参(菜单资源句柄)设置

        3、在主窗口产生WM_CREATE消息后,通过SetMenu函数设置

获取menu句柄函数:

HMENU LoadMenuA(
[in, optional] HINSTANCE hInstance,
[in]
LPCSTR
lpMenuName
);

2、图标资源

1、添加资源

2、加载资源

        注册窗口类时加载图标资源

获取图标句柄函数:

HICON LoadIconA(
[in, optional] HINSTANCE hInstance,
[in]
LPCSTR
lpIconName
);

3、光标资源

1、添加资源

2、加载资源

        1、注册窗口类时加载光标资源  (仅对客户区生效)

        2、通过SetCursor函数设置 (对客户区、标题栏区域均生效)

获取光标句柄函数:

HCURSOR LoadCursorA(
[in, optional] HINSTANCE hInstance,
[in]
LPCSTR
lpCursorName
);

SetCursor设置时机:

鼠标移动会产生WM_SETCURSOR消息:

        WPARAM   当前使用光标句柄

        LPARAM  

                LOWDRD   当前区域 (HTCLIENT / HTCAPTION)

                HIWORD    当前鼠标消息ID(左/右 up/down)

4、字符串资源

int LoadStringA(
[in, optional] HINSTANCE hInstance,
[in]
UINT
uID,
[out]
LPSTR
lpBuffer,
[in]
int
cchBufferMax
);

5、加速键资源

1、添加加速表资源,增加命令ID对应的加速键

2、使用

        1、加载加速键表

HACCEL LoadAccelerators(
HINSTANCE hlnstance,
//模块的一个实例的句柄
LPCTSTR lpTableName //指向即将调入的加速键表的名字字符串。
);
//返回 加速键表 句柄

        2、翻译加速键表       

int
WINAPI
TranslateAcceleratorW(
_In_ HWND hWnd,//处理消息的窗口句柄
_In_ HACCEL hAccTable,//快捷键表句柄。快捷键表由前面LoadAccelerators函数调用装入
_In_ LPMSG lpMsg//消息结构指针
); //如果时加速键,返回非0

在WM_COMMAND中相应的消息参数:

WPARAM :HIWORD == 1 为加速键消息  0表示菜单消息

                     LOWARD 为命令ID

LPARAM : 为0  

最后

以上就是虚心早晨为你收集整理的WIN32 资源的全部内容,希望文章能够帮你解决WIN32 资源所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部