请教支持多语言的问题!

fandh 2005-09-06 12:18:04
开发时遇到这样一个问题,用一个RICHEDIT输入一些字(包括各种语言,RICHEDIT支持各种语言),但是,我取出来时,由于牵涉到阿拉伯语等一些其他语言,我只能用UNICODE取,大部分语言都是从左向右读写,但是如阿拉伯语、希伯来语等都是从右向左读写,现在通过取得字体,可以得到CHARFORMAT2里面的bCharSet,但是,我如何知道从左向右还是从右向左?请各位指教!多谢!!!!
...全文
210 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
shadowWind 2005-11-12
  • 打赏
  • 举报
回复
mark
fandh 2005-09-06
  • 打赏
  • 举报
回复
oyljerry(【勇敢的心】→ ㊣MS-My Dream√㊣)
不明白你的意思,我想知道如何判断!不要告诉我将每种语言都自己先试一遍,枚举出来,这样的話,我还不如去海边筛沙算了,还写什么程序呀^_^
老夏Max 2005-09-06
  • 打赏
  • 举报
回复
控件只要设置了正确的字符集,就能正确的显示信息。至于输入习惯可能和每种语言有关,好像没有什么特别的文件对其说明,也没有相关的API对其进行操作(设置、获得)。
oyljerry 2005-09-06
  • 打赏
  • 举报
回复
自己判断,需要从左到右还是从右到左
fandh 2005-09-06
  • 打赏
  • 举报
回复
vcleaner(我没当大哥很久了.......) 感谢您的回帖
但是我想得到的是从左到右还是从右到左,字体我可以从rechedit里面取到!
老夏Max 2005-09-06
  • 打赏
  • 举报
回复
你可以从CRichEdit派生自己的类,m_hFont必须为成员变量。
老夏Max 2005-09-06
  • 打赏
  • 举报
回复
创建字体,设置RichEdit控件的字体属性。参考:
void CEditCtrl::SetEditFont()
{
if(::IsWindow(m_hWnd))
{
LOGFONT lf;
memset(&lf, 0, sizeof(lf));
GetObject(GetFont(), sizeof(lf), &lf);
BYTE cCharSet;
switch(GetSystemDefaultLangID())
{
case 0x411:
cCharSet = SHIFTJIS_CHARSET;
break;
case 0x0404:
cCharSet = CHINESEBIG5_CHARSET;
break;
case 0x0804:
case 0x0c04:
case 0x1004:
cCharSet = GB2312_CHARSET;
break;
case 0x0412:
case 0x0812:
//bug 150289
// cCharSet = JOHAB_CHARSET;
cCharSet = ANSI_CHARSET;
break;
default:
cCharSet = ANSI_CHARSET;
break;
}
lf.lfCharSet = cCharSet;
if(m_nNoteType == 3)
lf.lfHeight = -14;
else
lf.lfHeight = -12;
if(m_hFont != NULL)
DeleteObject(m_hFont);
m_hFont = CreateFontIndirect(&lf);
if(m_hFont != NULL)
{
HDC hdc = GetDC();
SelectObject(hdc, m_hFont);
SetFont(m_hFont);
GetTextMetrics(hdc, &m_mt);
ReleaseDC(hdc);
}
}
return;
}
fandh 2005-09-06
  • 打赏
  • 举报
回复
看样子我真该去筛沙,我真的将所有字体遍历了一下,结果发现仅仅有几个代码页字符才是从右向左,其他的都是从左向右,好了,感谢大家,散分!!!
vingo888 2005-09-06
  • 打赏
  • 举报
回复
1、对于所有字符的操作都采用unicode 的形式
2、对于从右向左读取的语言也不是很多,得到他们unicode 编码范围
3、在某一个固定的位置得到一个字符,判断它的unicode 编码范围是不是在上面的从右向左读取的情况中

BTW :对于 CEditCtrl::SetFont() 个人觉得不应该使用系统默认的字符集,应该使用用户默认的字符集 GetUserDefaultLangID 。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧