【发布时间】:2010-09-08 04:36:51
【问题描述】:
在通过对话框模板和 CreateDialogIndirect 生成对话框后,我经常需要向对话框添加控件。在这些情况下,tab 顺序由对话框模板设置,并且没有明显的方法可以通过包含新创建的控件来更改 tab 顺序。
【问题讨论】:
在通过对话框模板和 CreateDialogIndirect 生成对话框后,我经常需要向对话框添加控件。在这些情况下,tab 顺序由对话框模板设置,并且没有明显的方法可以通过包含新创建的控件来更改 tab 顺序。
【问题讨论】:
我知道这是一个老问题,但这里是如何在编译时做到这一点(这在绝大多数情况下是可取的): http://msdn.microsoft.com/en-us/library/7039hzb0(v=vs.80).aspx
我最喜欢的方法:
【讨论】:
我最近发现您可以使用 SetWindowPos 来完成此操作。确定要在哪个控件之后按 Tab 键顺序插入新控件,然后像这样使用 SetWindowPos:
SetWindowPos(hNewControl, hOldControl, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
这会改变控件的 z 顺序,从而建立 tab 顺序。
【讨论】:
hNewControl 是HANDLE,用于您要更改其标签顺序的控件。 hOldControl 是你想把hNewControl after 的控件的HANDLE 就标签顺序而言。