1.直接运行微软系统自带的虚拟键盘程序“osk.exe”在普通MFC项目中可以调用ShellExecute或者WinExec方法来直接运行微软系统自带的虚拟键盘程序“osk.exe”,十分方便一句话就可以搞定。ShellExecute:
ShellExecute(GetSafeHwnd(), NULL, _T("osk.exe"), NULL, NULL,SW_NORMAL);WinExec: WinExec("osk.exe",SW_NORMAL); 程序运行出来的界面: 2.添加"imm.h"和"imm32.lib"来调出软键盘在你要调出软键盘的代码中引入"imm.h"头文件(若项目里没有这两个文件,则将这两文件复制到项目根目录里,并将"imm.h"添加到工程里)#include
#pragma comment(lib,"imm32.lib") 然后在调出软键盘的消息事件中添加如下代码即可:HIMC hIMC = ImmGetContext(pWnd->m_hWnd); //获取接受输入的窗口句柄 DWORD dwConv, dwSent;
ImmGetConversionStatus(hIMC,&dwConv,&dwSent);
if (dwConv & IME_CMODE_SOFTKBD)
dwConv &= ~IME_CMODE_SOFTKBD;//关闭软键盘 else
dwConv |= IME_CMODE_SOFTKBD; //打开软键盘 ImmSetConversionStatus(hIMC,dwConv,dwSent); //打开或关闭软键盘ImmReleaseContext(pWnd->m_hWnd,hIMC); 但这种方法似乎只能在输入法开启的状态下才可以打开软键盘 3.在WINCE上运行的MFC中使用SipApi来调出软键盘为项目添加"sipapi.h"头文件,并在代码中把这个头文件包括进来调出软键盘的方法调用起来很简单,就一句话而已。打开软键盘: SipShowIM(SIPF_ON);关闭软键盘: SipShowIM(SIPF_OFF); 运行效果: