我的一段程序如下:BOOL CCharDlg::PreTranslateMessage(MSG* pMsg) 
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message==WM_CHAR) {
   s_text+=pMsg->wParam;
CDC *pDC=GetDC();
pDC->SetBkMode(TRANSPARENT);
                  pDC->TextOut(50,50,s_text);
return 0;
}
return CDialog::PreTranslateMessage(pMsg);
}
输出英文字符没问题,但怎么就不能输出中文字符呢?
真的不明白了。
请教各位。

解决方案 »

  1.   

    因为用输入法输入的汉字并不会产生WM_CHAR!!
      

  2.   

    请参考MSDN中的Input Method EditorPlatform SDK Documentation\Base Services\International Features\Input Method Editor
      

  3.   

    To: kingcom_xu:
    我把WM_CHAR改成了WM_IME_CHAR,还是不行,
    这下子连英文输入都不行了。
    请问该如何解决呢?期待你的高见。BOOL CCharDlg::PreTranslateMessage(MSG* pMsg) 
    {
    // TODO: Add your specialized code here and/or call the base class
    if(pMsg->message==WM_IME_CHAR) {
       s_text+=pMsg->wParam;
    CDC *pDC=GetDC();
    pDC->SetBkMode(TRANSPARENT);
                      pDC->TextOut(50,50,s_text);
    return 0;
    }
    return CDialog::PreTranslateMessage(pMsg);
    }
      

  4.   

    oh my god...你不能单单接收这个消息呀...而且你得看看这个消息的具体定义呀...
    我也没做过这东东...我只是提供一个思路...
    在输入英文的时候是你每按下键盘上的一个按键就会发出一个WM_CHAR...而输入中文的时候...是输入法软件接收了wm_char并做出处理...每打出一个汉字和全角字符便会向你的窗口发出一个WM_IME_CHARR的消息...而具体怎么从参数中或得这个中文字符你还得去MSDN中看wm_ime_char的定义...
      

  5.   

    看看Dialog的语言属性是否为GB2312.
      

  6.   

    To:allencheng:
    依你所言,我我改了一下它的语言属性,还是不行。