在对话框中设置项目的Tab键顺序

时间:2010-09-28 12:53:26

标签: winapi mfc

我在对话框中设置Tab键顺序时遇到问题。要设置Tab键顺序,我使用了函数SetWindowPos()。

最初它将聚焦到其中一个对话框项目,但如果我按Tab键,它将不会将焦点更改为对话框中的其他项目。

请帮助他解决问题。 贝娄是代码......

HWND hBtn1 = GetDlgItem(hWnd, IDC_BTN_OPEN);

HWND hBtn2 = GetDlgItem(hWnd, IDC_BTN_CLOSE);
HWND hBtn3 = GetDlgItem(hWnd, IDC_BTN_SAVE);

bool result = ::SetWindowPos(hBtn1, hBtn2, 0, 0, 0, 0,SWP_NOSIZE|SWP_NOMOVE);
result = ::SetWindowPos(hBtn2, hBtn3, 0, 0, 0, 0, SWP_NOSIZE|SWP_NOMOVE);

1 个答案:

答案 0 :(得分:3)

您真的必须按代码设置标签顺序吗? 只需在对话框设计器中按Ctrl + D即可!

更新: 使用SetWindowPos对您没有帮助。您认为它将定义taborder的参数只是设置z顺序,表示控件在重叠时的绘制顺序。我不确定,但我认为tab-order是由创建控件的顺序定义的。

下次更新: 一种可能的解决方法是观察Tab键的键盘事件,然后获得主动控件并将焦点设置为下一个控件。