如何通过TAB键在窗口中的控件之间导航

How to navigate between controls in a Window by TAB key?

本文关键字:控件 之间 导航 窗口 何通过 TAB      更新时间:2023-10-16

我通过调用CreateWindow创建了一个窗口,并在上面放置了两个编辑控件。编辑控件具有已启用的WS_TABSTOP样式。我可以更改它的文本,但通过TAB键在控件之间导航不起作用。

我把这个代码放在我的消息循环中:

MSG msg;
while ( GetMessage( &msg, NULL, 0, 0 ) )
{
    if ( !msg.hwnd || !IsDialogMessage( msg.hwnd, &msg ) )
    {
        TranslateMessage( &msg );
        DispatchMessage( &msg );
    }
}

不幸的是,按TAB键导航不起作用,编辑控件也不进行编辑,而按TAB键只会选择第一个控件的文本。有人能帮我吗?

传递给IsDialogMessage的窗口句柄是您想要导航的类似对话框的窗口。您正在传递接收消息的窗口,该窗口可能是编辑控件,而不是顶级窗口。

您有两个基本选择:要么将控件放入实际对话框中(您将使用DialogBox(或其近亲之一,如DialogBoxEx)调用该对话框),要么自己处理选项卡。

在后一种情况下,您需要在输入tab时做出反应,并将焦点设置为另一个控件。顺便说一句,我不记得你是否可以通过WM_NOTIFY处理这个问题,或者你是否必须对控件进行子类化。