【问题标题】:MFC: How to set the focus of CEdit boxes?MFC:如何设置 CEdit 框的焦点?
【发布时间】:2020-05-16 15:37:01
【问题描述】:

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

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

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

【问题讨论】:

  • 这是默认行为。您无需编写任何代码即可实现这一目标。唯一需要的是您的控件按照您希望 TAB 在它们之间移动的方式进行排序,您的初始编辑控件是资源脚本中的第一个控件。

标签: c++ c visual-c++ mfc cmfctoolbar


【解决方案1】:

当您的对话框首次显示时,您可以通过在OnInitDialog() 函数中调用SetFocus 将焦点设置到给定控件。但是,如果您这样做,您的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 documentation

返回值
指定应用程序是否已将输入焦点设置为以下之一 对话框中的控件。如果 OnInitDialog 返回非零, Windows 将输入焦点设置为默认位置,第一个 对话框中的控件。应用程序只有在有的情况下才能返回 0 将输入焦点显式设置为对话框中的控件之一 盒子。

【讨论】:

猜你喜欢
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多