【问题标题】:Other ways to change tab order programmatically in a dialog在对话框中以编程方式更改 Tab 顺序的其他方法
【发布时间】:2011-07-13 20:45:49
【问题描述】:

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

我知道one way 重新订购它们是使用SetWindowPos(),使用hWndInsertAfter 参数并且没有设置SWP_NOZORDER 标志。我很确定我已经消除了这个重新排序的可能原因。

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

【问题讨论】:

    标签: c++ winapi dialog tab-ordering


    【解决方案1】:

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

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

    【讨论】:

    • 忘记了这个问题,但我相信这个问题确实是一些杂散的代码,它有一个SetWindowPos() 作为副作用,它们的 z-order 比预期的要多。
    猜你喜欢
    • 2010-09-08
    • 1970-01-01
    • 2014-09-25
    • 2011-05-08
    • 2019-10-16
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多