发新话题
打印

【求助】利用X Free86函数,实现中文显示的问题

【求助】利用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      万分感谢!!

TOP

觉得和环境有关,而不是代码。
上帝说,有问题,找GOOGLE 写程序是很神圣的事情!同样只是装系统,卖菜的大娘会的事情不见得就跟卖菜一样了。

TOP

转化为utf8试试,但我不知道xlib的函数是什么,我用的是GTK,GTK采用的是UTF8的字符集,用的函数是g_locale_to_utf8
若不是因为风,雨不会美丽!

TOP

发新话题