- 积分
- 455
- 实力分
- 点
- 金钱数
- 两
- 技术分
- 分
- 贡献分
- 分
|
发表于 2007-3-12 17:53:30
|
显示全部楼层
关于中文标题的显示问题
最近研究了一下标题显示中文的问题,与大家探讨一下。
当前的标题定义如下:
typedef struct
{
RECT rc; // 标题框位置
int *icon;// 图标标识
int lgp_id; // 语言包中字符串标识
int lgp_null; // 语言包标识
}HEADER_DESC;
当前仅能显示英文的标题或显示语言包中提供的信息。如下例:
(1)英文
HEADER_DESC gotomenu_HDR={0,0,131,21,/*icon*/(int*)&cfg_ab_icon,(int)"Select number",LGP_NULL};
(2)语言包中的2866号信息
HEADER_DESC gotomenu_HDR={0,0,131,21,/*icon*/(int*)&cfg_ab_icon,2866,LGP_NULL};
如果定义如下中文标题:
HEADER_DESC gotomenu_HDR={0,0,131,21,/*icon*/(int*)&cfg_ab_icon,(int)"选择号码",LGP_NULL}; 则显示的是“选择号码”的汉字内码。
如果用unicode码定义如下: “选择号码” -> 900962E953F77801
HEADER_DESC gotomenu_HDR={0,0,131,21,/*icon*/(int*)&cfg_ab_icon,(int)"\x90\x09\x62\xE9\x53\xF7\x78\x01",LGP_NULL}; 则显示的还是按单字节定义的相应字符串(倒序后也如此)。
后来又尝试用DrawString函数来画标题,但没有成功,可能是消息处理问题,根据没有画,或者显示后又被系统显示标题时刷新了。
但系统的通讯录浏览时,如果拨打电话,显示的号码列表的标题是可以显示中文人名的。
可能有如下两种原因,导致不能显示中文自定义标题。
1、调用的菜单显示处理函数不同,还有一个自绘标题的接口。
2、HEADER_DESC是否存在别的格式定义,支持重绘标题或unicode定义。 |
|