WM5调用系统输入法

原创 2007年10月08日 17:32:00

自定义框架如何与系统输入法连接:

首先要调出输入法:

void CInputPage::OnOpenSip()
{
 if( m_b_btnSip )// 如果打开了那么关闭,如果关闭呢就打开
 {

  m_btn_SIP.SetCaption(_T("手写"));
  HWND SipButton = FindWindow(TEXT("MS_SIPBUTTON"), NULL);
  if( SipButton != NULL)
   ::ShowWindow(SipButton,SW_HIDE);

  m_b_btnSip = false;
  SipShowIM(SIPF_OFF);
  SHSipPreference(m_hWnd, SIP_FORCEDOWN);
 }
 else
 {  

  HWND SipButton = FindWindow(TEXT("MS_SIPBUTTON"), NULL);
  if( SipButton != NULL)
   ::ShowWindow(SipButton,SW_SHOW);

  m_b_btnSip = true;
  SipShowIM(SIPF_ON);
  SHSipPreference(m_hWnd, SIP_UP);
 }

然后接收WM_CHAR消息

LRESULT CInputPage::OnInputChar(WPARAM wParam, LPARAM lParam)
{
 int nwParamFlag = (int)wParam;
 int nlParamFlag = (int)lParam;

 switch(nwParamFlag)
 {
 case 8:
  {
   if( m_nResValNum>0 )
   {
    m_ResValue[m_nResValNum-1] = (TCHAR)('/0');
    m_nResValNum--;
   }
   else
   {
    m_ResValue[0] = (TCHAR)('/0');
    m_nResValNum = 0;
   } 
   break;
  }
 case 13:
  {
   break;
  } 
 case 32:
  {
   break;
  }
 case 18:
  {
   break;
  }
 default:
  {
   if(nwParamFlag>47)
   {
    if( m_nResValNum<INPUTWINDOW_RESVAL_LEN )
    {
     m_nResValNum++;
     m_ResValue[m_nResValNum-1] = nwParamFlag;
     m_ResValue[m_nResValNum] = (TCHAR)('/0');
    }
    else
    {

    }
   }
   break;
  }
 }

 m_input_edt.SetCaption( m_ResValue );
 return CATCHMSG;

}

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:WM5调用系统输入法
举报原因:
原因补充:

(最多只允许输入30个字)