MFC中调用软键盘

1、前提

//头文件中添加包含文件 #include <Imm.h> //源文件中添加lib文件 #pragma comment(lib,"imm32.lib")

2、调用

在需要调用软键盘的响应中添加:
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);

以上内容转自http://xiaoyueweiguang.blog.163.com/blog/static/117267556200991210485065/

 

修改一下,使得mfc中的输入框在获取输入焦点时使用软键盘,失去焦点时不使用软键盘

 

在dlg类中加入成员变量

public: // 软键盘 HIMC m_hIMCSoftKey; public: // 软键盘 DWORD m_dwConvSoftKey; public: // 软键盘 DWORD m_dwSentSoftKey;

在oninitdialog中加入

g_hwnd=this->GetSafeHwnd(); //软键盘 m_hIMCSoftKey = ImmGetContext(g_hwnd);// 接受输入的窗口句柄 ImmGetConversionStatus(m_hIMCSoftKey,&m_dwConvSoftKey,&m_dwSentSoftKey);

在ondestroy中加入

//软键盘 ImmReleaseContext(g_hwnd,m_hIMCSoftKey);

在onsetfocus中加入

m_dwConvSoftKey |= IME_CMODE_SOFTKBD; // 打开软键盘 ImmSetConversionStatus(m_hIMCSoftKey,m_dwConvSoftKey,m_dwSentSoftKey);

在onkillfocus中加入

m_dwConvSoftKey &= ~IME_CMODE_SOFTKBD;// 这是关闭软键盘 ImmSetConversionStatus(m_hIMCSoftKey,m_dwConvSoftKey,m_dwSentSoftKey);

 

你可能感兴趣的:(mfc)