Zazelです。
=== "Bruce." <kbk@...> さんが書かれた
=== <427B62AF.8050105@...> にて
> ということで、どうもこの関数がロカールを意識した実装をされていない
> ような気がしないでもありません。実際
>
> int XmbTextListToTextProperty(display, list, count, style, text_prop_return)
>
> なんていう、compound_textとかカレントロカールでの変換を
> 指定できる関数もあります。
>
> ちいさなX用のプログラムでも書ければ確かめられるんでしょうけど。
> #VMWareもインストールして、Linux(Fedora Core)とFreeBSDも用意
> #してあるのだけど止まってます(^^;
最低限だと最後に付けた感じかなあ。localeまわりは知らないので、
その手の関数は呼んでません。私がXlibで一番書いていた頃は
XStoreName()しか使ったことないし、漢字は自前の関数でフォントを
切替えながらガリガリ書いてたので。
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xutil.h>
int main() {
Display *display;
Window window;
char *text;
XTextProperty prop;
XEvent ev;
if ((display = XOpenDisplay(NULL)) == NULL) return 1;
window = XCreateSimpleWindow(display,
DefaultRootWindow(display),
0, 0, 320, 240, 2,
BlackPixel(display, 0), WhitePixel(display, 0)
);
text = "Window Title Test";
XmbTextListToTextProperty(display, &text, 1, XStdICCTextStyle, &prop);
XSetWMName(display, window, &prop);
XFree(prop.value);
XSelectInput(display, window, ButtonPressMask|KeyPressMask);
XMapWindow(display, window);
XFlush(display);
while (1) {
XNextEvent(display, &ev);
if (ev.type == ButtonPress || ev.type == KeyPress) break;
}
XDestroyWindow(display, window);
XCloseDisplay(display);
return 0;
}