将GetFocus限制为特定对话框和/或应用程序

时间:2010-10-28 14:11:30

标签: visual-c++ focus cwnd

我有一个MS Visual C ++项目,我有一个基于CDialog的对话框,其中有几个编辑控件。我想突出显示用户当前焦点的控件。我通过使用GetFocus()获取当前焦点的窗口指针,然后使用GetDlgCtrlID()获取焦点控件的ID来实现此目的:

CWnd * pWnd = GetFocus();

idfocus =(pWnd-> GetDlgCtrlID());

然后我将其与成员函数OnCtlColor中为其设置HBRUSH的当前控件进行比较。

这个工作正常,直到我点击我的电脑上运行的另一个应用程序的窗口。比如Firefox。此时我的应用程序崩溃了。

在特定对话框中找到哪个控件(如果有)以及只有该特定对话框具有焦点的最佳方法是什么?或者可能只限于同一个应用程序。

1 个答案:

答案 0 :(得分:0)

对话框中的所有控件基本上都是主对话框的子控件。因此,您可以通过首先检查所关注的控件是否是对话框的子项(您可以使用GetParent())来创建限制,然后再执行所需的操作。