资源的使用
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处理