我创建了一个简单的基于对话框的应用程序,并使用 Visual Studio 编辑器在默认的 CDialog 中添加了三个按钮(通过拖放它们)。
默认的确定和取消按钮也在那里。
我想在单击按钮 3 时将焦点设置到按钮 1。
我在很多按钮的属性中将属性 Flat 设置为 true。
我这样编码:
void CbuttonfocusDlg::OnBnClickedButton3()
{
// TODO: Add your control notification handler code here
GetDlgItem(IDC_BUTTON1)->SetFocus();
Invalidate();
}
但是 button1 中的边框永远不会被绘制。仅当我在单击按钮 3 之前按 TAB 时,才会绘制插入符号(表示焦点的虚线)。
我希望按钮看起来和我点击它后的样子一模一样。以编程方式在按钮内显示虚线将是一个加号。
我想要的:
我得到的:
最佳答案
使用 WM_NEXTDLGCTL
。
参见 Reymond Chen's "How to set focus in a dialog box" :
void SetDialogFocus(HWND hdlg, HWND hwndControl)
{
SendMessage(hdlg, WM_NEXTDLGCTL, (WPARAM)hwndControl, TRUE);
}
关于c++ - 如何将 SetFocus 设置为 CButton 以便边框和焦点虚线可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/369788/