我有一个 MS Visual C++ 项目,其中有一个基于 CDialog 的对话框,其中包含多个编辑控件。我想为用户突出显示当前焦点的控件。我通过使用 GetFocus() 获取指向具有当前焦点的窗口的指针,然后使用 GetDlgCtrlID() 获取焦点控件的 ID 来实现这一点:
CWnd *pWnd=GetFocus();
idfocus=(pWnd->GetDlgCtrlID());
然后,我将其与在成员函数 OnCtlColor 中为其设置 HBRUSH 的当前控件进行比较。
这工作正常,直到我单击在我的 PC 上运行的另一个应用程序的窗口。比如火狐。此时我的应用程序崩溃了。
查找特定对话框中的哪个控件(如果有)具有焦点的最佳方法是什么,并且只有该特定对话框具有焦点?或者可能仅限于相同的应用程序。