实例:
A程序需要向外部B程序发文本消息, B程序是外部已存在的,无法修改.
测试发送WM_CHAR消息,英文和数字都能成功, 但是发送中文就是很奇怪的乱码.
原因:
如果字符是汉字(或其它文字如韩文,日文等等),则该字符对应的虚拟键盘码高位不为0,这样得到的字符就是不正确的。
解决方案:
要发送的字符和 0xFF 做与操作即可.
示例代码:
<span style="white-space:pre"> </span>CString m_strMsg = _T("测试,你好!");
<span style="white-space:pre"> </span>m_strMsg += _T(" \r\nQQ助手.\r\nBy shortCoder QQ:981455795");
for(i=0;i<m_strMsg.GetLength();i++)
{
::PostMessage(m_hQQ/*目标窗体的句柄*/,WM_CHAR,m_strMsg.GetAt(i) & 0xFF,0);
}
示例为部分代码,请合理参考.