4.01 图标资源与光标资源

图标资源

● 添加资源

注意图标的大小,一个图标文件中,可以有多个不同大小的图标。

● 加载

  1. HICON LoadIcon(
  2. HINSTANCE hInstance, //handle to application
  3. instance LPCTSTR IpIconName //name string or resource identifier
  4. ); // 成功将返回HICON句柄

● 设置

注册窗口类时设置

  1. #include "resource.h"
  2. wc.hIcon = LoadIcon(hIns,(char*)IDI_ICON1); // Icon

光标资源

● 添加光标资源

光标的大小默认是32X32像素,每个光标有HotSpot,是当前鼠标的热点(在光标资源编辑界面, 有个设置热点工具)

● 加载资源

  1. HCURSOR LoadCursor(
  2. HINSTANCE hInstance, //handle to application instance
  3. LPCTSTR IpCursorName //name or resource identifier
  4. );// hInstance 可以为NU儿L,获取系统默认的Cursor

● 设置资源

在注册窗口时,使用SetCurson设置光标

  1. wc.hCursor = LoadCursor(hIns,(char*)IDC_CURSOR1); // 默认鼠标样式
  1. HCURSOR SetCursor(
  2. HCURSOR hCursor //handle to cursor
  3. );

● VM_SETCURSOR消息参数

产生时间: 光标移动

  • WPARAM 当前使用的光标句柄
  • lParam
    • LOWORD 当前区域的代码(Hit-Test code) HTCLIENT HTCAPTION…
    • HIWORD 当前鼠标消息ID(有没有点左键 右键之类)
  1. case WM_SETCURSOR:
  2. {
  3. HCURSOR hCUr = LoadCursor(GetModuleHandle(NULL),(char*)IDC_CURSOR2);
  4. if (LOWORD(lParam) == HTCLIENT) {
  5. // 客户端区域
  6. SetCursor(hCUr);
  7. }
  8. else if (LOWORD(lParam) == HTCAPTION) {
  9. // 标题区域
  10. SetCursor(hCUr);
  11. }
  12. return 0; // 记得返回, 不然还会默认处理
  13. }
  14. break;