在对话框中以编程方式更改Tab键顺序的其他方法

时间:2011-07-13 20:45:50

标签: c++ winapi dialog tab-ordering

我正在尝试跟踪为什么我在Windows对话框中动态创建的一些子控件在使用Tab键导航时出现故障。如果没有其他任何东西摆弄它们,顺序应该按照它们被添加到对话框中的顺序来定义,但是一个特定类型的子控件最后一直被排序。

我知道one way重新排序它们正在使用SetWindowPos(),使用hWndInsertAfter参数并且不设置SWP_NOZORDER标记。我很确定我已将此消除作为重新排序的可能原因。

那么,为了进一步引导这个以及仅供将来参考,除了SetWindowPos()之外,还有哪些win32调用可以在对话框中重新排序现有的子控件?

1 个答案:

答案 0 :(得分:2)

这就是它 - 在标准对话框中,Tab键顺序只是z顺序,除了你可以控制从z顺序开始的位置。如果你有几个控件总是在Tab键顺序的末尾结束,那么有些东西正在操纵z命令将它们放在那里。

如果对话框或控件是非标准的,则WndProc可以直接操作Tab键顺序。这通常是bad idea,但已知不时发生。