使用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 ...
随机推荐
- 算法:排序----Java选择排序
public static void selectionSort(int[] arr) { int len = arr.length; for (int i = 0; i < len; i++) ...
- POJ 3026 Borg Maze
Borg Maze Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7998 Accepted: 2675 Descrip ...
- [ES6] 19. for ... of
In ES5, we have for ... in: var phones = ["iPhone", "Nexus", "Nokia"]; ...
- dubbo-RPC学习(二) http protocol
dubbo中的协议默认支持很多种,从简单的开始,先解读HttpProtocol吧. dubbo中的http-RPC基于spring web支持的http invoker,web容器默认使用jetty. ...
- 小白日记4:kali渗透测试之被动信息收集(三)--Shodan、Google
搜索引擎 公司新闻动态 重要雇员信息 机密⽂文档 / 网络拓扑 用户名密码 目标系统软硬件技术架构一.Shodan Shodan只搜网络设备.很多设备并不应该接入互联网,却由于本地网络管理员的疏忽和懒 ...
- Android(java)学习笔记77:网络编程的概述
计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 就 ...
- Ubuntu14.04 Kylin下 GO语言环境搭建
sudo apt-get install golang gccgo安装 gcc -v 查看 --enable-languages=c,c++,objc,obj-c++,java,fortran,ada ...
- python爬虫爬取全球机场信息
--2013年10月10日23:54:43 今天需要获取机场信息,发现一个网站有数据,用爬虫趴下来了所有数据: 目标网址:http://www.feeyo.com/airport_code.asp?p ...
- TensorFlow安装与测试
官网:http://tensorflow.org/安装步骤:1.sudo apt-get install python-pip python-dev python-virtualenv 2.virtu ...
- hdu 1059 多重背包 背包指数分块
思路: 这个方法要看<浅谈几类背包问题>这篇论文. #include"stdio.h" #define Max(a,b) (a)>(b)?(a):(b) ],k[ ...