我在对话框中设置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);
答案 0 :(得分:3)
您真的必须按代码设置标签顺序吗? 只需在对话框设计器中按Ctrl + D即可!
更新:
使用SetWindowPos
对您没有帮助。您认为它将定义taborder的参数只是设置z顺序,表示控件在重叠时的绘制顺序。我不确定,但我认为tab-order是由创建控件的顺序定义的。
下次更新: 一种可能的解决方法是观察Tab键的键盘事件,然后获得主动控件并将焦点设置为下一个控件。