【C++】マイナーGUIツールキット

■ このスレッドは過去ログ倉庫に格納されています
NGNG
とにかくdat落ち必死なこの話題をどうかひとつ。

関連スレ:
【GUIライブラリ】wxWindowsでのひょーん
http://pc2.2ch.net/test/read.cgi/tech/1052186697/
2010/05/16(日) 01:25:01
どういう使い方をしたいのかがさっぱり判らん
2010/05/16(日) 19:20:55
イベントループをその言語から呼んではいかんということだな。
その言語はイベントループ手前で一旦終了、
Cの方でイベントループを呼び出す。
コールバックは毎回君言語を実行する形。とするのかな。
562559
垢版 |
2010/05/19(水) 23:12:46
一度終了して、後から呼ぶのも(不可能ではないですが)難しいです。
継続をサポートしているため、559の制限が発生していて、
一度終了し、イベント内で再開した場合も、同様に継続をサポートできません。

Windowsに話を絞ると、Windowsの標準メッセージループは次のようなのだと思います。
while (GetMessage(&msg,NULL,0,0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
この3つの関数呼び出しをまとめた、ProcessMessage関数を作り、
bool ProcessMessage(){
if(!GetMessage(&msg,NULL,0,0)) return false;
TranslateMessage(&msg); DispatchMessage(&msg); return true;
}
これを私の言語から、
while ProcessMessage() do
hogehoge()
end
のように使えば動くと思います。この場合、C側のイベントハンドラは発生したイベントをQueueに入れて、俺言語の中でそれを取り出して使う事になると思います。
Windows以外にも対応したいので、このような形を取れる、ツールキットはないでしょうか?
2010/05/21(金) 14:59:44
>>559
もし実装言語がCなら、標準ライブラリのsetjmp/longjmpを使って、
インタプリタ側とコールバック関数側をコルーチンの形式で
交互にジャンプさせることで、擬似的な並行処理を実現するんだろうね。
もちろんジャンプバッファ(jmp_buf)は2個必要になる。

Rubyのスレッド(平行処理)も、インタプリタ内部ではスレッド単位に
ジャンプバッファを持って、スレッドのコンテキストを管理してる。
以下は、RHG(Ruby Hacking Guide)の該当する章へのリンク。
・ttp://www.loveruby.net/ja//rhg/book/thread.html

もし仮想マシンで実行しているなら、(setjmp/longjmpに相当する)
実行コンテキストを保存/復帰させる命令を仮想マシンの仕様に追加する。
というか、開発中の言語処理系が「ホントウ」に継続(countinuation)を
サポートしているなら、継続で互いのコンテキストを切り替え続ければいいはずなんだが....
564559
垢版 |
2010/05/21(金) 23:22:16
>>563
いやいやいや。継続をサポートしてるから駄目なんだよ。 てか、スレッドと継続を混ざってない?
[その言語part1]->[C or C++]->[その言語part2]
って呼び出しをしたとして、[その言語part2]から[その言語part1]に継続でジャンプすると、C 部分の関数は入って2度と出なくなる。
その時はデストラクタも呼ばれないし、それ以外もマズい事になる所がある。

で、今日、tcl/tkについて調べたら、Tk_MainLoop関数は、
void
Tk_MainLoop(void)
{
 while (Tk_GetNumMainWindows() > 0) {
  Tcl_DoOneEvent(0);
 }
}
ってなってた。
この関数を俺言語に移植して、イベントキューを作ればうまくいくかな?
2010/05/22(土) 02:27:44
中途半端な代物で「継続をサポートしてる」と名乗るあつかましさがそもそもの元凶では。
566559
垢版 |
2010/05/22(土) 02:49:17
>>565
うぐう。
継続のサポート自体は中途半端じゃないよ。俺言語で書かれたプログラム内で閉じてればフルに継続が使えるから。
Javaはメモリ破壊に対して安全だけど、Cで書かれた拡張ライブラリにバグがあったらメモリは破壊される、みたいな物だと思いねぇ。

その言語用のライブラリをCで作るときの制限の大小の話はあるかもしれないけど、
Emacs lispだと、GCがある事を考慮に入れてプログラムを書かないといけないが、Rubyだといらないとか、
継続にしたって、Luaとかは俺言語と同じ制限がある、Rubyとかは努力して回避してる。
ただ、Rubyとかが使ってる方法は黒魔術なので、環境依存する。違うプロセッサで動くとは限らない。
もちろん、努力が足りないと言われればそれ以外ないけど。
2010/05/22(土) 12:31:34
うぐぅとか聞いたの10年ぶりぐらいだ
2010/05/22(土) 13:49:15
> 継続のサポート自体は中途半端じゃないよ。俺言語で書かれたプログラム内で閉じてればフルに継続が使えるから。

俺言語で閉じた利用だけを想定するならそういえるけど
しかし作者自身がその想定から外れた前提で質問した上で
そう言い張ってもなー

> Javaはメモリ破壊に対して安全だけど、Cで書かれた拡張ライブラリにバグがあったらメモリは破壊される、みたいな物だと思いねぇ。

それは違うだろ
たとえるならJNIでいうグローバル参照がないとかだな

> 継続にしたって、Luaとかは俺言語と同じ制限がある、Rubyとかは努力して回避してる。

LuaとRubyしか知らないの?

つか、この文を書けるなら当然LuaのGUIバインディングは調査済だと思うが
その結果はどうだったのさ
569デフォルトの名無しさん
垢版 |
2010/11/18(木) 00:01:22
保守
2010/11/28(日) 02:58:15
FLTK 1.3.0年内リリースに向け追込み中の模様・・・

日本語入力関係で2.0.x使うようにしていたけど
もう一度1.3試してみようかな
2010/12/01(水) 00:30:01
ubuntu10.04
FLTK v1.3.x-r7893
でも>>553と状況変わらず
572デフォルトの名無しさん
垢版 |
2010/12/13(月) 05:36:57
FLTK v1.3.x-r7996
で日本語入力対応したっぽいage
573デフォルトの名無しさん
垢版 |
2010/12/14(火) 15:27:23
FLTK v1.3.x-r7996
OpenXIM() を使っているようす。
kinput2+Canna では入力出来た。
scim+anthy だと漢字変換を起動させることが出来なかった。
2010/12/14(火) 20:41:43
>>573 s/OpenXIM/XOpenIM/
2011/04/09(土) 18:17:04.88
fltk 2.0.xにいつの間にかalphaがついている
1.3.xが落ち着いて2.0.xに開発者が若干戻った感じ
しかし1.3.0はまだRC3のまま
2011/05/23(月) 17:22:35.29
OpenGL画面の上に数値入力コントロールを置きたいんだが
できるだけWin32のコントロールに近い挙動のGUIを作れるライブラリがあったら教えてくれ。
目的の対象プラットフォームはWin32のみ。
2011/06/08(水) 21:12:08.03
qt
2011/06/08(水) 21:17:00.94
qtはマイナーじゃないので別なのありませんか?
2011/06/08(水) 22:23:27.48
WTL

今となってはマイナーだと思う。
2011/06/11(土) 01:48:48.73
GLUI
581デフォルトの名無しさん
垢版 |
2011/06/11(土) 01:58:56.54
nacl
582デフォルトの名無しさん
垢版 |
2011/07/01(金) 03:03:24.17
FLTK 1.3.0 final version released!

……半月前だが
2011/07/02(土) 23:36:21.26
はいゴミ死ね
ゴミって意味わかってんのかなこいつら
2011/07/03(日) 01:49:35.93
>>582
それは良い事を聞いた!
585デフォルトの名無しさん
垢版 |
2011/07/05(火) 14:19:10.32
軽いGUIライブラリを探しています。
FLTK-2.0がベストなのですが、これって開発続けられていますか?
ホームページを見ると休眠中だけど再開したようなことも書いてあるし、
現状のステータスがよくわかりません。
Fl_というプレフィックスが見苦しい1.3ではなく2.0を使いたいのですが、
これ使って良いものでしょうか?

あるいは軽量ならFOXを使えとか...
どうするのがベストでしょうか。




586585
垢版 |
2011/07/06(水) 20:25:06.63
勝手にFLTK2で行くことに決めました。
日本語化けます。対応してるはずです。助けて><
587デフォルトの名無しさん
垢版 |
2011/07/06(水) 23:59:41.55
コールバックが好きでない俺はFOXのメッセージがいいなぁと思った。
588デフォルトの名無しさん
垢版 |
2011/07/09(土) 18:29:38.71
ずっとクロスプラットフォームな GUI のライブラリで悩んでいたんだけど、
JavaScript を試してみたら結構サクサク動いたので、もう HTML5 で
行く事に決めたわ

Firefox だけで動けば良いから、クロスブラウザ問題も無いし
589デフォルトの名無しさん
垢版 |
2011/07/11(月) 00:47:19.54
>>586
FreeType有効にしてる?
590585
垢版 |
2011/07/11(月) 10:07:11.49
何それ美味しいの?
591585
垢版 |
2011/07/12(火) 20:20:19.69
FLTKだけど使い物にならないな。
一回メインウィンドウを作って閉じたら終了、なアプリはいいんだけど、
DLL化して何回も呼び出して(メインウィンドウを作っては消す)を繰り返すと、
10回に1回ぐらい不定期に強制終了する。何が起きるかはランダム。
おそらくFLTKのリソース管理がまずいか、メモリを破壊している。
2.0, 1.3, 1.1系列で確認。
ちょっと使い物にならない。

2011/07/12(火) 20:28:12.83
>>591
そういうのは、ここで報告してあげると喜ぶと思うよ

http://www.fltk.org/newsgroups.php?gfltk.bugs+T

もう既に報告済みだったらスマソ
2011/07/12(火) 22:31:33.80
>>591
FLTKの作法は知らないけど、
ウィザード形式の紙芝居遷移をするなら、メインウィンドウの中でパネルを入れ替えたりするのが
王道のような。

それかメインウィンドウを1個どどんと置いて、そこを軸にサブ画面を表示ってスタイルとか。
(必ずメインウィンドウを最後に閉じる)
594585
垢版 |
2011/07/13(水) 09:42:00.04
他人の作ったアプリのプラグイン(DLL)として動くので、
自分で寿命を管理できないんだわ。
アプリ自体はずっと存在して、DLLのみ何回もロード/アンロードが繰り返される。
1回目で落ちたことはない。落ちるなら2回目以降。
サンプルを見てもメインウィンドウのdeleteはおこなわずにアプリを終了してるので、
FLTK自体こういう使い方(new/deleteを繰り返す)は想定してないようだ。
これではちょっと使えないので、また振り出しに戻ってツールキット探すぜ。
FOXは何かキモイからgtkmmあたりを攻めて見る。Gtkだから物は確かだろう。





2011/07/13(水) 09:55:00.54
>>594
それはお前がいけないんだろ。
たとえばLIBで組み込んだら、GUI終了したらメモリ完全解放され、次の起動に影響を及ぼさない。
DLL化するときの初期化に失敗してるんだろ。
596585
垢版 |
2011/07/13(水) 17:17:45.92
とは思えないなあ。DLLの初期化に関してはアプリがやってるので自分はノータッチ。
アプリ側が間違えている可能性はあるがクローズだからわかんね。
多分ほかの(FLTKを使わない)プラグインでそういうエラーは聞いたことがないので多分大丈夫だと思うよ。

そしてgtkmmデカすぎワロタ。いったいくつdllを同梱させる気だよ。
プラグイン単体で配布して、VisualStuidoの再配布可能パッケージと
gtkmmインストールしてね、というのもなあ...
どこかに理想のウィンドウツールキットはないものか。




2011/07/13(水) 20:29:43.25
GTKは糞
Qt4はイケメンだがデブ
wxWidgetsは不細工だがスマート
2011/07/13(水) 23:53:55.93
wxWidgetsもかなりメタボな気がするが

ところで>>585の文を読む限りWindowsだけの話に思えるんだが
このスレの範疇のツール使う意義って何なの?
2011/07/14(木) 00:02:03.57
あとDLLの場合に落ちるんなら
別プロセスで動かせばとりあえず動くんじゃね?
抜本的解決ではないが
2011/07/14(木) 07:32:38.51
Windows限定でならTkもいいな
2011/07/14(木) 10:23:28.32
ポトペタがあるとないのでは雲泥の差。

C++Builder、Qtあたりがよさそう。
602585
垢版 |
2011/07/14(木) 11:17:38.23
ここが俺の日記帳だ!
gtkmmでGUIを作ってみたけど、やはり2回目以降にアクセス違反その他のエラーが出る。
詳細は違うがFLTK2, FLTK1.3, gtkmm-2.6のすべてで2回目以降にエラーが出るので、
これはもうツールキットの問題ではなく呼び出し元のアプリが悪いようだ。

他人のプラグインは恐らくWin32API直叩きだが、それはめんどいので無理。
出るとしたら2回目以降だからあきらめるしかないだろう。


2011/07/14(木) 11:39:25.59
どうせ君のプラグインは誰も使わないんだろうしね
2011/07/15(金) 11:26:03.91
この板の住民にとっては Qt4 とか wxWidgets とかはマイナーじゃないと思う
2011/07/15(金) 21:16:54.94
GUIはライブラリより開発環境のが重要
2011/07/15(金) 21:27:24.92
ポトペタ使わないで全部手書きでやってるよ
607デフォルトの名無しさん
垢版 |
2011/07/16(土) 22:20:36.16
GUI の配置は XML で定義出来るのが一番良いなあ
608デフォルトの名無しさん
垢版 |
2011/07/16(土) 22:46:14.71
FLTKの欠点はGroupの子ウィジットの座標指定がGroupの相対座標にならないことだな。
(なぜかその上のWindow相対になる)
すでに改善項目としてあがっているが。。。
2011/07/21(木) 11:50:23.62
最近全部HTMLで済ませてるわ・・・
2011/07/21(木) 11:50:41.24
GUIのデザインの話ね。
2011/07/21(木) 19:23:37.25
俺も同じく。

元々テキストエディタだけでも作成出来るほど手軽だし、
これだけ広く使われているだけあって、ツールも沢山揃っているし、
ベンダーやフレームワークに依存したお作法を強制される事もないし、
ドキュメントも沢山あって、自分以外の人間がメンテするのも容易だし、
動かすのも簡単だから、誰が相手でも気軽に配布出来るし、
今後遠い将来を考えても無くなる事はないし、規格の更新も活発だし、
周辺インフラの充実具合も半端無いし、大抵のサービスはお金も掛からないし、
色々考えると良い事しかなくて、便利に使ってるわ。
2011/07/22(金) 02:53:38.04
>>611
同意する点もあるが
それ以上にツッコミどころ満載なんだが……
皮肉?
2011/07/22(金) 02:58:46.27
例えば、どこら辺が突っ込みどころ?
2011/07/22(金) 03:18:04.22
>ベンダーやフレームワークに依存したお作法を強制される事もない
>自分以外の人間がメンテするのも容易
>誰が相手でも気軽に配布出来る
>今後遠い将来を考えても無くなる事はない
>規格の更新も活発
>大抵のサービスはお金も掛からない
この辺かなぁ
個人の感想と言えばそれまでだけど
2011/07/22(金) 03:19:46.32
それ、何か間違ってる?
2011/07/22(金) 08:37:23.64
意見を聞くと黙ってしまう
2011/07/26(火) 03:38:23.72
FoxToolKit日本語サイトもあって8時間ぐらい奮闘したが、
あまりの見た目のダサさに我慢できなくなってきた・・・
2011/08/12(金) 13:25:54.03
FLTKでモックを作ってみたんだけど、もしかしてダサい?
ツールキット変えたらかっこよくなるかな?
http://www.picamatic.com/show/2011/08/12/08/24/7772591_346x367.png
2011/08/12(金) 13:52:17.59
FLTKって日本語ちゃんと扱える?
620618
垢版 |
2011/08/12(金) 14:06:05.99
上の画像のとおり何の問題もなく使えている。

2011/08/12(金) 14:10:32.90
入力も?
2011/08/12(金) 14:21:25.57
>>618
fltk俺も使ったことあるが見た目に我慢できなくて、
結局juce library使ってる
金払わないとgplなのがネックだが
623618
垢版 |
2011/08/12(金) 14:46:04.63
ああ、入力は知らん(使わないから)
2011/08/12(金) 20:41:51.12
>>622
http://www.rawmaterialsoftware.com/portal.php
これかー。
7万円ってえらく高いけど、Qtとかに比べてもいいのかな。
2011/08/13(土) 00:22:35.26
juceってどんな感じ?
金払ったん?
2011/08/13(土) 01:05:34.00
>>625
かなりjavaライクというか、
Componentを継承して、Listenerを継承して、というカンジで使う
かなり分かりやすい、と思った。
GUI以外にもpngやjpeg、スレッド,ogg,zip,json,xmlとか色々いたりつくせりだった
LookAndFeelを設定しないと日本語がでないところ、
Tマクロがboostと競合したところがイラッとした。
ドキュメントやヘッダのコメントが本当に丁寧で色々助かる。英語だけど
ただ商用ライセンスは高いよなぁ gpl2がダメならあきらめるしかない。
てか見た目がイイ
qtは一回インストール失敗してから使ってないからわからないなぁ
2011/08/13(土) 07:13:47.79
おー、ありがとう。
やっぱり有料で使うのはちょっとって感じかぁ。
2011/08/13(土) 07:21:02.22
GPLで作って後から製品購入は
Qt同様ダメなんだろうか
2011/08/13(土) 11:17:24.82
>628
単に製品版でコンパイル仕直しゃいいんじゃないの?
GPL配布分はGPLのままだけど。
2011/08/13(土) 23:33:56.38
>>629
Qtはそれもだめってことになってるからさ
2011/08/13(土) 23:41:30.90
>>630
>金払わないとgplなのがネックだが

の事なら、Qt は LGPL だよ
2011/08/14(日) 00:47:40.50
>>631
「*GPLで作って後から製品購入したのでは、*GPLにしかできない」
ってところさ
2011/08/14(日) 01:36:03.04
もしソースコードの開示で悩んでいるなら、GPL と LGPL では話が大分違ってくるし、
サポートが欲しいなら LGPL 用のサポートメニューが用意されてるみたいよ
2011/08/15(月) 16:35:31.04
LGPLで作って製品は買わなきゃいい
2011/09/20(火) 01:31:39.87
wxWidgetsのライセンスって何なの(L-GPL)?
これ使って書いたプログラムってソースコード開示する必要あるの?
教えてエロい人!!
2011/09/20(火) 03:16:22.04
wxWidgetsってマイナーじゃないよ
2011/09/20(火) 22:46:45.77
過疎ってるからおいで。

【GUI】wxWidgets(旧wxWindows) その5【サイザー】
http://hibari.2ch.net/test/read.cgi/tech/1270793556/
2011/09/25(日) 12:30:27.27
open motifが枯れてて安心じゃね?
2011/09/26(月) 11:05:57.35
プログラマが発狂する可能性がある。安心できない。
2011/10/01(土) 20:03:54.42
clang + motifがあれば、フリーライドで仕事できな
2011/10/01(土) 20:58:00.24
IUPって、どうよ?MITライセンスだしタダ乗りできないかな
2011/11/03(木) 01:04:21.10
>>641
C++のラッパーもあるなぁと思ったら、そっちは2005年で止まってた
IUP自体は使い易いんだろうか? C++用に自分で書くしかないかぁ

かと思えば、go用のラッパーがあったり
2011/11/03(木) 09:07:02.05
GTK+って日本語入力まわりが貧弱だった印象があったんだけど
さすがに改善されたのかな
2011/11/04(金) 11:29:11.30
何度でも言う
GTKは糞
2011/11/04(金) 12:42:47.03
尿意
646デフォルトの名無しさん
垢版 |
2011/11/11(金) 13:43:32.38
http://xforms-toolkit.org/ ってのもあるんだ。
xforms の *.fd 形式って、fltk の fluid でも読込みこませられるみたい。
2011/11/11(金) 20:27:51.52
.NETライクでpublic domainなGUIライブラリないですか?
2011/11/12(土) 16:15:25.41
.NETやmonoじゃだめなん?
649デフォルトの名無しさん
垢版 |
2011/11/20(日) 11:13:03.48
だめなの?
2011/11/24(木) 17:39:58.46
だめ
2011/11/24(木) 21:19:46.29
だめだめだめだめだめよ
2011/11/25(金) 00:04:19.57
ネイティブバイナリをはけて、C、C++用のライブラリをそのまま使える言語がメジャーにならないかなあ
2011/11/25(金) 10:42:15.78
>>652
Objective-C
2011/11/25(金) 13:00:05.06
それだったらC++の方がいいな
2011/11/25(金) 16:19:19.79
>>654 さんの言う通り

一時期はDに期待してたけど
Python使い始めてから
Dっていらない子じゃん
って気付いた
2012/01/08(日) 14:15:39.84
こんなの見つけたんだが、お前ら的にはどう?

Nana C++ Library
alpha by jinhao

Win32 (MS Windows), X Window System (X11)

http://nanaproject.wordpress.com/
http://sourceforge.net/projects/stdex/
http://www.rhinocerus.net/forum/language-c-moderated/692330-nana-free-c-gui-library-v0-1-16-released.html
2012/01/08(日) 22:42:27.35
書き方はかなり好みだな。
2012/01/13(金) 01:45:13.86
>>656
サンプルのhelloworldをReleaseビルドで実行ファイルサイズは121kb。
環境はWinXP, VC10。
wxWidgetsやQtほどの規模じゃないけど、100kb程度で収まるのは評価したい。
ボタン等、各部品は全部自前で描画してるのでOS非標準なのが個人的には
好きじゃないけど、そんなにダサくは無い気はする。ボタンの縁が少し
まるまっていたり、テキストボックスにフォーカスが当たるとボーダーが
ぼんやり光ったり。
なお、予想通りテキストボックスに日本語入力しようとすると入力フォーカス
位置がウィンドウ下になる。確定すると正しくテキストボックス内に収まり
はするけども、現時点では日本人が使いやすいライブラリか、というと厳しい
気はする。あともうちょっとドキュメントは気合い入れて書けと。

QtやwxWidgetsに比べると非常にライブラリ作成も速くて手間がかからない
ので、暇があるなら試してみて損はないと思う。
個人的にはもうちょい使ってみようと思った。
2012/01/13(金) 01:51:28.35
軽いな
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況