自定义框架如何与系统输入法连接:
首先要调出输入法:
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;
}