如何通过TAB键在Window中的控件之间导航?

时间:2012-03-18 20:54:05

标签: c++ windows

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

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

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

不幸的是,通过TAB导航不起作用,编辑控件没有编辑,按TAB发生的唯一事情就是选择第一个控件的文本。有人能帮助我吗?

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:0)

你有两个基本的选择:要么把控件放到一个实际的对话框中(你将用DialogBox(或者它的一个近亲,如DialogBoxEx调用),或者自己处理标签

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