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