Gtkプログラミング on Windows!!!
マルチプラットフォームなGUIライブラリでプログラミング!
利点
・C、C++、Python、Ruby, etc...いろんな言語にも対応してるぞ!
・Linuxに移植するのも簡単だぞ!
・Gladeで楽々GUIデザイン!
・自由!RMSマンセー!
・でも、ライセンスはLGPLだから動的リンクにすればアプリのソースコードを公開する必要は無いぞ!
GtkライブラリのバイナリはGlade込みのやつがオススメだぞ。
公式:http://www.gtk.org/
Windowsバイナリ:http://gladewin32.sourceforge.net/modules/news/
gtkmm: C++インターフェイスだ!
公式:http://www.gtkmm.org/
Windowsバイナリ:http://www.pcpm.ucl.ac.be/~gustin/win32_ports/gtkmm.html gtkmm 2.10.11です。
Gdk::Color red;
red.set_rgb(65535, 0, 0);
m_button1.modify_bg(Gtk::STATE_NORMAL, red);
これでボタンの色が変わると思ったら変化無し。
俺何か勘違いしている? >>162
バグだね。2.12.0では見事に赤くなりました。
なにー。gnomeのサイトにあった2.10.11のお手軽パックで済ませようと思ってたのに。
とにかくthx。アップデートしてみる。 デスクトップのマウスクリックイベントを取得したいのですが、どうすれば良いでしょうか?
グローバルホットキーを登録したいのですが、どのようにするのでしょうか? HTMLをレンダリングするにはどうしたらいいんだぜ?
gtkhtmlもgtkmozembedも駄目くね? Vista 64ビットでGTKを動かしてみたのですが、
ウィンドウのタイトル以外(ボタンのキャプション)とか
全部 □□□□□ で表示されてしまいます。
coolwave.exe を動かしてみましたが、ボタンで Quit と表示されるところが
□□□□になってしまいました。
フォントとかの問題かもしれませんが、心当たりのある方に対策を
教えていただければと思います。
ちなみにVista32ビットだと、フォントの メイリオ がどうのこうの
と警告が表示されますが、とりあえずは表示は大丈夫です。
Bugzillaで検索してみたら?
無ければ登録してあげれば多くの人が喜ぶんじゃない Gtk::Windowのタイトルバーを除いた領域の縦横サイズを取得するにはどうしたらいいんでしょうかね? 有名かもしれないし、Linux向けのページだけど貼っとく。
GTK/GNOMEによるGUIプログラミング
http://www.iim.ics.tut.ac.jp/~sugaya/wiki/wiki/index.php?GTK%2FGNOME%A4%CB%A4%E8%A4%EBGUI%A5%D7%A5%ED%A5%B0%A5%E9%A5%DF%A5%F3%A5%B0 >>175
スレ違いだけど
sugayaってもしかしてと思ったら、うちの大学で助手やってた人だ 必要は無いけど
Linux板にもGTK+スレがあって、しかも向こうの方が歴史が長い。
環境の切り分けも出来てるしいいんでない? Glade for Win32がとりあえず復活している様子。
ttp://gladewin32.sourceforge.net/ linux板にはあるからそっちを使いな
・・・Qtスレはunix板にあるんだな gtk-dev-2.12.9-win32-2.exeってのさっきインストールしてみたら、
元のシステム環境変数PATHを思いっきり消して、自分のPATHだけ登録しやがった。
何これ、ふざけてる。インストーラのバグか?
幸い気づいたときには、消される前に起動したシェルを立ち上げたままだったんで、
シェルが握ってる環境変数から復元したけど。 GtkWindowを最前面で表示する方法ってどうするん? コンテナなどはcan-focusをセットすればフォーカスが移るようになると思うのですが、
フォーカス枠は表示されません。この場合にフォーカス枠を表示させる方法はあるのでしょうか? MinGWで開発してます。
コンパイルして、実行ファイルを実行するとGUIの画面も出ますが、
コンソール画面も出ます。
このコンソール画面が表示されないようにするにはどうしたらいいでしょうか? >>190
ありがとうございます。
出なくなりました。 >> 190
それって、Cygwin用じゃないの?
そんなことを書いているサイトを見たことがある・・・ >192
PE ヘッダ中のフラグをどうするかだけだろうから Win32 の EXE なら一緒でしょ。
っていうか、EXE を直接書き換えても同じ効果が得られるはず。 GTKってLGPLだよね?商用とかいけんのかね?
ライブラリがないとかでユーザサイドで動かない場合が多くなりそうだけど。。
シャエウェアもダメなんかね? >>194
商用ソフトが実際にあり、うちの会社で使ってる。 >>194
LGPLならライブラリをパッケージに含めることは問題無いだろう
もちろんライブラリ自体に手を入れたなら、その部分のソースは入手可能にしておかないといけないが LGPLのライブラリを再配布していいんだったらスタティックリンクしたのとあんまかわんないし、
だめなんだと思ってたんですが。
うーん、ぐぐってもなんか意見が割れてるなあ・・よくわからん 何をどうググったのか知らんが
割れてるなら厳しい意見の方を採用しておけばまぁ間違いは少ないだろう Windowsの終了時(電源を切る)に
ソフトを起動する事は出来ないでしょうか?
時間記録等のバッチやアプリを起動したいと思っています。
(現状は、この最後のためだけに常駐させている状況です) WM_QUERYENDSESSIONでfalse返しておいてアプリを起動し、バッチ終了後に改めてExitWindowsを投げるアプリを作ればもちろん出来ますよ .あるいは単に「アプリAを起動、終了を確認してからExitWindowsする」
アプリBを作り、必ずアプリBを起動してWindowsを終了するようにする。
これなら常駐の必要ないべ。
てかGtkと関係あるのか?w >>201-202
有難う御座います。 これを参考に早速試してみたいと思います。 LGPLはライブラリをそのまま含めれば
ソースコードの公開やらフリー化が義務らしいがDLLはその限りではないらしい
パッケージにDLLを含めればいいのでは?
GtkTextIterの仕様って意味不明だわ。
テキストの範囲の終わりを示すのに使われるときには手前の文字までしか
含まないのに、GtkTextIter自体から文字を取得するときには後ろの文字が
返される。
なんで「文字と文字の間の位置を表す」なんてわかりにくい概念で定義
するかね。
理解するのに無駄に時間がかかったよ。 イテレータはC++におけるSTLの概念だね...
まあテンプレート自体C++特有の考え方だから
C++使わない人にはなじみがないかも...
ソートやらリストやらの手間が省けるから便利ではあるんだけどね... 今気づいたが、WindowsでGTK+やQtのアプリ起動すると、サンプル程度の物でも
メモリ使用量が20〜30MBは当たり前って感じで萎えた。タスクマネージャでざっと
確認しただけだが、同じ物を複数起動しても、すべてそんな感じ。
この事といい、起動速度といい、.NETといい勝負。ただGTK+はクロスプラットフォ
ームだし、LinuxのGNOME上なら起動速度も普通(当たり前だけど)なのが違う。 Gnomeはそれ自体がもっさりだから目立たないだけって肝ス。 どなたかメモリ節約しつつRuby/GTKアプリケーション動かす方法知りませんか?
やっぱ無理なのかなあ。 Ruby+GTKという組み合わせな時点で
ある程度メモリ食ってしまうのは仕方ないだろ アプリをGUIで終了させるには正常に終わるのですが、
コンソールからCtrl-Cで終了させると、エラーメッセージが出ます。
どうすれば直りますか。 そりゃそうでしょ。正規の終了方法じゃなくて強制終了なんだから。 >>208
でたらめ吐くな
GTKのサンプルくらいなら10M以下で十分動作するだろうが サンプル程度で10Mも喰うなんて
馬鹿なの?
タヒぬの? >>212
Ctrl-Cシグナルをフックするハンドラを書いて
abortしないようにすれば桶
+window
−+vbox
−+scrolledwindow
−+viewport
−+aligment
−drawingarea
という構成でscrolledwindowの中心がdrawingareaに表示した画像のどの座標
に該当するか分かる方法又は関数ってありますか?
GdkのregionってWin32のGDIのregionみたいに色んな図形のとか、
PathToRegionみたいなことできるんですか? こんど新しいQtの本が出るみたいだよ。入門書っぽいけど。GTK+もがんばってほしいなあ。
http://www.amazon.co.jp/dp/4877832211 すみません、さっぱり分からないので教えてもらえないでしょうか・・・。
gtk_pixbufの関数(gdk_pixbuf_new_from_file)を使いたいのですが、やっぱりgdk_initは呼んでないと駄目ですよね?
gdk_initって、DISPLAY環境変数がないと動かないようなのですけど、X Windowを立ち上げない状態ではやっぱり無理ですかね・・・。
http://jp.rubyist.net/magazine/?0019-cairo
の真ん中あたりには、Xサーバーがなくても動くみたいなことが書いてあります。
この記述はあってるんですか?
どうぞよろしくお願いいたします。
>221
CentOSだけど、DISPLAYなくても動くみたい
---
.....
g_type_init();
pGError = NULL;
pGdkPixbuf = NULL;
pGdkPixbuf = gdk_pixbuf_new_from_file(pFile, &pGError);
if (NULL == pGdkPixbuf) {
fprintf(stderr, "%s:%d:%s\n", pFile, pGError->code, pGError->message);
g_error_free(pGError);
}
else {
printf("Open success %s\n", pFile);
}
.....
---
$ g++ -g 'gdk_pixbuf_new_from_file.c' `pkg-config gtk+-2.0 --libs --cflags`
$ export DISPLAY=
$ ./a.out tmp.jpg
gdk_pixbuf_new_from_file(tmp.jpg)
Open success tmp.jpg
$ ./a.out tmp.txt
gdk_pixbuf_new_from_file(tmp.txt)
tmp.txt:3:Couldn't recognize the image file format for file 'tmp.txt'
>222
返信ありがとうございます!
なるほど、g_type_initを呼ばないといけなかったのですね。
勉強不足でした。
今回初めてlinux上で開発をやらなければならなくてやってるのですけど
難しいですね・・・。英語しかないものが多くて泣きそうです。
本当に助かりました。222さん。
Gladeとgtkmmって全く依存関係ないんですか Win32 用で Gtk+ と Gimp-dev の環境ってどこかにないですか?
環境作るのに疲れました。
MinGW + msys でコンパイルしたいと思ってます。
最初D言語の統合環境で見つけたCode::BlocksがGtkの開発に意外と便利だった EclipseのGTKプラグインってどっかで入手できますか? 自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L
名言集 その4
『俺、100人規模の集団サイバーテロの主犯だったこともあるんだぜ』
http://yutori7.2ch.net/test/read.cgi/news4vip/1249830540/ のID:PVAf+dux0 = 自動焼人 ★
> 965 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:02:09.35 ID:PVAf+dux0
> まぁ何だ。
> 俺の過去の経歴に比べたら、割れ厨なんて鼻くそレベルなんだけどなw
> 100人規模の集団サイバーテロの主犯とか、いろいろとな。
----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください ボタンwidgetの背景色を動的に変えるにはどうすればいいの? これからGTK+を学んでみようと思ってる者っす。
GTK+を使ったWindowsアプリを作ったら、そのアプリの使用するマシンでGTK+が動くように
ライブラリか何かを一緒に配布する必要がある?
どれを配布すればいいかな。
Sylpheedはインストーラで自動でインストールできるようになってるみたい。
>>1の動的リンク云々はこの関連の話?
動的リンクってつまりDLLのことかな。
誰かかっこいい人、教えてください。 ライブラリはインストールパッケージにdllを一緒に入れるか
staticlinkでなんとかなるんじゃないかな
フォントとかも一緒にいるし
それ以外にもいろいろいるから
自己解凍インストールにしないかぎり
exeひとつだけって訳にはいかないよ 男前な>>258さん、ありがとう。
スタティックだとソース公開しなきゃいけなくなるんじゃなかった?
ダイナミックはOK、スタティックはダメって変な話だから、間違ってるかも。
で、dllはどれを入れるんでしょ?
あと、「それ以外にもいろいろ」っていうのは、iniとかreadmeみたいな
自分で作ったファイルってこと?
そういうのならわかるからいいけど、システム上要求されるファイルのことがわかんない… >< Sylpheed インストーラの作ったファイルみろ >>240
インストーラが作るファイルって見れたっけ?
ま、とりあえすアドバイスありがとう、チュッ! GTK+ってWindowsではあまり使われてないの?
何で〜? wxWindows on GTK があるように
wxWindows on GTK on MSW があっても良いと思う JavaのJREみたいに、「これさえインストールすればGTK+を使ったソフトが動きます」っていうような
インストーラがあればいいのにね。
ソフトごとにライブラリをパックして配布するなんて面倒い。 あー、全部詰め込むと巨大になるのか。
使ってるDLLだけ実行ファイルと一緒に入れておくのがいいのね。 GTK+って商用で使われてる?
職業プログラマの人たちは、仕事で使ってるんだろうか・・・。 >>247
VMwareとかに使われてるのはよく聞く。
AndroidのUIもGTK+じゃなかったっけ?あと携帯のシミュレータの外側UIにGtk+の1.x系が使われてたってのも聞いたことがある。 >>247
日本医師会が作ってるしょうもないレセプトシステムも昔1.x系が使われてたな。 一応使われてるんだね。
さっそくやってみようかな♪ >>251
逆じゃない?
つか、PhotoShopてGTK+だったのか。 >>252
Photoshop ElementsはQt 商用アプリは残念ながらほぼないに等しいと思うけど、
ttp://www.sharp.co.jp/netwalker/
みたいに、Linuxをまんま載せてるものはメインで動いているのは
GTK+アプリだよ。
俺のNECの携帯BusyBoxでGTK+1.xだわ
公式ページ探したらソースコード落とせるようになってた
組み込みならGTKけっこうあるんじゃないか? >>255
ライセンス緩いでしょ?
商用だとライセンスが何か障害になる?