【C++】マイナーGUIツールキットat TECH
【C++】マイナーGUIツールキット - 暇つぶし2ch548:デフォルトの名無しさん
09/11/30 04:34:12
.NET Framework

549:デフォルトの名無しさん
09/12/28 20:41:11
>>547
俺はVC8でwxWidgets使ってるよ。サイザーとか手軽だよ

550:デフォルトの名無しさん
10/01/08 16:01:11
保守

551:デフォルトの名無しさん
10/02/16 18:44:53
最近のFLTKは1.3の更新ばっかりで2.0は停滞しているなぁ
大きな問題に直面してるわけではないが
成熟もしていないのが・・・

552:デフォルトの名無しさん
10/03/06 16:18:00
fltk2はフォーラムでも「過去のバージョン」扱いだな
trunkなのにbranchとはこれいかに

1.3に移行するか
それとも1.3の修正を2.0にバックポート(?)するか
あるいはもう別のツールキットに乗り換えるか

553:デフォルトの名無しさん
10/03/07 06:14:16
うがー
fltk1.3をubuntu9.10で使おうとしたら日本語が入力できん。
ファイルから読み込んで表示はできるが、
ibus-anthyから入力しようとすると文字化けする。

せっかくパッケージにある1.1じゃなくて1.3を入れたのに。。。。

554:デフォルトの名無しさん
10/03/07 17:11:08
>>553
ibusがXIMで動いてないんじゃないかなぁ?
ibus-daemon -rdx
やってみてもダメ?

555:553
10/03/07 19:44:08
>>554
xtermにもfirefoxにも入力できるから、ximは動いてると思ってた。
やってみたけど駄目だった。

日本語入力がonにできないんじゃなくて文字化けするってのが、
どういう状況なのかわからない。
XIMプロトコルでは文字コードどうなってるの?

ibusが悪いのかとscim入れてそっちを使ってみたけど駄目。

fltk2.0いれてみたらdemoアプリでは入力できた。
が、APIが全然違うので目的のコードを動かすには相当な変更が必要そうだ。

fltk2.0 と fltk1.3 で、どこが違うのか比較するかな。

556:553
10/03/07 21:00:14
printfしてみたら、そもそもXから来る文字コードがUTF-8じゃなさげ。
setlocale関係かなと思ったけど、差はないっぽいな。うーむ。

557:553
10/03/09 23:53:34
fltk2.0も環境によっては入力できないみたい。
あんまり時間をかけられないので、俺は諦めます。
誰か解決してくれるとうれしいなぁ。

Fox-toolkitは日本語が入力できるんだろうか?

558:デフォルトの名無しさん
10/04/21 02:12:07
URLリンク(svn.boost.org)


559:デフォルトの名無しさん
10/05/15 00:10:23
質問です。
自作のプログラミング言語処理系に組み込むのに向いているGUIツールキットを探しています。
ただ、その言語処理系の制限上、コールバックをする事ができません。
つまり、[その言語]->[C or C++]->[その言語]という呼び出しは行えません。
この問題を回避できるツールキットをご存知の方はいらっしゃいませんか?


560:デフォルトの名無しさん
10/05/16 01:25:01
どういう使い方をしたいのかがさっぱり判らん

561:デフォルトの名無しさん
10/05/16 19:20:55
イベントループをその言語から呼んではいかんということだな。
その言語はイベントループ手前で一旦終了、
Cの方でイベントループを呼び出す。
コールバックは毎回君言語を実行する形。とするのかな。

562:559
10/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以外にも対応したいので、このような形を取れる、ツールキットはないでしょうか?

563:デフォルトの名無しさん
10/05/21 14:59:44
>>559
もし実装言語がCなら、標準ライブラリのsetjmp/longjmpを使って、
インタプリタ側とコールバック関数側をコルーチンの形式で
交互にジャンプさせることで、擬似的な並行処理を実現するんだろうね。
もちろんジャンプバッファ(jmp_buf)は2個必要になる。

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

もし仮想マシンで実行しているなら、(setjmp/longjmpに相当する)
実行コンテキストを保存/復帰させる命令を仮想マシンの仕様に追加する。
というか、開発中の言語処理系が「ホントウ」に継続(countinuation)を
サポートしているなら、継続で互いのコンテキストを切り替え続ければいいはずなんだが....

564:559
10/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);
 }
}
ってなってた。
この関数を俺言語に移植して、イベントキューを作ればうまくいくかな?

565:デフォルトの名無しさん
10/05/22 02:27:44
中途半端な代物で「継続をサポートしてる」と名乗るあつかましさがそもそもの元凶では。

566:559
10/05/22 02:49:17
>>565
うぐう。
継続のサポート自体は中途半端じゃないよ。俺言語で書かれたプログラム内で閉じてればフルに継続が使えるから。
Javaはメモリ破壊に対して安全だけど、Cで書かれた拡張ライブラリにバグがあったらメモリは破壊される、みたいな物だと思いねぇ。

その言語用のライブラリをCで作るときの制限の大小の話はあるかもしれないけど、
Emacs lispだと、GCがある事を考慮に入れてプログラムを書かないといけないが、Rubyだといらないとか、
継続にしたって、Luaとかは俺言語と同じ制限がある、Rubyとかは努力して回避してる。
ただ、Rubyとかが使ってる方法は黒魔術なので、環境依存する。違うプロセッサで動くとは限らない。
もちろん、努力が足りないと言われればそれ以外ないけど。


567:デフォルトの名無しさん
10/05/22 12:31:34
うぐぅとか聞いたの10年ぶりぐらいだ

568:デフォルトの名無しさん
10/05/22 13:49:15
> 継続のサポート自体は中途半端じゃないよ。俺言語で書かれたプログラム内で閉じてればフルに継続が使えるから。

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

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

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

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

LuaとRubyしか知らないの?

つか、この文を書けるなら当然LuaのGUIバインディングは調査済だと思うが
その結果はどうだったのさ


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch