你好,我有一个动态创建的小对话框,它有一个文本框和一个按钮。如果用户按下TAB键,它必须在两个控件(文本框和按钮)之间切换...我尝试使用SetwindowPos ...但它似乎没有解决我的问题...请给我一个解决方案..在下面的代码..我也试图在taborder中包括主窗口..但它不起作用
//对话框创建
HWND dialogHandle = CreateWindowEx(0,WC_DIALOG,L"Security Alert",WS_OVERLAPPEDWINDOW|WS_VISIBLE,600,300,280,160,NULL,NULL,NULL,NULL);
//create textboxcontrol within the dialog
HWND textBoxHandle = CreateWindowEx(WS_EX_CLIENTEDGE,L"EDIT",L"",WS_CHILD|WS_VISIBLE |ES_PASSWORD | WS_TABSTOP,123,48,110,25,dialogHandle,(HMENU)IDD_TEXTBOX,NULL,NULL);
//create button
HWND buttonHandle = CreateWindowEx(NULL,L"Button",L"OK",WS_CHILD|WS_VISIBLE| WS_TABSTOP,151,85,85,25,dialogHandle,(HMENU)ID_PASSWORD_OK,NULL,NULL);
// setwindowpos
SetWindowPos(NULL,textBoxHandle,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
SetWindowPos(textBoxHandle,buttonHandle,0,0,0,0,SWP_NOMOVE|SWP_NOSIZE);
答案 0 :(得分:4)
在消息循环中,您需要为对话框处理的键盘事件(例如Tab键)调用IsDialogMessage
。这被描述为here。
以下是一个例子:
while (GetMessage(&msg, NULL, 0, 0) > 0) {
if (!IsDialogMessage(dialogHandle, &msg)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}