我已经使用WinAPI在C语言中创建了一个小型应用程序,但我遇到了一个小问题。 Tab键不会在控件之间切换。
它应该是自动的吗?如果没有,您能告诉我如何实现吗?
我已经制定了一种在编辑框之间切换的算法,这是一个 stub :

case WM_NOTIFY
{
if tab key
{
control_id++;
SetFocus(GetDlgItem(hwnd, control id));
if control_id = max_control_id
{ control_id = min_control_id; }

如果没有简单的方法,那我应该使用我的算法吗?

附注:我尝试添加TABSTOP,但无法正常工作。这是一些不起作用的控件。我正在使用VS 2010 Express,Windows 7 64位。
hwnduser = CreateWindow (TEXT("EDIT"), NULL,
WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP | WS_GROUP,
220, 80, 80, 20,
hwnd, (HMENU) 3, NULL, NULL);
hwndpass = CreateWindow (TEXT("EDIT"), NULL,
WS_VISIBLE | WS_CHILD | WS_BORDER | WS_TABSTOP,
220, 130, 80, 20,
hwnd, (HMENU) 4, NULL, NULL);
CreateWindow(TEXT("button"), TEXT("Login"),
WS_VISIBLE | WS_CHILD | WS_TABSTOP | WS_GROUP,
80,200,100,30,
hwnd, (HMENU) 1, NULL, NULL);
CreateWindow(TEXT("button"), TEXT("Exit"),
WS_VISIBLE | WS_CHILD | WS_TABSTOP,
220,200,100,30,
hwnd, (HMENU) 2, NULL, NULL);

最佳答案

您必须在消息循环中调用IsDialogMessage()。
有关此操作的信息,请参见此article

关于c - C + WinAPI : How to switch Between Controls Using Tab Key?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5691724/

10-12 16:00