0

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

CWnd *pWnd=GetFocus();

idfocus=(pWnd->GetDlgCtrlID());

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

这工作正常,直到我单击在我的 PC 上运行的另一个应用程序的窗口。比如火狐。此时我的应用程序崩溃了。

查找特定对话框中的哪个控件(如果有)具有焦点的最佳方法是什么,并且只有该特定对话框具有焦点?或者可能仅限于相同的应用程序。

4

1 回答 1

0

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

于 2010-11-05T08:40:15.803 回答