【求助】利用X Free86函数,实现中文显示的问题
我的项目本地化,使用的图形化显示函数都是X11R6的库函数(X Free 86),我现在碰到了一个比较棘手的问题,所以求助。$ [# ]! c9 y* k% c1 g; N5 @% e1 u: F- Z
我需要显示纯文本内容,自己定义的结构体如下:
0 N) L1 O3 v! E! N8 T3 \typedef struct
% @; n& ~' ` K1 w# G1 v+ F$ s# G{ M+ T* k# O' i! q; z+ g' T9 ]" A
char *pchLabel; /* Label string for the panel */2 E% {% w) U2 i# x% x9 {2 k
int iTextPosition; /* Text area starting position
) w7 N# Z: V0 u (1 - 100) for default put 0 */7 N( Q/ ~( G* ~# D# V2 e& l/ e) ]0 M
TextType eTextType; /* Text Data type - ceMixedCase, ceUpperCase,/ A+ [: u5 {0 z& P4 ^7 p
ceLowerCase */6 a& n. U8 A# F2 Z! B
int iFieldLength; /* Length of the text area */1 M5 L W1 K8 {2 ?
int iStringLength; /* Length of the text string */7 O) O4 \0 t, q Q @
char *pchText; /* Contents to the text field */
. I# x1 M6 d% K4 n) D1 x/ G char *pchUnits; /* Units label */
7 B9 T+ x7 s6 _/ ? char *pchDefault; /* Default string i */# Z5 z- \* A& s
unsigned uAttributes; /* ceInsensitive | ceNoneditable | ceDefButton */4 J! g& A$ j6 }6 S
TextCB callback; /* Text field callback */# t/ B9 J7 Z l
void *pvData; /* Callback data */9 x' n: R1 M4 [" ]1 ~' E0 r9 D- L
} TextPanel;/ O* j& U) C* s% {
4 L( x2 L9 w, X+ x& X' O. ^# e# zpchLabel是显示标签名,而pchText是显示标签后的具体提示内容的,例如:
' R' E7 w6 p2 D9 g, K Wire Name: LOOP WIRE* o& y$ n8 R: X" S9 `
pchLabel的数据是Wire Name: ,而pchText是 LOOP WIRE。6 y: L- e! U7 i+ N( k; [0 G% R
/ X1 J2 E& u: r$ j现在,我们用来实现pchText的最终显示的函数实现语句是:
* Z, r* {! d, m _pchText( STRDUP( pchText ) ), -------> 赋值
% `5 O8 w5 X7 c/ r3 { .......& B0 S, p$ r. i2 I* D$ w
XmTextFieldSetString (_widget, _pchText); --------->显示& T7 o; z$ Y, b" Y6 S
即,将_pchText的数据信息显示 _widget上。 q0 G5 o) f7 S1 Q# q. ?1 u
现在的问题是,XmTextFieldSetString() 函数并不支持中文数据的显示。即如果
0 }7 y8 t. a* K/ z. B_pchText的数据是中文编码数据,则显示的将是乱码。我也曾尝试使用宽编码函数# o8 [$ A9 ~; e$ ~
XmTextFieldSetStringWcs(),但还是不行,也可能是我使用方法的问题。" x0 a! P- D6 o3 }( k! R
不知道哪位大虾知道X Free 86下有什么相似的函数可以直接支持中文显示的??文本区域的数据中文显示!!
5 y0 t8 c- N% J& Z' N D! E' J- `" S q% F 万分感谢!!