Archive : 2010-05
やむにやまれぬ事情でGTKを勉強中です。。とりあえずHello world。右のスクリーンショットはWindowsっぽいですが、テーマをいじっているだけで正真正銘のUbuntu上での表示です。 Hello world表示するだけでちょこちょこコーディングしなければいけないのがめどい。。デザイナがあるらしいので、使い方を早くマスターしないと。。
#include <stdio.h>
#include <gtk/gtk.h>
static gboolean my_delete_event_handler(GtkWidget *widget,
GdkEvent *event,
gpointer data)
{
g_print("delete!\n");
return FALSE;
}
static void my_destroy_handler( GtkWidget *widget,
gpointer data)
{
g_print("destry!\n");
gtk_main_quit();
}
int main(int argc, char *argv[]){
GtkWidget *window;
GtkWidget *bbox;
GtkWidget *button;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
bbox = gtk_hbutton_box_new();
button = gtk_button_new();
gtk_button_set_label(GTK_BUTTON(button), "Hello GTK!");
g_signal_connect( G_OBJECT(window), "delete-event",
G_CALLBACK(my_delete_event_handler),
NULL);
g_signal_connect( G_OBJECT(window), "destroy",
G_CALLBACK(my_destroy_handler),
NULL);
gtk_container_add(GTK_CONTAINER(bbox), button);
gtk_container_add(GTK_CONTAINER(window), bbox);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
厳しいかも。
Silverlight 4で追加されたTrusted mode、とりあえず試してみているのだけど、結構制限が厳しくてつらい感じ。。Cookieは使えないし、GETメソッド使っているときに、headerを追加することもできない。これは、SilverlightがHTTP通信のスタックに、OSのTCP/IPスタックを直接たたいているのではなく、ブラウザのPlugin APIを叩いているためだとか。
Silverlight only supports setting headers using the POST method not the GET method. This is due to a limitation in how the TCP/IP stack is implemented in Silverlight. It uses the browser extension APIs instead of going directly against the host OS’s APIs.
http://stackoverflow.com/questions/622897/how-can-i-set-headers-with-silverlight-get-httpwebrequest
この問題を回避する方法としては、@jz5さん曰く、Socketを自分で叩いてHTTP通信すればいい、ということらしい。なんだかなぁ。。Silverlight 4でTrusted Modeをどれぐらい使う需要があるかは知らないけど(自分ならWPF+ClickOnceでいいや)、Windows PhoneアプリをSilverlightで書こうか、という場合に結構辛い気が。。WindowsPhoneは微妙に普通のSilverlightとビルディングブロックが違ってるから、案外動くのかもしれないけど(希望的観測)。
(追記) 試しにWindows Phoneでやってみたらheader追加できたw 嬉しいんだけど、HttpWebRequestみたいな非常に一般的なクラスでこのように挙動が違うというのは、困るので、正直複雑。何とかならんのか。