Win32 Windows编程 七
定时器消息
1、 WM_TIMER
依照定时器设置的时间段,自己主动向窗体发送一个定时器消息WM_TIMER。优先级比較低
定时器精度比較低。毫秒级别。消息产生时间也精度比較低
2 、消息和函数
WM_TIMER : 消息ID
wParam 定时器的ID
lParam 定时器的处理函数
SetTimer
:设置一个定时器
UINT_PTR SetTimer(
HWND hWnd, // handle to window 窗体的句柄 能够为NULL
UINT_PTR nIDEvent, // timer identifier 定时器的ID 0为不预设ID
UINT uElapse, // time-out value 定时器时间间隔
TIMERPROC lpTimerFunc // timer procedure 定时器的处理函数, 能够为NULL
);
返回一个创建好的定时器ID
KillTimer
: 结束一个定时器
BOOL KillTimer(
HWND hWnd, // handle to window 窗体的句柄
UINT_PTR uIDEvent // timer identifier 定时器ID
);
TimerProc : 定时器处理函数
VOID CALLBACK TimerProc(
HWND hwnd, // handle to window 窗体句柄
UINT uMsg, // WM_TIMER message WM_TIMER消息ID
UINT_PTR idEvent, // timer identifier 定时器ID
DWORD dwTime // current system time 当前系统时间
);
3、使用方式
3.1 创建定时器
3.1.1 指定窗体句柄HWND 那么TIMERPROC參数能够为空,那么WM_TIMER消息将会发送给指定窗体,
假设未指定,TIMERPROC不能为空,必须指定定时器处理程序。
3.1.2 假设定时器ID SetTimer会依照这个ID创建定时器。假设未指定,会返回一个创建定时器ID
3.2 处理定时器消息
能够依据消息传入定时器ID号 分别处理
3.3 结束定时器
在不使用时。 KillTimer 结束定时器
菜单
1、菜单基础
菜单- 每一个菜单会有一个HMENU句柄
菜单项:每一个菜单项会有一个ID号。能够依据这个ID运行不同的操作
2、菜单创建
2.1 菜单的创建
CreateMenu - MENU 菜单
CreatePopupMenu - POPUPMENU 弹出式菜单
AppendMenu - 添加菜单项
BOOL AppendMenu(
HMENU hMenu, // handle to menu 菜单句柄
UINT uFlags, // menu-item options 菜单项标识
UINT_PTR uIDNewItem, // identifier, menu, or submenu 菜单项的ID或者自带单句柄
LPCTSTR lpNewItem // menu-item content 菜单项的名称
);
uFlags
MF_STRING - lpNewItem是一个字符串
MF_POPUP - uIDNewItem是一个子菜单句柄
MF_SEPARATOR - 添加切割项
MF_CHECKET/MF_UNCHECKED -设置和取消菜单项的对勾
MF_DISABLED / MF_ENABLE - 菜单项禁止和同意状态
2.2 菜单的命令响应
2.2.1 WM_CONMAND消息
当用户点击菜单、button控件等时,系统会向窗体发送WM_COMMAND消息。
WPARAM: HIWORD 通知消息的标识
LOWORD 产生消息ID号/或者其它一些东西
LPARAM: 控件的句柄, 对于菜单为空
2.2.2 命令处理
依据消息项的ID号 作对应处理
2.3 菜单项的状态
2.3.1 WM_INITMENUPOPUP 消息
当用户点击菜单显示弹出式菜单之前。下同会向窗体发送WM_INITMENUPOPUP
WPARAM 是菜单句柄
LPARAM : LOWORD 菜单位置
HIWORD 是否是系统菜单
2.3.2 命令处理
Win32 Windows编程 七的更多相关文章
- Win32 Windows编程 十
一 Windows画图 1 图形绘制 1.1 图形绘制的方式 获取到画图的句柄,设备描写叙述符(DC).使用对应的画图API.在设备上绘制图形 1.2 颜色 RGB,每种颜色8位,共24位颜色 32位 ...
- Win32 Windows编程 十二
一.对话框 1.对话框的分类 2.对话框的基本使用方式 3.对话框资源 4.有模式对话框的使用 5. 无模式对话框的使用 5.1 加入对话框资源 5.2 定义窗体处理函数 BOOL CALLBACK ...
- Win32 Windows编程 九
资源的使用 1 资源文件 图标 光标 字符串 菜单 加速键 对话框资源位图等等 资源脚本文件 - 扩展名为RC文件 定义了资源和相关文件等信息 资源编译器 - RC.exe 2 图标资源 ICON ...
- 【Windows编程】系列第七篇:Menubar的创建和使用
上一篇我们学习了利用windows API创建工具栏和菜单栏,与上一篇紧密联系的就是菜单栏,菜单栏是一个大多数复杂一些的Windows应用程序不可或缺的部分.比如下图就是Windows自带的记事本的菜 ...
- Windows编程 Windows程序的生与死(中)
<pre style=""><pre class="cpp" name="code">1 #include < ...
- 【Windows编程】系列第六篇:创建Toolbar与Statusbar
上一篇我们学习了解了如何使用Windows GDI画图,该应用程序都是光光的静态窗口,我们使用Windows应用程序,但凡稍微复杂一点的程序都会有工具栏和状态栏,工具栏主要用于一些快捷功能按钮.比如典 ...
- 【Windows编程】系列第十篇:文本插入符
大家知道,在使用微软的编程环境创建工程时会让你选择是控制台模式还是Windows应用程序.如果选择控制台的console模式,就会在运行时出现一个黑洞洞的字符模式窗口,里面就有等待输入一闪一闪的插入符 ...
- 【Windows编程】系列第八篇:通用对话框
上一篇我们学习了菜单的基本编程,本篇来了解一下通用对话框的使用.Windows系统之所以是目前最流行的桌面系统,也是因为Windows有一套标准化,统一友好的交互界面,比如菜单.工具栏.状态栏以及各个 ...
- 【Windows编程】系列第五篇:GDI图形绘制
上两篇我们学习了文本字符输出以及Unicode编写程序,知道如何用常见Win32输出文本字符串,这一篇我们来学习Windows编程中另一个非常重要的部分GDI图形绘图.Windows的GDI函数包含数 ...
随机推荐
- 7. 配置undo表空间
7. 配置undo表空间 undo日志可以存储在一个或多个undo表空间中,无需存储在系统表空间中. 要为MySQL实例配置单独的undo表空间,请执行以下步骤 [重要]: 只能在初始化新MySQL实 ...
- Shell流程语句
1. shell流程控制 流程控制是改变程序运行顺序的指令.linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case). 2. if ...
- CSS3---关于文本
1.text-overflow用来设置是否使用一个省略标记(...)标示对象内文本的溢出. 2.但是text-overflow只是用来说明文字溢出时用什么方式显示,要实现溢出时产生省略号的效果,还须定 ...
- vue 项目部署
vue项目部署到PHP项目 入口目录 vue项目打包后, 是一个单文件html 我们只需要把打包后的文件夹放在php项目的public下面 访问 xxx.com/h5/index.html 就可以访问 ...
- python_装饰器——迭代器——生成器
一.装饰器 1.什么是装饰器? 器=>工具,装饰=>增加功能 1.不修改源代码 2.不修改调用方式 装饰器是在遵循1和2原则的基础上为被装饰对象增加功能的工具 2.实现无参装饰器 1.无参 ...
- DEV Express
记录在使用DEV Express中遇到的所有问题及解决方案 问题1:将Dev11升级到Dev14 解决方案:将解决方案中原有Dev引用删除,重新添加必须的Dev14引用,问题解决: 问题2:LC.ex ...
- CodeForces 21 A+B
Jabber ID 判断邮箱地址格式是否正确..一把心酸泪...跪11+,,看后台才过.. 注 ...
- bzoj 1503[NOI 2004] 郁闷的出纳员
题目大意: 给4种操作 I:添加一个员工工资信息 A:增加所有员工的工资 S:减少所有员工的工资 F:询问工资第k高的员工的工资情况 自己做的第一道splay树的题目,初学找找感觉 #include ...
- 【数学】codeforces A. Success Rate
http://codeforces.com/contest/773/problem/A [思路] 用 (x+a)/(y+b) = p/q 来表示其核心思想,其中a 为做对的题目,b为做的题目,则有x+ ...
- [NOIP2002] 提高组 洛谷P1031 均分纸牌
题目描述 有 N 堆纸牌,编号分别为 1,2,…, N.每堆上有若干张,但纸牌总数必为 N 的倍数.可以在任一堆上取若于张纸牌,然后移动. 移牌规则为:在编号为 1 堆上取的纸牌,只能移到编号为 2 ...