0

我试图找出为什么我在 Windows 对话框中动态创建的一些子控件在使用 tab 键导航时出现故障。在没有其他东西摆弄它们的情况下,顺序应该由它们添加到对话框中的顺序来定义,但是一种特定类型的子控件始终排在最后。

我知道重新排序它们的一种方法SetWindowPos()是使用, 使用hWndInsertAfter参数而不设置SWP_NOZORDER标志。我很确定我已经消除了这个重新排序的可能原因。

因此,为了进一步了解这一点以及仅供将来参考,除此之外SetWindowPos(),还有哪些其他 win32 调用可以重新排序对话框中现有的子控件?

4

1 回答 1

2

差不多就是这样——在标准对话框中,制表符顺序只是 z 顺序,除了您可以控制从 z 顺序开始的位置。如果你有几个控件总是在你的 tab 顺序结束时结束,那么有些东西正在操纵 z 顺序将它们放在那里。

如果对话框或控件是非标准的,则 Tab 键顺序可以由 WndProc 直接操作。这通常是一个坏主意,但众所周知,这种情况时有发生。

于 2011-07-13T21:16:40.747 回答