我的一段程序如下: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);
}
输出英文字符没问题,但怎么就不能输出中文字符呢?
真的不明白了。
请教各位。
{
// 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);
}
输出英文字符没问题,但怎么就不能输出中文字符呢?
真的不明白了。
请教各位。
我把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);
}
我也没做过这东东...我只是提供一个思路...
在输入英文的时候是你每按下键盘上的一个按键就会发出一个WM_CHAR...而输入中文的时候...是输入法软件接收了wm_char并做出处理...每打出一个汉字和全角字符便会向你的窗口发出一个WM_IME_CHARR的消息...而具体怎么从参数中或得这个中文字符你还得去MSDN中看wm_ime_char的定义...
依你所言,我我改了一下它的语言属性,还是不行。