如何精确获得宽字符的字符串宽度? 用GetTextExtentPoint32和GETTEXTMETRICS都只对英文字符识别比较精确,但对宽字符来说差距都满大的,怎么办呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 附加一个问题:能不能判断一个字符串是宽的还是窄的?我在vc6里面调试的时候,发现quick watch可以认出中文字符串的。比较不可思议 汉字占两个字节,汉字的第一个字节大于128对于一个非UNICODE字符串,从头开始扫描,如果发现某个字节大于128,则这个字节和它的下一个字节即组成一个汉字 建议把工程设置为Unicode Set。这样所有的字符串都是占用2个字节。就好处理了。引入TCHAR,例如:CString str = _T("VS2005工程");则字符串的个数就是count = sizeof(str)/sizeof(TCHAR);或者count = sizeof(str)/sizeof(wchar_t);或者就是:count = strlen(str); 哦,这样,谢谢baojian88888(机器人)我想知道你是怎么取得一个中文字符串的宽度的呢?我是这样的。把字符串放在char数组里,然后就用GetTextExtentPoint32得到其宽度,这样是不是哪里有问题? 先用SelectObject把字体选进DC,再用GetTextExtentPoint32取得当前字体下字符串的长度(像素) GetTextExtentPoint32和是不是宽字符没有关系,是根据DC中的字体和实际内容来的。 GetTextExtentPoint32非常之不准。需要准确计算的时候,我都是自己算的。nSize : 字体大小int nW = (int)(nSize / 2); // 一个英文字符的宽度int nW = nSize ;// 汉字或特殊字符这样还是比较准的 基于当文档的程序 键盘模拟,将回车替换成SHITF+回车 图像 找点问题 命令行 而 DIALOG不行? 为什么SOCKET最多只能接收两次发送过来的消息 【转贴】CSDN是垃圾程序员的回收站 今天在JAVA那看到的贴子. 如何禁用和恢复右下角儿的网络连接!急!!!................................ 求救! 关于激活窗口的问题? 关于NetBios函数的一个问题 窗口类对象指针有值,但窗口句柄值为0,说明什么? [问题]请问 C++ 中像 JUnit, NUnit 一样的测试工具是什么
对于一个非UNICODE字符串,从头开始扫描,如果发现某个字节大于128,则这个字节和它的下一个字节即组成一个汉字
引入TCHAR,
例如:CString str = _T("VS2005工程");
则字符串的个数就是count = sizeof(str)/sizeof(TCHAR);
或者count = sizeof(str)/sizeof(wchar_t);
或者就是:count = strlen(str);
我想知道你是怎么取得一个中文字符串的宽度的呢?
我是这样的。
把字符串放在char数组里,然后就用GetTextExtentPoint32得到其宽度,这样是不是哪里有问题?
需要准确计算的时候,我都是自己算的。nSize : 字体大小
int nW = (int)(nSize / 2); // 一个英文字符的宽度
int nW = nSize ;// 汉字或特殊字符这样还是比较准的