1

私はGTKGUIを持ち、Windowsレジストリで動作することを想定したツールを書いています。たとえば、次のようなコールバック関数があります。

static void
msg_INFO(GtkWidget *main_window, gpointer data)
{      
  GtkWidget *dialog = gtk_message_dialog_new(NULL,
      GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_OK, data);
  gtk_window_set_position(GTK_WINDOW(dialog), GTK_WIN_POS_CENTER);
  gtk_dialog_run(GTK_DIALOG (dialog) );
  gtk_widget_destroy(dialog);
}

GTK+がUnicodeをサポートしていることがマニュアルに書かれています。someDATAを引数としてこの関数を呼び出すと

LPWSTR someDATA = malloc(256);
wcscpy(someDATA,L"Some data here");

ポップアップは最初の文字、この場合は「S」のみを表示します。私はそれをグーグルで検索し、いくつかの問題を見つけましたが、Pythonで...ユーザーとの対話中に実行を一時停止する必要があるため、gtk_message_dialog_newで実装する方法がわかりません。私の英語でごめんなさい

4

1 に答える 1

3

GTK +はUTF-8Lを使用しますが、これは接頭辞付きの文字列リテラルから得られるものではありません。後者は、ワイド文字(通常は16ビット)を使用して文字列を取得するため、最初の文字は2バイトとしてエンコードされます。

'S'はASCII文字であるため、これらのバイトの2番目は0になり、UTF-8として表示される場合、そのゼロは文字列を終了します。

于 2012-08-31T09:23:01.363 に答える