使用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 100570 E. Palindrome Query Manacher
E. Palindrome QueryTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100570/pro ...
- 线程池QueueUserWorkItem
// Test1.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...
- oracle internal: VIEW: X$KCBKPFS - PreFetch Statistics - (9.0)
WebIV:View NOTE:159898.1 Note (Sure) - Note Mods - Note Refs Error ORA 600 TAR TAR-Info Bug B ...
- IOS 小技巧积累
转自:http://blog.csdn.net/mars2639/article/details/7352012 1. 使用@property和@synthesize声明一个成员变量,给其赋值是时要在 ...
- Android & Eclipse FAQ
一.eclipse中格式化代码快捷键Ctrl+Shift+F失效的解决办法 当我要格式化代码的时候,右键-source-format能够起效,但ctrl+shift+f不好使了. google之后来发 ...
- Android(java)学习笔记113:Android编写代码调用Vibrator震动功能(Bug:按下按钮button始终没有震动)
1.之前我编写的代码是如下: package com.himi.vibrate; import android.app.Activity; import android.app.Service; im ...
- Asp.net封装js的类
using System; using System.Collections.Generic; using System.Text; using System.Web; using System.We ...
- oracle 自增列设置
序列 create sequence sq_1 minvalue maxvalue start increment cache ; 触发器 create or replace trigger 触发器名 ...
- Linux上安装MPEG-1 Layer3(mp3)解码器
今天突然想要在linux上播放音乐,但是打开之后发现缺少了解码器 于是去网上找了解决的方法,说得天花乱坠,不过有个帖子给出了很简单的方法. 以下内容转载于网络 上面提示没有安装解码器,这是因为版权问题 ...
- 【思路、优化】UVa 11491 - Erasing and Winning
Juliano is a fan of the TV show Erasing and Winning, where participants are selected in a draw and r ...