zoukankan      html  css  js  c++  java
  • 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处理




  • 相关阅读:
    python BeautifulSoup库的基本使用
    python操作RabbitMQ
    MySQL主从复制
    python字典与集合操作
    常见术语
    Mac下如何使用homebrew
    springboot整合freemarker
    Servlet与JSP概念理解
    slf4j-api、slf4j-log4j12以及log4j之间什么关系?
    使用nodeJs安装Vue-cli并用它快速构建Vue项目
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5065495.html
Copyright © 2011-2022 走看看