你的分享就是我们的动力 ---﹥

wince MFC小键盘调用,该如何处理

wince MFC小键盘调用
应用程序,自己做了个数字键盘方便驶入一些参数和用户密码,键盘上有个编辑框显示输入内容
用户密码是点击按钮弹出键盘,然后输入密码,正确进入设置;
参数设置是点击编辑框弹出键盘,输入参数,参数显示在键盘的输入框;
现在的问题是怎么判断键盘是从按钮弹出的还是编辑框弹出的,然后进行对应操作;如果是从编辑框弹出的,怎么把键盘编辑框中的内容传给点击的编辑框。
------解决思路----------------------
按照你的提问,你的键盘应该就不是标准的 SIP 的,而是按一般的窗体来实现的。这样,所有的控制逻辑都只能自己实现。
建议你仿 SIP 的思路,但控制起来会很麻烦:点击的是哪个的是哪个的是哪个控件,只有控件所属的窗体最清楚,其它的窗体想要知道就必须让控件所属的窗体主动去通知;输入完成后,通过如 WM_COPYDATA 之类,将输入的数据发送到控件所属的窗体,显示到控件由这个窗体来完成。

如果 LZ 你觉得太复杂,那么建议你输入键盘的实现按标准的 SIP 来做,这样就不复杂了。因为你将复杂的东东放到了 SIP 中,但 SIP 也是要你自己实现的。虽然微软有示例代码,网上也有相关的知识点,但真正实现需要一定的时间和能力。
------解决思路----------------------
分享我的做法,我的键盘是自己做的普通窗体,上面有一个edit,下面是按钮。界面上的edit或者button点击后需要编译的话,直接将内容显示内容传递给键盘,然后键盘才调用domodel,这样内容就能初始化到edit里面,在OnOK中将键盘的edit用户输入的内容保存到成员变量CString中,当domodel返回时判断是IDOK的话调用接口获得新的内容,然后再显示到原来界面中。这样不用担心输入的edit被挡住,以及焦点问题。

至于你说的“怎么判断键盘是从按钮弹出的还是编辑框弹出的”,你在OnClicked中调用,那么不是可以确定是那个控件触发的吗,还要区分什么???