On Sat, Jan 27, 2001 at 03:11:31PM +0800, [EMAIL PROTECTED] wrote: > > 3、XDrawString16基本正常,可以畫漢字(問題在後面)。 > 所以如果是: > char *ch_str = "zh1 zh2 zh3 zh4"; > ... > XDrawString16 (display, window, gc, x, y, (_Xconst XChar2b *)ch_str, length + > 1); > 看到的是 > zh1 zh2 zh3 zh4 00
我開始反應不過來了,這裡傳入的是(XChar2b*) zh1 zh2, 0 。但是畫 出來的是正確的 zh1 zh2 zh3 zh4 0 ,那 XDrawString16 就也不對了 呀。應該是在傳入 (Xchar2b*) zh1 zh2, zh3 zh4, 0 時才應該畫 zh1 zh2 zh3 zh4 0 的。 > 如果是: > XChar2b *ch_str = struct copy "zh1 zh2 zh3 zh4"; > ... > XDrawString16 (display, window, gc, x, y, (_Xconst XChar2b *)ch_str, length + > 1); > 看到的是 > zh1 00 zh2 00 > XmbDrawString/XwcDrawString在漢字部分就是這樣顯示。如果想保持代碼的效率,只有在 > gcc for [EMAIL PROTECTED] CPU要求尋址按字(word)對齊,所以只要把gcc for ARM > 的缺省編碼按字對齊而不是按雙字(dword)就行了。 只是 xlib 寫的時候沒有考慮移植性,在傳給 XDrawString16 的時候給出 正確的XChar2b 的內容就行了。效率不會減低多少。 > > XDrawString16的問題: > [EMAIL PROTECTED]|[EMAIL PROTECTED]@個漢字(規律還沒有找到)。程序自己刷新窗口 > 就正常了。 > [EMAIL PROTECTED] = length + 1。刷新窗口也沒有用。 > 問題的原因還在查找,我猜想可能和sizeof(XChar2b) == 4相關。 > 這個 Roger 指出的補丁應該解覺了吧? 你試過 Rigel 說的那個選項沒有?這個我不太清楚 -- Best regard hashao -- | This message was re-posted from [email protected] | and converted from gb2312 to big5 by an automatic gateway.

