Win32-API: 终于能正常的捕获焦点事件: WM_COMMAND、BN_SETFOCUS、EN_SETFOCUS
学习和使用win32-api来写窗口程序算算也有二三年了。
以前有个需求,想捕获控件的焦点事件(SETFOCUS、 KILLFOCUS),我一直认为应该捕获 WM_SETFOCUS 和 WM_KILLFOCUS。
当然一直都没有捕获到 WM_SETFOCUS 和 WM_KILLFOCUS。
今天无意发现一个关键词: BN_SETFOCUS,然后顺藤摸瓜...,终于搞明白了一切:
如果想捕获控件的焦点使用,应该在 WM_COMMAND 中处理:
比如处理Edit控件的焦点事件:
case WM_COMMAND:
{
if(HIWORD(wParam) == EN_SETFOCUS || HIWORD(wParam) == EN_KILLFOCUS)
{
printf("---------------edit\n");
}
break;
}
如果处理Button控件的焦点事件:
(这里需要注意一点,button控件在创建时必须指定一个样式: BS_NOTIFY,才能在WM_COMMAND中捕获到焦点事件,相关资料: http://blog.csdn.net/hellosijian/article/details/6615295)
(combo控件不用设置 BS_NOTIFY)
case WM_COMMAND:
{
if(HIWORD(wParam) == BN_SETFOCUS || HIWORD(wParam) == BN_KILLFOCUS)
{
printf("---------------edit\n");
}
break;
}
捕获Edit控件的Change事件:
case WM_COMMAND:
{
if(HIWORD(wParam) == EN_CHANGE)
{
printf("---------------edit\n");
}
break;
}
2014-09-26
Win32-API: 终于能正常的捕获焦点事件: WM_COMMAND、BN_SETFOCUS、EN_SETFOCUS的更多相关文章
- WIN32 API ------ 最简单的Windows窗口封装类
1 开发语言抉择 1.1 关于开发Win32 程序的语言选择 C还是C++ 在决定抛弃MFC,而使用纯Win32 API 开发Window桌面程序之后,还存在一个语言的选择,这就是是否使用C++.C+ ...
- 初次认识 C# win32 api
第一次接触win32api,刚开始的时候有点迷迷糊糊的. Windows API 就是windows应用程序接口. win api向上就是windows应用程序,向下就是windows操作系统核心. ...
- Serial Port Programming using Win32 API(转载)
In this tutorial we will learn How to communicate with an external device like a microcontroller boa ...
- 从.NET平台调用Win32 API
MSDN文章<Microsoft Win32 to Microsoft .NET Framework API Map> 介绍了.net 类库对win32的封装 从.NET平台调用Win32 ...
- 【温故Delphi】GAEA用到Win32 API目录
Delphi是Windows平台下著名的快速应用程序开发工具,它在VCL中封装并使用了大量的Win32 API. GAEA基于VCL开发的工具类产品,在程序中使用了大量的Win32 API,将经常用到 ...
- 【C#】分享基于Win32 API的服务操作类(解决ManagedInstallerClass.InstallHelper不能带参数安装的问题)
注:这里的服务是指Windows 服务. ------------------201508250915更新------------------ 刚刚得知TransactedInstaller类是支持带 ...
- C#中导入Win32 API函数
C#中导入Win32 API的方法: 1.引用命名空间 using System.Net.Security; using System.Runtime.InteropServices; 2. [Dll ...
- MSIL 教程(二):数组、分支、循环、使用不安全代码和如何调用Win32 API(转)
转自:http://www.cnblogs.com/Yahong111/archive/2007/08/16/857574.html 续上文[翻译]MSIL 教程(一) ,本文继续讲解数组.分支.循环 ...
- C#调用Win32 api学习总结
从.NET平台调用Win32 API Win32 API可以直接控制Microsoft Windows的核心,因为API(Application Programming Interface)本来就是微 ...
随机推荐
- shell自定义输入输出 read+echo
自定义格式输入.输出(244) 输出:echo -e 解释转义字符 -n 回车不换行 \n 新的一行,等同于回车 \t 制表符 \r 回车 \b 回退 baskspace 删除键 演示\n \ ...
- jQuery的each使用陷阱
注意:jQuery使用each()函数进行循环时发现return false不能阻止程序继续向下执行 原因如下: (1)开始还以为是jQuery的each()函数是异步执行的,所以导致出错,其实不是. ...
- Java之ArrayList自定义排序,通过实现comparator比较器接口
两种排序方式: 1.实体类实现Comparable接口,重写compareTo(T o)方法,在其中定义排序规则,那么就可以直接调用Collections.sort()来排序对象数组 2.在调用方法的 ...
- Linux中,去掉终端显示的当前目录的绝对路径
Linux中,去掉终端显示的当前目录的绝对路径 去~/.bashrc中,找到PS1变量的定义,如果没有,手动加上: 可以将显示输出到标题栏上: #export PS1="[e]2;u@H w ...
- Data Science With R In Visual Studio
R Projects Similar to Python, when we installed the data science tools we get an “R” section in our ...
- SQL 给视图赋权限
授予表权限 创建视图 授予视图权限 测试权限 复杂程度: 初级 数据要求: 使用自备的数据 您可以使用 SQL 在企业级地理数据库中创建表和要素类的视图. 本主题中的示例显示如何使用 Microsof ...
- bzoj-1191(二分图最大匹配)
解题思路:比较裸的一道题,直接跑匈牙利就行了,但是要注意一点,这个兔崽子是在闯关,一道题回答不出来就没了,直接在题目循环那里加一个else break;就行了!!!; #include<iost ...
- Nginx Epoll事件模型优劣
L30-31 Epoll 性能优势主要源于它不用遍历 假设有100万个链接 其它事件可能都需要遍历所有链接,而Epoll只要遍历活跃的链接,这样大大提升了效率
- Xml文件汉化后改变代码页
源Xml文件代码页为ansi,汉化后要转换为UTF-8,在网上搜素了以下结果,但解释的不都清楚,我找了好一阵才找到相应的操作. 为防止自己以后忘了,补充如下: 经过这样的设置,生成的汉化xml文件 ...
- Git简介及安装
1 Git简介 Git是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码 ...