学习和使用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

最新文章

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

热门文章

  1. mysql数据库的备份和还原的总结
  2. Mysql Router 的集群
  3. 关于SQL查询语句中的LIKE模糊查询的解释
  4. 【python练习题】程序13
  5. c++ string替换指定字符串
  6. Nintex History in Form Table
  7. Tunnel Warfare(线段树取连续区间)
  8. kebu之rook-ceph
  9. Codeforces478D-Red-Green Towers-DP
  10. linux下对clamav杀毒软件的安装和配置