c++ - 如何将 SetFocus 设置为 CButton 以便边框和焦点虚线可见?

标签 c++ mfc setfocus cdialog cbutton

我创建了一个简单的基于对话框的应用程序,并使用 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 时,才会绘制插入符号(表示焦点的虚线)。

我希望按钮看起来和我点击它后的样子一模一样。以编程方式在按钮内显示虚线将是一个加号。

我想要的:

http://i33.tinypic.com/11t8pkl.png

我得到的:

http://i37.tinypic.com/160q5hw.png

最佳答案

使用 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/

相关文章:

c++ - Windows、Mingw Qt 应用程序不在部署的计算机上运行

c++ - 我们如何突出显示以 ICON 格式创建的 ClistCtrl 的第一项?

java - 未通过获取焦点的方法设置焦点

php - 将输入字段焦点设置为开始输入

c++ - 如何静态链接到由序号导出的 DLL 函数?

c++ - 如何调用模拟另一个用户而不是 SYSTEM 的函数

c++ - Cygwin C++ 开发

c++ - MFC显示透明背景的png

c++ - CWnd::ScreenToClient 安全吗?

c++ - Windows 应用程序需要焦点