Windows标准控件详解-以C++实现Kinect V2输入焦点设置
需积分: 12 166 浏览量
更新于2024-08-10
收藏 657KB PDF 举报
"这篇教程是关于使用Kinect V2开发的,主要讲解如何在C++环境中,特别是在MFC(Microsoft Foundation Classes)框架下,使按钮获得输入焦点。在MFC中,窗口和控件的交互是通过消息处理机制实现的,而焦点控制是其中重要的一部分。教程中提到了一个常见问题,即在OnInitDialog消息处理函数中设置控件焦点后,实际焦点并未按预期转移。"
在MFC中,按钮和其他控件是窗口的一种类型,它们可以接收用户的输入和交互。对于按钮,CButton类是专门用来处理按钮控件的。在创建对话框时,通常会使用对话框编辑器将各种控件如按钮、编辑框等添加到对话框模板中。当用户与控件交互时,例如点击按钮,系统会发送相应的消息到消息队列,然后由消息映射机制分发到相应的消息处理函数进行处理。
在对话框中,输入焦点是非常关键的,因为它决定了用户键盘输入会被哪个控件接收。默认情况下,Windows会将WM_INITDIALOG消息处理后的输入焦点设为对话框的第一个控件。为了改变这个行为,我们需要在OnInitDialog消息处理函数中设置输入焦点,并且为了让设置生效,函数必须返回FALSE,因为返回TRUE会导致系统自动将焦点设置到对话框的第一个控件。
教程中提到的代码片段如下:
```cpp
m_bnClickhere.SetFocus();
```
或者是
```cpp
GetDlgItem(IDC_CLICKHERE)->SetFocus();
```
这两行代码都是尝试将输入焦点设置到ID为 IDC_CLICKHERE 的按钮(在这里是"单击这里"按钮)上。然而,如果OnInitDialog函数仍然返回TRUE,那么这个设置将会被系统默认的行为覆盖,焦点仍然会落在第一个控件上,也就是"确定"按钮。
因此,修正代码应该是:
```cpp
return FALSE;
```
这样,输入焦点就会正确地转移到"单击这里"按钮上了。
除了按钮,MFC还提供了许多其他类型的控件,如CComboBox(组合框)、CEdit(编辑框)、CListBox(列表框)等,它们都对应着Windows标准控件,并且有各自的MFC类进行封装,方便开发者进行编程。每个控件都有其特定的功能和用途,如CListBox用于显示一系列字符串,CComboBox则结合了编辑框和列表框的功能,允许用户从预定义的列表中选择或者输入新的值。
理解并掌握如何在MFC中控制输入焦点,以及正确处理WM_INITDIALOG消息,是进行Windows应用程序开发的基础。同时,熟悉各种控件的使用,能够帮助开发者构建更丰富、用户友好的界面。
188 浏览量
353 浏览量
1566 浏览量
114 浏览量
128 浏览量
点击了解资源详情
2021-07-06 上传
524 浏览量
Davider_Wu
- 粉丝: 45
- 资源: 3887
最新资源
- hotMailDemo:登录到hotmal并使用Selenium Webdriver for Chrome发送电子邮件
- nmap7.80端口扫描.rar
- 电子书模板:使用Asciidoctor创建PDF,ePub和Kindle书的模板
- 电脑软件一键替换太阳谷图标for win7 8 10.rar
- company-landing-page
- talK:购物表格的语言结构
- Image-Inpainting-Algorithm:从头开始创建Rodriguez等人描述的图像修补算法。 在MATLAB中的al
- qor-cms:qor-cms使用qor开发一个cms系统
- 简洁科幻主题.zip
- 链接顺序和混合模式DLL
- redtail:用于自主移动机器人的感知和AI组件
- Lemon 综合运维系统,基于python3 +flask+ mysql.zip
- VariablePowerSupply_arduino_powersupply_
- mbti-board:一个显示伊利诺伊州WCS会员的MBTI人格类型的网站
- NC Explorer C5.zip
- 你好,世界