【问题标题】:Change Tab order by code in a MFC Dialog在 MFC 对话框中按代码更改 Tab 顺序
【发布时间】:2011-05-08 23:15:03
【问题描述】:

我在 OnInitDialog 中通过代码创建了一个控件,但是我找不到任何方法来通过代码更改对话框的 Tab 键顺序。

有人知道怎么做吗?

【问题讨论】:

标签: mfc tabs


【解决方案1】:


第一个选项

在 Visual Studio 的资源视图中使用 ctrl+d。并更改标签顺序


其他选项

一个更简单的解决方案是更改 .rc 文件中的控件顺序...这将同时更改您的 tab 顺序和 z 顺序。

例如。 此对话框将首先具有 Tab Order IDOK,然后是 IDCANCEL

IDD_ABOUT DIALOG DISCARDABLE 0, 0, 239, 66 样式 DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 标题“我的关于框” 字体 8,“MS 无衬线字体” 开始 DEFPUSHButton "&OK",IDOK,174,18,50,14 按钮“&取消”,IDCANCEL,174,35,50,14 结尾

现在如果你把它改成

IDD_ABOUT DIALOG DISCARDABLE 0, 0, 239, 66 样式 DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU 标题“我的关于框” 字体 8,“MS 无衬线字体” 开始 按钮“&取消”,IDCANCEL,174,35,50,14 DEFPUSHButton "&OK",IDOK,174,18,50,14 结尾

这将有标签顺序IDCANCEL首先然后IDOK

【讨论】:

  • 对于第一个选项,您必须从 1 开始并为所有选项设置。我更喜欢第二种选择。
  • @Sarker 不,你没有。您可以按下一个热键,这样当您单击一个控件时,就会开始从该控件开始重新编号,而让其他控件不受影响。
  • @Sarker 我认为是 CTRL + SHIFT 并单击保持相同数字的控件。然后对之后的每个控件重新编号。
【解决方案2】:

对话框上控件的 Tab 键顺序由这些控件的 Z-Order 控制。因此,要更改 Tab 键顺序,请更改相关控件的 z 顺序位置。

您可以使用 SetWindowPos 更改 z 顺序。例如,请参阅this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    相关资源
    最近更新 更多