请问:怎么在MFC对话框中实现模拟键盘输入

请教:如何在MFC对话框中实现模拟键盘输入
如题,简单的说,我的问题是这样的:
我有一个对话框A,里面有两个编辑框:edit1和edit2,另有一个对话框B,里面是10个按键,分别代表小键盘上的0~9。我想实现这样的功能:点击对话框A的一个编辑框,如edit1,弹出对话框B,单击B中的按键,可以在edit1中出现相应的数字;同样,点击edit2,也会弹出对话框B,但点击按键,数字在edit2中出现。
总之,就是一个模拟键盘的调用和使用的问题。小弟才疏学浅,还请各位大侠不吝赐教。多谢!

------解决方案--------------------
你在WM_SETFOCUS消息的处理函数中处理对话框弹出,然后将那些0~9做成按钮,处理按钮点击消息,按照你要求的处理.
------解决方案--------------------
弹出对话框的可以在edit里面响应ON_EN_CHANGE
在B中点击按钮,然后可以给A发消息SendMessage()就可以传递数据了
------解决方案--------------------
Sendinput,或者用KB_Event........
------解决方案--------------------
探讨
嗯,明白了。键盘的弹出没有问题,现在的问题是如何实现在B中点按键,在A中的编辑框中出现数字。
是否需要知道编辑框的句柄或是ID呢?应如何实现这一操作呢?能具体解答一下吗?多谢!

引用:
你在WM_SETFOCUS消息的处理函数中处理对话框弹出,然后将那些0~9做成按钮,处理按钮点击消息,按照你要求的处理.


------解决方案--------------------
探讨
引用:
弹出对话框的可以在edit里面响应ON_EN_CHANGE
在B中点击按钮,然后可以给A发消息SendMessage()就可以传递数据了


哦,ON_EN_CHANGE响应,我可以试一试。我一开始用EN_SETFOCUS响应,结果是小键盘对话框总是关不掉,呵呵,这是怎么回事呢?
还有,用SendMessage()函数如何实现不同对话框,不同控件之间的信息通讯呢?希望能得到您的详解,谢谢!

------解决方案--------------------
我刚刚做了一个数据输入键盘和一些单位建的输入,输入到edit里面显示的。只是我模拟的数字键盘和edit在同一个对话框,蝈蝈如果有需要的话可以发给你
------解决方案--------------------
你可以用GetDlgItem(ID_EDITA)->SetWindowText(str); str是具体的数字。如果要给B中写,可以用ID_EDITB。
------解决方案--------------------
探讨


你必须得到A的句柄 也就是主对话框句柄 用AfxGetMainWnd来得到 然后可以映射到其中的任意一个Edit控件



AfxGetMainWnd函数,嗯...不错,这种方法可行。但如果不是主对话框该怎么办呢?也就是说,如果我要打字的对话框(当然还有键盘对话框了)都不是主对话框,该如何得到这样对话框的句柄呢?有什么好办法吗?
另外,我看有人用过 FromHandle 函数,它可以实现获取任意窗口句柄的操作吗?还是有其它别的什么好方法?

------解决方案--------------------
可以自定义消息,在网上例子相对比较多.
也可以获取对话框A的指针,然后在对话框B中通过该指针对其中控件进行操作.
------解决方案--------------------
在对话框B中的按键函数中添加
AXXXX*pDlg=(AXXXX*)this->GetParent();
pDlg->m_EditCtrl.SetWindowText("XXX");

可以实现数据传递.
 然后在弹出对话框B的时候,添加判断,传递一个变量给对话框B,标志是对edit1

还是对edit2操作..

------解决方案--------------------
自定义消息类型,A窗口就能获得B的信息了。
------解决方案--------------------
探讨
引用:
Sendinput,或者用KB_Event........

大侠,小弟初学MFC,还不懂Sendinput函数是如何使用的呢,能举个小例子吗?如何模拟键盘按键呢?
另外,我目前用的是:
keybd_event(虚拟键值, 0, 0, 0);
keybd_event(虚拟键值, 0, KEYEVENTF_KEYUP, 0);
来模拟按键,但只能实现在同一对话框里输入,不能对其它对话框输入。请问有什么好办法吗?多谢!

------解决方案--------------------
那不是很简单,找到那个Edit的句柄,发送WM_SETTEXT就可以了
------解决方案--------------------
探讨
引用:
那不是很简单,找到那个Edit的句柄,发送WM_SETTEXT就可以了

不错,大侠,就是这个思想。可是小弟才疏学浅,目前只能实现在同一对话框里的找句柄和发送,跨对话框的就不会了,呵呵,惭愧呀!还请大侠多多指教啊,小弟谢过了!!

------解决方案--------------------
探讨

但只有两点小遗憾,一是只能对同一对话框输入(怎么能实现多框可选择的输入呢?)。二是只能对主对话框的编辑框输入,如果是主框调用A框,A框调用B框,点击B框的按钮在A框中打数,又该怎么修改呢?

------解决方案--------------------
我这边有个例子,是获得另外一个窗体中的一个按钮的句柄,你换成获得文本框的就行了