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

我通过调用CreateWindow创build了一个窗口,并在其上放置了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发生的唯一的事情是select第一个控件的文本。 有谁能够帮助我?

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

你有两个基本的选择:把控件放到一个实际的对话框中(你将用DialogBox (或者像DialogBoxEx这样的近亲)调用它,或者你自己来处理Tab键。

在后一种情况下,您需要在输入tab时作出反应,并将焦点设置到其他控件。 不习惯,我不记得你是否可以通过WM_NOTIFY来处理这个问题,或者你是否需要WM_NOTIFY这些控件。