MFC中调用软键盘


1、前提

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

 

2、调用

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

[cpp]   view plain copy
  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类中加入成员变量

 

[cpp]   view plain copy
  1. public:  
  2.     // 软键盘  
  3.     HIMC m_hIMCSoftKey;  
  4. public:  
  5.     // 软键盘  
  6.     DWORD m_dwConvSoftKey;  
  7. public:  
  8.     // 软键盘  
  9.     DWORD m_dwSentSoftKey;  

 

在oninitdialog中加入

 

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

 

在ondestroy中加入

 

[cpp]   view plain copy
  1. //软键盘  
  2. ImmReleaseContext(g_hwnd,m_hIMCSoftKey);   

 

在onsetfocus中加入

 

[cpp]   view plain copy
  1. m_dwConvSoftKey |= IME_CMODE_SOFTKBD;   //   打开软键盘    
  2. ImmSetConversionStatus(m_hIMCSoftKey,m_dwConvSoftKey,m_dwSentSoftKey);   

 

在onkillfocus中加入

 

[cpp]   view plain copy
  1. m_dwConvSoftKey &= ~IME_CMODE_SOFTKBD;//   这是关闭软键盘   
  2. ImmSetConversionStatus(m_hIMCSoftKey,m_dwConvSoftKey,m_dwSentSoftKey);   

 

 

其他软键盘调用:

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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM