资源的使用

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处理

Win32 Windows编程 九的更多相关文章

  1. Win32 Windows编程 十

    一 Windows画图 1 图形绘制 1.1 图形绘制的方式 获取到画图的句柄,设备描写叙述符(DC).使用对应的画图API.在设备上绘制图形 1.2 颜色 RGB,每种颜色8位,共24位颜色 32位 ...

  2. Win32 Windows编程 十二

    一.对话框 1.对话框的分类 2.对话框的基本使用方式 3.对话框资源 4.有模式对话框的使用 5. 无模式对话框的使用 5.1 加入对话框资源 5.2 定义窗体处理函数 BOOL CALLBACK ...

  3. Win32 Windows编程 七

    定时器消息 1. WM_TIMER 依照定时器设置的时间段,自己主动向窗体发送一个定时器消息WM_TIMER.优先级比較低 定时器精度比較低.毫秒级别.消息产生时间也精度比較低 2 .消息和函数 WM ...

  4. 【Windows编程】系列第六篇:创建Toolbar与Statusbar

    上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...

  5. 【Windows编程】系列第十篇:文本插入符

    大家知道,在使用微软的编程环境创建工程时会让你选择是控制台模式还是Windows应用程序.如果选择控制台的console模式,就会在运行时出现一个黑洞洞的字符模式窗口,里面就有等待输入一闪一闪的插入符 ...

  6. 【Windows编程】系列第八篇:通用对话框

    上一篇我们学习了菜单的基本编程,本篇来了解一下通用对话框的使用.Windows系统之所以是目前最流行的桌面系统,也是因为Windows有一套标准化,统一友好的交互界面,比如菜单.工具栏.状态栏以及各个 ...

  7. 【Windows编程】系列第五篇:GDI图形绘制

    上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...

  8. 【Windows编程】系列第三篇:文本字符输出

    上一篇我们展示了如何使用Windows SDK创建基本控件,本篇来讨论如何输出文本字符. 在使用Win32编程时,我们常常要输出文本到窗口上,Windows所有的文本字符或者图形输出都是通过图形设备接 ...

  9. MFC-01-Chapter01:Hello,MFC---1.1 Windows 编程模型

    1.1 Windows编程模型 为传统的操作系统编写的程序使用的是过程化模型,即程序从头到尾按顺序执行.例如C程序,从main函数入口开始执行,中间调用不同的函数一直到程序结束返回,这种过程是程序本身 ...

随机推荐

  1. SQL SERVER CHARINDEX函数

    CHARINDEX函数经常常使用来在一段字符中搜索字符或者字符串.假设被搜索的字符中包括有要搜索的字符,那么这个函数返回一个非零的整数,这个整数是要搜索的字符在被搜索的字符中的開始位数.即CHARIN ...

  2. Oracle Enterprise Manager Cloud Control 12c R4 安装配置

    准备软件 em12.1.0.4_linux64_V45344-01.zip em12.1.0.4_linux64_V45345-01.zip em12.1.0.4_linux64_V45346-01. ...

  3. 使用VS插件在VS2012/2013上编辑和调试Quick-Cocos2d-x的Lua代码

    vs 也能够做lua 开发,并进行代码调试 依照以下文档,调试没问题. 參考文档: 点击打开链接

  4. Java程序猿面试题集(181- 199)

    Java面试题集(181-199) 摘要:这部分是包括了Java高级玩法的一些专题,对面试者和新入职的Java程序猿相信都会有帮助的. 181.  182. 183. 184. 185. 186. 1 ...

  5. CC 3-Palindromes(manacher)

    传送门:3-Palindromes 题意:求为回文串且能整除3且不前导0的子串个数. 分析:由 manacher算法O(N)可算出以i为坐标的最长为p[i]回文子串,且Si-k,Si-k+1..... ...

  6. HDU 3277 Marriage Match III(二分+最大流)

    HDU 3277 Marriage Match III 题目链接 题意:n个女孩n个男孩,每一个女孩能够和一些男孩配对,此外还能够和k个随意的男孩配对.然后有些女孩是朋友,满足这个朋友圈里面的人.假设 ...

  7. Enum实现单例模式

    package com.wjy.effective; public enum Singleton { INSTANCE; private int numa; private int numb; pub ...

  8. C++实现链栈的基本操作

    之前对顺序栈写了基本操作,认为有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义例如以下: #ifndef CSTOCK_H_ #define CSTOCK_H_ ty ...

  9. JavaScript 使用Document记录cookie

    cookie对于我们使用者来说,有时帮助还是挺大的,比方对于一些不是特别重要的站点,比方公司的測试平台,每次登陆都要手动输入username和password 非常繁琐.所以为了更少的引入其他框架,就 ...

  10. 服务器编程入门(1)TCP/IP协议族

    问题聚焦: 简单地梳理一下TCP/IP各层的功能和常用协议 详细了解ARP(数据链路层)和DNS(应用层)协议的工作原理 1 TCP/IP协议族体系结构 数据链路层:     职责:实现网卡接口的网络 ...