我在设置对话框中的 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);
Run Code Online (Sandbox Code Playgroud)
您真的必须按代码设置选项卡顺序吗?只需在对话框设计器中按 Ctrl+D!
更新:使用SetWindowPos
不会帮助你。您认为它将定义 taborder 的参数只是设置 z 顺序,这意味着控件重叠时的绘制顺序。我不确定,但我认为 Tab 键顺序是由创建控件的顺序定义的。
下一次更新:一种可能的解决方法是观察 Tab 键的键盘事件,然后获取活动控件并将焦点设置到下一个应该出现的控件上。
归档时间: |
|
查看次数: |
2721 次 |
最近记录: |