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);
其他軟鍵盤調用:
ShellExecute(GetSafeHwnd(), NULL, _T("osk.exe"), NULL, NULL, SW_NORMAL);
