3

我正在处理我的第一个简单的 MFC 项目,但我正在努力解决一个问题:想要CEdit在其中一个对话框中设置所有框的焦点。我的想法是当打开对话框时,焦点放在第一个编辑框上,然后用“选项卡”在它们之间交换。

我看到了方法SetFocus(),但我无法正确应用它。我也找不到用特定键实现焦点顺序的解决方案。

提前感谢所有花时间帮助我的人!

4

1 回答 1

3

当您的对话框首次显示时,您可以通过调用SetFocus您的OnInitDialog()函数将焦点设置到给定控件。但是,如果您这样做,您OnInitDialog() 必须返回FALSE

BOOL MyDialog::OnInitDialog() {
    CDialog::OnInitDialog(); // Call base class member
    GetDlgItem(IDC_MYEDIT)->SetFocus();
    //..
    return FALSE; // Otherwise, the framework will reset the focus to its default
}

M/S 文档

返回值
指定应用程序是否已将输入焦点设置到对话框中的控件之一。如果 OnInitDialog 返回非零值,Windows 将输入焦点设置到默认位置,即对话框中的第一个控件。仅当应用程序已将输入焦点显式设置为对话框中的某个控件时,应用程序才能返回 0。

于 2020-01-30T23:20:40.053 回答