让输入焦点移动到下一个编辑框

方法:

1、放在缺省函数中实现ONOK(),在窗口默认的OK按钮上,添加以下代码:

GetNextDlgTabItem(GetFocus())->SetFocus();

并注释:CDialog::OnOK();

即可完成将输入焦点移到下一个编辑框的功能。


其它:

1、通过捕获键盘上的按键消息,然后在消息的响应函数当中将输入焦点移动到下一个编辑框,现在的编辑框是一个控件,我们可以针对编辑框去生成一个类来完成这个功能;

2、通过去修改编辑框控件原先的窗口过程:也就是说我们自己去编写一个窗口过程然后去替换MFC给我们准备的窗口过程,我们知道所有的消息都要到我们的窗口过程中来报道,那么在我们自己写的窗口过程当中,就可以判断一下消息是否是回车字符,如果是就可以将输入焦点移动到下一个编辑框。

窗口过程的设置是在设计窗口类的时候去指定的,我们在窗口创建完成之后如何去修改窗口类的窗口过程尼?我们用到一个函数:

SetWindowLong();第一个参数是要改变的窗口句柄,第二个是偏移量,第三个是新的值,


3、WM_INITDIALOG消息,是当对话框及其上面的子控件创建完成后,对话框将要显示之前发送的一个消息。我们可以对它进行响应。


4、窗口过程类:WNDPROC

5、重写窗口过程:如何写,去查一下窗口类WNDCLASS,在这个类里有一个参数就是窗口过程,将其拷过去,重新命名即可。重写即可。

6、获得当前窗口的下一下窗口的句柄:GetNextWindow(),

另一个获取窗口句柄的函数:GetWindow();

将焦点移到下一个编辑框:GetNextDlgTabItem()


知识点:

1、当我们捕获一个消息的时候随着消息会传入一个句柄,

2、TAB的顺序:在Layout菜单下,Tab Order.点击它,在窗口上就会出现各个了控件的Tab编号 ,它的顺序是可以改变的。

猜你喜欢

转载自blog.csdn.net/dyz_123456/article/details/70740087
今日推荐