我通过调用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
这些控件。