我通过调用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发生的唯一事情就是选择第一个控件的文本。有人能帮助我吗?
答案 0 :(得分:5)
传递给IsDialogMessage的窗口句柄是您想要浏览的类似对话框的窗口。您正在通过接收消息的窗口,该窗口可能是编辑控件,而不是顶级窗口。
答案 1 :(得分:0)
你有两个基本的选择:要么把控件放到一个实际的对话框中(你将用DialogBox
(或者它的一个近亲,如DialogBoxEx
调用),或者自己处理标签
在后一种情况下,您需要在输入tab
时作出反应,并将焦点设置为另一个控件。另外,我不记得你是否可以通过WM_NOTIFY
处理这个问题,或者你是否必须对控件进行子类化。