Win32 Windows编程 九

资源的使用

1 资源文件

图标 光标 字符串 菜单  加速键 对话框资源位图等等

资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息

资源编译器 - RC.exe

2 图标资源 ICON

2.1 常用的几种大小: 16x16 ,32x32, 48x48

2.2 使用

HICON LoadIcon(
  HINSTANCE hInstance, // handle to application instance
  LPCTSTR lpIconName   // name string or resource identifier
);

2.3 系统提供的图标

hInstance 为空, 老婆IconName为定义的系统图标

2.4 自己绘制图标

hInstance 为图标所在的应用程序实例句柄 

2.5 一个图标文件中可以包含多种大小 颜色不同的图标,系统使用图标时,通过大小来匹配

     3 光标资源

3.1 光标资源

热点 Hotspot - 16x16 可以产生鼠标点击的位置

3.2 使用

HCURSOR LoadCursor(

HINSTANCE hInstance,

LPCTSTR lpCursorName )

3.3 系统光标

hInstance 为空 lpCursorName指定为系统光标ID即可

3.4 自绘制的光标

hInstance 不为空

3.5 WM_SETCURSOR

当鼠标在窗口内就会产生 可以在程序执行过程中修改鼠标的样式

WParam - 窗口句柄

LOWORD(lParam)    所在位置的标识

HIWORD(lParam)  鼠标的消息ID

4 字符串资源

4.1 包含字符串的资源

4.2 使用

int LoadString(
  HINSTANCE hInstance,  // 存放字符串资源的程序句柄
  UINT uID,             // 资源ID
  LPTSTR lpBuffer,      // 存放字符串的BUFFER
  int nBufferMax        // Buffer的大小
);

5 菜单资源

5.1 添加菜单资源

5.2 加载菜单资源

	HMENU LoadMenu(
 	 HINSTANCE hInstance,  // handle to module
 	 LPCTSTR lpMenuName    // menu name or resource identifier
	);
5.3 命令处理

使用添加的菜单ID的宏, 在WM_COMMAND消息中,处理菜单命令

6  加速键资源

6.1 加速键的作用

可以使用加速键执行命令,例如Ctrl+S存盘

6.2 加速键资源的添加

6.3 加速键的使用

6.3.1 加载

HACCEL LoadAccelerators(
  HINSTANCE hInstance,  // handle to module
  LPCTSTR lpTableName   // accelerator table name
);

6.3.2 增加消息处理

int TranslateAccelerator(
  HWND hWnd,         // 窗口句柄
  HACCEL hAccTable,  //  加速键表的句柄
  LPMSG lpMsg        // MSG结构的地址
);

6.4 关于加速键的消息

TraslateAccelerator将WM_KEYDOWN或者WM_SYSKEYDOWN 翻译成 WM_COMMAND或者WM_SYSCOMMAND消息。

当收到KEYDOWN或者SYSKEYDOWN的消息时会根据加速键表中按键和命令ID 的对应关系 找到相应的命令ID,然后调用

窗口的处理函数,执行WM_COMMAND消息或者SYSCOMMAND消息。

当找到对应的命令ID并执行后,TraslateAccelerator返回非零,那么就不在执行后续的处理,消息循环等候下一条消息。

否则继续让消息循环中的TraslateMessage和DispatchMessage处理




  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值