我有一个MS Visual C ++项目,我有一个基于CDialog的对话框,其中有几个编辑控件。我想突出显示用户当前焦点的控件。我通过使用GetFocus()获取当前焦点的窗口指针,然后使用GetDlgCtrlID()获取焦点控件的ID来实现此目的:
CWnd * pWnd = GetFocus();
idfocus =(pWnd-> GetDlgCtrlID());
然后我将其与成员函数OnCtlColor中为其设置HBRUSH的当前控件进行比较。
这个工作正常,直到我点击我的电脑上运行的另一个应用程序的窗口。比如Firefox。此时我的应用程序崩溃了。
在特定对话框中找到哪个控件(如果有)以及只有该特定对话框具有焦点的最佳方法是什么?或者可能只限于同一个应用程序。
答案 0 :(得分:0)
对话框中的所有控件基本上都是主对话框的子控件。因此,您可以通过首先检查所关注的控件是否是对话框的子项(您可以使用GetParent())来创建限制,然后再执行所需的操作。