如何以编程方式更改Win32对话框中的Tab键顺序?

Kar*_*rim 11 winapi dialog

通常,我需要在通过对话框模板和CreateDialogIndirect生成对话框后向对话框添加控件.在这些情况下,Tab键顺序由对话框模板设置,并且没有明显的方法可以通过包含新创建的控件来更改Tab键顺序.

Kar*_*rim 14

我最近发现你可以使用SetWindowPos来实现这一目标.确定要在Tab键顺序中插入新控件的控件,然后像这样使用SetWindowPos:

SetWindowPos(hNewControl, hOldControl, 0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE); 
Run Code Online (Sandbox Code Playgroud)

这会更改控件的z顺序,而控件又会建立Tab键顺序.

  • 这很好用。CWnd 中有一个 MFC 等效项: newControl.SetWindowPos(oldControl, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); (2认同)