MFC中调用软键盘

1、前提

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

 

2、调用

在需要调用软键盘的响应中添加:

  1. HIMC hIMC = ImmGetContext(pWnd->m_hWnd);   //   接受输入的窗口句柄   
  2. DWORD dwConv, dwSent;  
  3. ImmGetConversionStatus(hIMC,&dwConv,&dwSent);  
  4. if (dwConv & IME_CMODE_SOFTKBD)  
  5.  dwConv &= ~IME_CMODE_SOFTKBD;//   这是关闭软键盘   
  6. else  
  7.  dwConv |= IME_CMODE_SOFTKBD;   //   打开软键盘    
  8. ImmSetConversionStatus(hIMC,dwConv,dwSent);  
  9. ImmReleaseContext(pWnd->m_hWnd,hIMC);   

 

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

 

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

 

在dlg类中加入成员变量

 

  1. public:  
  2.     // 软键盘  
  3.     HIMC m_hIMCSoftKey;  
  4. public:  
  5.     // 软键盘  
  6.     DWORD m_dwConvSoftKey;  
  7. public:  
  8.     // 软键盘  
  9.     DWORD m_dwSentSoftKey;  

 

在oninitdialog中加入

 

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

 

在ondestroy中加入

 

  1. //软键盘  
  2. ImmReleaseContext(g_hwnd,m_hIMCSoftKey);   

 

在onsetfocus中加入

 

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

 

在onkillfocus中加入

 

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

 

 

其他软键盘调用:

ShellExecute(GetSafeHwnd(), NULL, _T("osk.exe"), NULL, NULL, SW_NORMAL);

posted on 2013-04-07 13:25  carekee  阅读(4443)  评论(0编辑  收藏  举报