使用WM_PASTE 和 WM_CHAR 消息时中文乱码总结
当我们需要设置编辑框显示文本的时候,如果其它方式无法实现,可以试试WM_PASTE 和 WM_CHAR。
但使用这两种消息很容易出现中文乱码的情况,这一般是编码问题,可参考如下几点:
1,中文应采用UNICODE编码。
2,WM_PASTE关键点在于粘贴板数据的设置:
1,SetClipboardData 的数据格式应该设置为 CF_UNICODETEXT
2,GlobalAlloc 最好设置为 GMEM_MOVEABLE, 并且cpy字符串时要使用unicode编码字符串。
3,WM_CHAR关键点:
1,原始字符串unicode类型
2,取出要发送的中文的时候直接取出完整汉字,不要按位。一个汉字只需要SendMessage一次!不要被抄来抄去的文章给忽悠了。
4,当然,其实首先要确定英文是正常的。也就是程序本身没有写错哦
示例代码:
WM_PASTE 前的粘贴板设置函数
void SetClipBoardText(TCHAR *szText)
{
if (::OpenClipboard(GetSafeHwnd()) && ::EmptyClipboard())
{
int iBufLen = lstrlen(szText);
HGLOBAL hMem = GlobalAlloc( GMEM_MOVEABLE, iBufLen + );;
char *pMem;
if(hMem)
{
pMem = (char*)GlobalLock(hMem);
memcpy_s(pMem,iBufLen, szText, iBufLen);
GlobalUnlock(hMem);
EmptyClipboard();
SetClipboardData(CF_UNICODETEXT,hMem);
}
CloseClipboard();
}
}
WM_CHAR的使用demo:
CString strFull = L"今天天气不错333333";
HWND hwWeb = (HWND)0x0013044E; for(int i= ; i< strFull.GetLength() ; i++)
{
PostMessage(hwWeb,WM_CHAR,strFull[i] ,);
}
使用WM_PASTE 和 WM_CHAR 消息时中文乱码总结的更多相关文章
- SpringMVC学习系列-后记 解决GET请求时中文乱码的问题
SpringMVC学习系列-后记 解决GET请求时中文乱码的问题 之前项目中的web.xml中的编码设置: <filter> <filter-name>CharacterEnc ...
- curl提交数据时中文乱码
1.使用curl提交数据时中文乱码解决: <?php $testJSON=array('name'=>'中文字符串','value'=>'test'); foreach ( $tes ...
- maven测试时中文乱码问题解决方法
pom.xml增加-Dfile.encoding=UTF-8配置,如下: <plugin> <!--升级到新版本解决控制台乱码问题--> <groupId>org. ...
- Mybatis新增mysql时中文乱码
Mybatis新增mysql时中文乱码 1.设置数据库连接的编码(jdbc.properties) jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:my ...
- 使用PLSQL Developer时中文乱码问题
使用PLSQL Developer时中文乱码问题 一.问题: 执行一些查询结果有中文的SQL语句,显示不了中文,显示???. 二.产生的原因: 客户端与服务器端的编码不一致造成的. 三.解决方案: 1 ...
- mysql 恢复数据时中文乱码
mysql恢复数据时中文乱码,解决办法. 用source命令导入mysql数据库怎么设置中文编码 1.导出数据时指定编码在导出mysql sql执行文件的时候,指定一下编码格式: mysqldump ...
- jquery中使用serialize() 序列化表单时 中文乱码问题
序列化中文时之所以乱码是因为.serialize()调用了encodeURLComponent方法将数据编码了 解决方法就是进行解码 1 原因:.serialize()自动调用了encodeURICo ...
- Mybatis + Mysql 插入数据时中文乱码问题
近日跟朋友一起建立一个项目,用的是spring+mybatis+mysql. 今天碰到一个mybatis向mysql中插入数据时,中文显示为'???'的问题,拿出来说下. 对于数据库操作中出现的中文乱 ...
- [转]解决GET请求时中文乱码的问题
原文地址:http://www.cnblogs.com/liukemng/p/4178882.html 之前项目中的web.xml中的编码设置: <filter> <filter-n ...
随机推荐
- Codeforces Gym 100002 D"Decoding Task" 数学
Problem D"Decoding Task" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com ...
- c# socket通信较完善方案
c#的socket通信应用.文件较多.附件为工程. core AbstractBytesWorker.cs 字节工作器(基类),用于用于同一不同功能的字节工作器 BinaryHand.c ...
- C# 图片保存到数据库和从数据库读取图片并显示
图片保存到数据库的方法: public void imgToDB(string sql) { //参数sql中要求保存的imge变量名称为@images //调 ...
- 飘逸的python - 编码杂症之在字符串前面加u
有时候我们从其它地方接受的字符串经过艰难跋涉,它变了个样.比如收到的是'\u6253\u602a\u8005'而不是u'\u6253\u602a\u8005'. 明明肉眼看起来只需要加个u,但是怎 ...
- webqq 获得好友列表hash算法 获得最新hash的方法
webqq获得好友列表的hash算法,大约每一个月中旬会变动一次.知道怎么获得他就能够了. js文件路径 http://web.qstatic.com/webqqpic/pubapps/0/50/eq ...
- orcle经常使用语句
--1.创建暂时表空间 create temporary tablespace AUTOMONITORV5_temp tempfile 'D:\ORACLE\KARL\ORADATA\ORCL\AUT ...
- java 对象序列化
java 对象序列化 package org.rui.io.serializable; import java.io.ByteArrayInputStream; import java.io.Byte ...
- Windows 7中使用Eclipse 使用CDT and WinGW 开发C/C++(转载)
以前使用visual studio 2010编写C/C++,后来接触了Eclipse后,据说eclipse也可以编写C/C++,以前觉得Visual studio 2010还蛮不错的,也没有多大好奇心 ...
- Android(java)学习笔记83:finally关键字的作用
package cn.itcast_07; import java.text.ParseException; import java.text.SimpleDateFormat; import jav ...
- iOS之与JS交互通信
随着苹果SDK的不断升级,越来越多的新特性增加了进来,本文主要讲述从iOS6至今,Native与JavaScript的交互方法 一.UIWebview && iframe && ...