我正在尝试跟踪为什么我在Windows对话框中动态创建的一些子控件在使用Tab键导航时出现故障。如果没有其他任何东西摆弄它们,顺序应该按照它们被添加到对话框中的顺序来定义,但是一个特定类型的子控件最后一直被排序。
我知道one way重新排序它们正在使用SetWindowPos()
,使用hWndInsertAfter
参数并且不设置SWP_NOZORDER
标记。我很确定我已将此消除作为重新排序的可能原因。
那么,为了进一步引导这个以及仅供将来参考,除了SetWindowPos()
之外,还有哪些win32调用可以在对话框中重新排序现有的子控件?
答案 0 :(得分:2)
这就是它 - 在标准对话框中,Tab键顺序只是z顺序,除了你可以控制从z顺序开始的位置。如果你有几个控件总是在Tab键顺序的末尾结束,那么有些东西正在操纵z命令将它们放在那里。
如果对话框或控件是非标准的,则WndProc可以直接操作Tab键顺序。这通常是bad idea,但已知不时发生。