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
最新文章
- JDBC入门之一--连接Mysql实验
- oracle删除用户及表空间,导入用户和数据
- JAVA初学(1):值类型和引用类型的区别
- Wind7系统下 wifi设置
- FindBugs使用
- C语言:函数处理结构体
- QT信号槽机制
- 让IE9支持html5
- Thinkphp 事物问题
- makefile例子《一》
- 《jQuery权威指南》学习笔记之第2章 jQuery选择器
- Boost的VS开发环境搭建
- 【译】10个机器学习的JavaScript示例
- 剑指C++面试
- kubernetes资源类别介绍
- MySQL——基础操作
- 关于 atcoder 页面美化的 css
- 黑苹果是否会成为mac电脑的竞争对手?
- boost库的安装
- 强化学习 平台 openAI 的 gym 安装 (Ubuntu环境下如何安装Python的gym模块)