我想用UNICODE编码通过GetCharacterPlacement函数转换成某个字库中相应的索引号。
WCHAR glyphs[12];
memset(glyphs,0,sizeof(WCHAR)*12); gcp.lStructSize = sizeof(GCP_RESULTSW);
gcp.lpOutString = NULL;
gcp.lpDx = NULL;
gcp.lpCaretPos = NULL;
gcp.lpOrder = NULL;
gcp.lpGlyphs = glyphs;
gcp.nGlyphs = i;
//GetGlyphIndicesW(pDC->GetSafeHdc(),str,i,glyphs,0);
GetCharacterPlacementW(pDC->GetSafeHdc(),str , i, 0,
&gcp,GetFontLanguageInfo(pDC->GetSafeHdc()));
::ExtTextOutW(pDC->GetSafeHdc(),0,0,0x16,&ret,glyphs,i,NULL);
str:UNICODE字串,glyphs是返回的索引値。
我想转换的是泰语。
现在有一个很奇怪的问题,安装和不安装泰语(就是在控制面版->区域选项中->系统的语言设置中有那几个语言打上勾了)glyphs的结果是不一样的,但用ExtTextOutW显示结果却是一样的,注意只有很少的字符会有这种情况。谁能解释这种情况呢?答对了我另开帖给1000分。
WCHAR glyphs[12];
memset(glyphs,0,sizeof(WCHAR)*12); gcp.lStructSize = sizeof(GCP_RESULTSW);
gcp.lpOutString = NULL;
gcp.lpDx = NULL;
gcp.lpCaretPos = NULL;
gcp.lpOrder = NULL;
gcp.lpGlyphs = glyphs;
gcp.nGlyphs = i;
//GetGlyphIndicesW(pDC->GetSafeHdc(),str,i,glyphs,0);
GetCharacterPlacementW(pDC->GetSafeHdc(),str , i, 0,
&gcp,GetFontLanguageInfo(pDC->GetSafeHdc()));
::ExtTextOutW(pDC->GetSafeHdc(),0,0,0x16,&ret,glyphs,i,NULL);
str:UNICODE字串,glyphs是返回的索引値。
我想转换的是泰语。
现在有一个很奇怪的问题,安装和不安装泰语(就是在控制面版->区域选项中->系统的语言设置中有那几个语言打上勾了)glyphs的结果是不一样的,但用ExtTextOutW显示结果却是一样的,注意只有很少的字符会有这种情况。谁能解释这种情况呢?答对了我另开帖给1000分。
解决方案 »
- 树形控件显示Access数据库中的数据
- 关于OnSize函数的问题!
- 新手求教,如何从HDC中得到对应地图片,并却得到图片的BYTE流
- 编译含有gdiplus的工程 时出现错误 gdiplusimaging.h(22) : error : 'ImageFormatUndefined' : undeclared identifier. Thanks.
- 自定义控件,加到sizingctrlbar中,为何消息映射无效?
- 我想实现一个带关键字的自定义数据结构的类似队列的东西,用list还是map比较好?
- What the hell
- 問一個關於vpn网絡的問題,進來有分!
- 刚开始学习C++,问题多多,各位老大不要见怪
- 要求做一个子类化的一组输入对话框,请大家说一下做法
- 为什么我的socket只能够接收广播的数据呢?
- 搜索了好久,未果,高分求助(菜鸟级),如何获得正确的返回值。
glyphs的结果虽然不一样的,但用ExtTextOutW显示结果却是一样的,
这里我还有一个很重要的问题没有说,虽然ExtTextOutW显示结果是一样,但位置是稍有一点不同的。
但如果我想用GetCharacterPlacementW在不安装泰语的环境中得到与安装泰语的环境中结果一样,能做到吗?
我会去好好看一下DDI interface,FengYuanMSFT能不能告诉我在DDI interface的那部份能找到呢?非常感谢
但我的英语不是很好,看来得靠 FengYuanMSFT(袁峰 www.fengyuan.com)大侠的帮忙了,先行谢过了.我晚上一再去下裁DDK来看看.