为什么 Tab 键不能将焦点转移到 ES_MULTILINE 样式文本框中的下一个控件?

问题描述 投票:0回答:1

我创建了一个样式为

ES_MULTILINE
的多行编辑控件,我意识到当我按 Tab 键时,它不会将焦点更改为下一个控件。

我配置了 IsDialogMessage 和 WS_TABSTOP,这是代码:

if (!IsDialogMessageA(hWnd, &msg))
{
    TranslateMessage(&msg);
    DispatchMessageA(&msg);
}
HWND hWndEdit1 = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 14, 14, 200, 21, hWnd, NULL, NULL, NULL);
HWND hWndEdit2 = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_TABSTOP | ES_MULTILINE | ES_WANTRETURN, 14, 44, 200, 42, hWnd, NULL, NULL, NULL);
HWND hWndEdit3 = CreateWindowExA(WS_EX_CLIENTEDGE, "EDIT", "", WS_CHILD | WS_VISIBLE | WS_TABSTOP, 14, 95, 200, 21, hWnd, NULL, NULL, NULL);
c winapi
1个回答
0
投票

Tab 是多行编辑控件中的有效文本字符。它不应该将焦点转移到下一个 UI 控件。如果您希望 Tab 执行此操作,则必须对 Edit 控件进行子类化以处理

WM_GETDLGCODE
(当启用
DLGC_WANTALLKEYS
时,默认情况下包括
ES_MULTILINE
),或者甚至直接按 Tab

© www.soinside.com 2019 - 2024. All rights reserved.