1 名前:デフォルトの名無しさん mailto:sage [03/05/06 11:04] クロスプラットフォームGUIライブラリのwxWindowsについて語りましょう。 本家 www.wxwindows.org/ dW : Linux : wxWindowsの概要 www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html SunWorld Online:wxWindows――無名だが成熟したGUIツールキット www.idg.co.jp/sw/back/200102/20010219_01_report.html メルマガ www.mag2.com/m/0000108320.htm 1はこれからインストールします
496 名前:デフォルトの名無しさん mailto:sage [03/09/28 22:29] 確かにドキュメント化されてないのは心配ですね。でも結構不変的なオブジェクトっぽいですよ。 REV:1.5以降は wx/window.h に存在してます。REV:HEADでも依然として存在しています。 cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/window.h?annotate=1.5 REV:1.4以前は各々のプラットフォーム毎に持っていたようです。 cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/window.h?annotate=1.4 cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/msw/window.h?annotate=1.1 cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/gtk/window.h?annotate=1.1 cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/motif/window.h?annotate=1.1 cvs.wxwindows.org/viewcvs.cgi/wxWindows/include/wx/mac/window.h?annotate=1.1 つまり、wxTopLevelWindowsという識別子はwxWindowsの歴史の中で存在しなかった事はないようです。 wxWindowsのどのリビジョンを取り出しても、必ずwxTopLevelWindowsは存在します。 これからもずっとこうだと限りませんが、1998年存在しつづけているオブジェクトなので余程のことが無い限り大丈夫だと思います。 また、もし変更があった場合は toplvcmn.cpp utilscmn.cpp wincmn.cpp helpctrl.cpp app.cpp data.cpp mdi.cpp nativdlg.cpp taskbar.cpp toplevel.cpp window.cpp app.h window.h に一度に変更が入るため、変更の可能性は低いように思えます。
497 名前:デフォルトの名無しさん mailto:sage [03/09/28 23:43] と思ったんですが、 wxguide.sourceforge.net/guidelines/basics.html のガイドラインでは WX_DEFINE_ARRAY (AppFrame*, AppFrames); で全てのフレームをApp(public wxApp)で管理していました。 のさんの言うように自前で管理することにします。どうも。
498 名前:デフォルトの名無しさん [03/09/29 20:54] 最近wxWindowsの勉強を始めたのですが、サンプルを見ると、 どれもボタンとかメニューを作るたびにIDを割り当てて、 そのIDをベースにコールバックを登録してますよね? みなさん、そのスタイルでプログラムされてるんですか? wxID_ANYでまかせて、GetIdを使うやり方は、将来何かまず いことがおきるでしょうか? ついでにいうと、せっかくオブジェクト指向なのに、なんで IDなんていう内部情報を表に見せるようなAPIになってるん でしょうね。
499 名前:の mailto:sage [03/09/29 23:58] > 498 >wxID_ANYでまかせて、GetIdを使うやり方は、将来何かまず 具体的にはどんな感じ? # ハンドラ内でif判定? マクロとか使用せずに登録したいのなら、EvtHandler::Connectを使うのが スマートだけど……どのみちIDを使用しますな。 > IDなんていう内部情報を表に見せるようなAPIになってるん IDをメッセージの一種と考えているんでしょうね。 メンバ関数をコールバックするためにオブジェクトそのものをやりとりするよりも 効率的と判断したのですかね?
500 名前:デフォルトの名無しさん mailto:sage [03/09/30 00:10] >>498 >なんでIDなんていう内部情報を表に見せるようなAPIになってるん OnFileMenu(wxCommandFileMenuEvent) {} OnEditMenu(wxCommandEditMenuEvent) {} OnExitMenu(wxCommandExitMenuEvent) {} OnOpenMenu(wxCommandOpenMenuEvent) {} 俺はこんなのやりたくないぞ。 OnCommand(wxCommandEvent) {switch (event.GetId())} の方が素直でいい。
501 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:01] >>500 やりたくないって最近のGUIフレームワークはみんなそうなんだが。 拡張無しのC++だと発生したイベントとイベントハンドラOnFileMenuの呼び出しを 結びつけるのが難しいから(まさかvirtualにもできないし)wxWではやってないというだけで。
502 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:12] >>501 ほんとにメニューが増えるたびにクラス作るの? まじでやりたくないな。。とりあえずSwingは違ったけど。 その最近のGUIフレームワークって何てやつ?
503 名前:501 mailto:sage [03/09/30 02:26] >>502 >みんなそうなんだが。 >>500 の例は少し違ったな。クラスをボコボコ作るわけじゃない。 ↓な感じ。 class Form1 { OnFileMenu(wxCommandMenuEvent) {} OnEditMenu(wxCommandMenuEvent) {} OnExitMenu(wxCommandMenuEvent) {} OnOpenMenu(wxCommandMenuEvent) {} }
504 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:31] (´-`).。oO(なんで「MFCに似てるな」で片づけられないんだろう…)
505 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:41] >>503 それって EVT_COMMAND(wxID_FILE, wxCommandMenuEvent, OnFileMenu) EVT_COMMAND(wxID_EDIT, wxCommandMenuEvent, OnEditMenu) EVT_COMMAND(wxID_EXIT, wxCommandMenuEvent, OnExitMenu) EVT_COMMAND(wxID_OPEN, wxCommandMenuEvent, OnOpenMenu) と何が違うん?
506 名前:デフォルトの名無しさん mailto:sage [03/09/30 02:46] あ、違うか。そうしないのは何故かってことか。なんでだろ? 関数増えまくるのがめんどくさいからかな。 ヘッダにも書かないかんし。まあC++の宿命っつーか。
507 名前:デフォルトの名無しさん [03/09/30 06:45] WideStudio のドキュドキューンさになんとも馴染めなかったので、 これはどうかと wxWindows を見てみたが、 設計古すぎ もうだめぽ
508 名前:デフォルトの名無しさん mailto:sage [03/09/30 11:00] >>507 来年また覗きにおいで www.wxwindows.org/roadmap.htm Version 3.0.0 Stable Release 15/12/2003 This stable release will have STL compatibility for compilers that support templates fully. For example the wxString class will derive from std::basic_string<>.
509 名前:デフォルトの名無しさん mailto:sage [03/09/30 12:23] よーするにdelegateのないC++は糞だしその上に構築されたライブラリも糞ってこった。
510 名前:デフォルトの名無しさん mailto:sage [03/09/30 13:44] >>509 delegate自分で書けねーのかよ(激藁
511 名前:507 mailto:ageサンクスコ [03/10/01 00:35] >>508 おぉ # gtkmm から早く抜け出したいので期待age.
512 名前:デフォルトの名無しさん mailto:sage [03/10/02 20:27] ドキュメントかなりvirtualの間違いがあるんですけど こういうのってどうしたらいいんでしょうかね? 報告した方がいいんですか? virtualってドキュメントに書いてあったからオーバーライドしてはまった人より。
513 名前:デフォルトの名無しさん mailto:sage [03/10/02 21:12] >>512 そりゃもちろん報告した方がいいでしょ。
514 名前:デフォルトの名無しさん mailto:sage [03/10/04 17:26] どなたかwxDynamicLibrary(wxPluginLibrary)をうまく使えている方いませんか? まだ突き詰めて実験してないんですけど、現象としては class MyWindow : public wxWindow { DECLARE_DYNAMIC_CLASS(MyWindow); } IMPLEMENT_DYNAMIC_CLASS(MyWindow, wxWindow); というクラスをDLLにしてあり、アプリケーションから wxDynamicLoaderやwxPluginManagerを使って読み込んでインスタンスを生成しているんですが instance->GetBaseName1() == wxT("wxWindow") なのに instance->GetBaseClass() == NULL という良く分からない状態になっています。 ドキュメントにはstrlenのサンプルがありますが、wxWindowsの型システムを使った オブジェクトの生成方法のサンプルがなかなか見つかりません。 一応 lists.wxwindows.org/cgi-bin/ezmlm-cgi/8/26949 も見たんですけど何だか良く分からん(;´Д`) 何か情報があればお願いします(英語でも何かのソースでもいいです)
515 名前:デフォルトの名無しさん mailto:sage [03/10/04 17:30] すいません。めちゃくちゃ間違えました instance->GetClassInfo()->GetBaseClassName1() == wxT("wxWindow") なのに instance->GetClassInfo()->GetBaseClass1() == NULL です。
516 名前:デフォルトの名無しさん mailto:sage [03/10/04 21:03] >>514 おお、そんなものがあるのか。 漏れも試してみます。
517 名前:デフォルトの名無しさん mailto:sage [03/10/06 00:16] イベントを兄弟ウィンドウに伝播させるには、 1.子ウィンドウAがイベントを親ウィンドウに投げて、 2.親ウィンドウが受け取ったイベントを子ウィンドウBへ投げる としているのですが、これだと親ウィンドウが全てのイベントを 管理しなきゃいけないんですがこんなもんなんですか? GUIアプリ作ったことないんでこれが普通なのかどうかよく分かりません。
518 名前:デフォルトの名無しさん mailto:sage [03/10/06 07:20] 1.子ウィンドウAが親ウィンドウのハンドルを取得する 2.親ウィンドウから子ウィンドウA,B,C,D,...のリストを取得する 3.子ウィンドウリストから必要なウィンドウをピックアップしてイベントを投げる でも,動作すると思いますよ.
519 名前:デフォルトの名無しさん mailto:sage [03/10/06 08:34] >>518 レスありがとうございます。 XRCを使っているという前提で聞いてもらいたいんですが、 「必要なウィンドウをピックアップ」とありますが、ユーザが勝手に作ったクラスの場合は 必要かどうか分からないので、結局どこかで while を使って子ウィンドウ全てに イベントを投げる必要があるということですね。 そうすると、孫ウィンドウに送る場合はどうするのでしょう? 途中にwxPanelやwxSplitterWindowなどがはさまってしまうとそれ以上イベントが飛ばないので、 1.まず最初にトップウィンドウにイベントを投げて、 2.トップウィンドウの全ての子孫ウィンドウを再帰的に検索して 3.それぞれのウィンドウのProcessEventを呼び出す ということをしなければならないのでしょうか。 「しなければならない」のならするのは全然平気なのですが、ちょっと不安になってしまいまして。
520 名前:デフォルトの名無しさん [03/10/10 19:20] C++BuilderXはどうだったんだろう。
521 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/10 22:03] >>520 10月半ばにPersonal版がDL可能になる・・・筈
522 名前:デフォルトの名無しさん mailto:sage [03/10/10 22:03] へぇ
523 名前:デフォルトの名無しさん mailto:sage [03/10/11 03:10] 英語版のPersonal入れてみたけどwxWindowsは入ってなかったしRADも見当たらなかったぞ
524 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/11 10:48] >>523 まぢ? とりあえずプロコンが終わったら入れてみよう.
525 名前:デフォルトの名無しさん mailto:sage [03/10/11 22:31] そういえばBitTorrentもwxWindows/Pythonなんだよね。やけに配布パッケージ大きいと思ったらライブラリが9割以上食ってた
526 名前:の mailto:sage [03/10/12 13:14] > 525 DLLだと全部入りになるからデカいよね。 C++でstatic linkすると随分小さいけど……Pythonじゃ無理か……
527 名前:514 mailto:sage [03/10/12 23:42] >>514-515 できましたー。 これが正しい方法なのかどうか分かりませんが、 クラス名以外の情報が見えない状態でインスタンスの生成に成功しました。 以下にTipsとして示します。ちょっと長いです。 環境はWindows2000、wxWindows2.4.1です。今週中にLinuxでもやってみます。 1.DLLを用意する。 ヘッダの中身はこんな感じです。キモはDECLARE_USER_EXPORTED_PLUGGABLE_CLASSです。 これによってwxPluginLibraryにwxClassInfoのハッシュマップが宣言されます。 #ifndef MYFRAME_H #define MYFRAME_H #include <wx/wx.h> class MyFrame : public wxFrame { DECLARE_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, __declspec(dllexport)); }; #endif で、"__declspen(dllexport)"はWXDLLEXPORTのように、 DLL側では__declspen(dllexport)、アプリケーション側では__declspen(dllimport)とならなければなりません。 wx/defs.hを見て適宜プリプロセッサで場合分けしてください。 今回はアプリケーション側はMyFrame.hをincludeしないので、このようにしました。
528 名前:514 mailto:sage [03/10/12 23:49] (続き)MyFrameはexportしなくても良いみたいです。(ひょっとすると必要なのかもしれませんが) 1.DLLを用意する(2) 今度は実装部です。IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASSを使えばいいのですが、 wxWindows2.4.1のwx/object.hの_IMPLEMENT_DL_SENTINELにバグがあり、コンパイルが通りませんので以下のようにします。 ------------------------------- #include <wx/dynload.h> #include "MyFrame.h" #undef _IMPLEMENT_DL_SENTINEL #define _IMPLEMENT_DL_SENTINEL(name) \ const wxString name::name##PluginSentinel::sm_className(#name); \ name::name##PluginSentinel::name##PluginSentinel() { \ wxPluginLibrary *e = (wxPluginLibrary*) wxPluginLibrary::ms_classes->operator[](#name); \ if( e != 0 ) { e->RefObj(); } \ } \ name::name##PluginSentinel::~name##PluginSentinel() { \ wxPluginLibrary *e = (wxPluginLibrary*) wxPluginLibrary::ms_classes->operator[](#name); \ if( e != 0 ) { e->UnrefObj(); } \ } IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, wxFrame); ------------------------------- ms_classes.Get(#name) となっているところを ms_classes->operator[](#name) と直します。 で、これをDLLとしてコンパイルします。
529 名前:514 mailto:sage [03/10/12 23:57] (続き)ありゃ、ずれてしまった・・・スマン。 2.DLLを読み込んでインスタンスを生成する wxPluginManagerを使ってDLLを読み込み、wxClassInfoを全走査して目的のクラスを見つけます。 これは lists.wxwindows.org/cgi-bin/ezmlm-cgi/8/26949 とほとんど同じです。 --------------------------------- #include <wx/wx.h> #include <wx/dynload.h> class MyApp : public wxApp {virtual bool OnInit();}; IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { wxPluginLibrary* lib = wxPluginManager::LoadLibrary("./lib/Debug/lib.dll"); wxNode *node; wxClassInfo* classInfo; wxClassInfo::sm_classTable->BeginFind(); node = wxClassInfo::sm_classTable->Next(); while (node) { classInfo = (wxClassInfo *)node->Data(); if (wxString(classInfo->GetClassName()) == wxT("MyFrame")) { wxLogTrace(classInfo->GetClassName()); wxLogTrace(classInfo->GetBaseClass1()->GetClassName()); wxFrame* frame = (wxFrame*)classInfo->CreateObject(); frame->Create(NULL, -1, wxT(wxString("class ") + classInfo->GetClassName() + wxString(" : public ") + classInfo->GetBaseClassName1())); frame->Show(TRUE); return TRUE; } node = wxClassInfo::sm_classTable->Next(); } return FALSE; } --------------------------------- 以上です。
530 名前:514 mailto:sage [03/10/13 03:21] あの・・・追記です。 DECLARE_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, __declspec(dllexport)); IMPLEMENT_USER_EXPORTED_PLUGGABLE_CLASS(MyFrame, wxFrame); の代わりに DECLARE_DYNAMIC_CLASS(MyFrame); IMPLEMENT_DYNAMIC_CLASS(MyFrame, wxFrame); でもできちゃいました。。。(じゃあPLUGGABLEは何のためにある??) >>514-515 の原因は分からずじまいです。>>527-528 の無駄レスごめん。
531 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/13 17:46] wxWindows Personal 英語版をインストールしてみました. 確かにwxWindowsの影も形もありません・・・ハァ. デモでは新規作成にwxWindowsのタブがあったのに,こっちにはありません. wxWindowsはどういう形で使えるようになるのかすら判りません.とりあえず 10月半ばのC++BuilderXではwxWindowsは使えなさそう.
532 名前:デフォルトの名無しさん mailto:sage [03/10/14 11:36] >>523 CBXのどこにRADだと書いてあるのかと小1時間・・・ >>531 某得意のPro版以上とか?
533 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/14 18:16] >>532 www.borland.com/cbuilderx/tour/C%2B%2BBuilderX%20Turbo%20Demo.htm このデモの最後の方ではwxWindowsアプリをRADっぽく作る様子があるんだけど・・・ 少なくともPersonal版には無いな.ラインナップ間の機能を比較する表にwxWindowsの 項目が無いから,wxWindowsサポートの有無が差別機能だとも思えない. ソッコーでアンインスコして,MinGW Developer Studioをインストールしてみた. こっちはなかなか良い.何よりめんどくさいwxWindowsのインストールが簡単にできる ことだけでも十分うれしい.IDE自体もwxWindows製なので動作が軽い. 他のIDEが使いたいなら,インストールした後wxWindows関連のファイルだけ取り 出してアンインストールするという使い方もアリかも.
534 名前:532 mailto:sage [03/10/14 21:49] >>533 そのデモ見てなかった。すまん。 ただDelphiでも比較表にVCLソースの有無とか書いてないし。
535 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/15 00:18] プロコンも終わったし,ドキュメント書いてからソースを某雑誌の人に 提出したら翻訳に再参戦しようかと思います. で,結局C++BuilderXのwxWindows採用の噂以降も翻訳作業は続いて いるんでしょうか? メインの開発環境をノートPCに移行してから,まだCVS入れてないんです.
536 名前:デフォルトの名無しさん mailto:sage [03/10/16 11:02] >>514-515 と >>527->>530 は全て誤りでした。 間違った情報のまま残しておくとTipsに載った場合にまずいので修正しておきます。 wxPluginLibraryが何をするのかというと、通常の::LoadLibrary,dlopenの動作に加えて、 「wxModuleから派生しているクラスをwxWindowsの型システムにインポートする」 という機能が付加されているという、この一点だけです。 wxPluginManager::LoadLibrary("ライブラリ");を実行するだけでpublic wxModuleなクラスはちゃんと使えます。 public wxModule"以外の"クラスは型システムにインポートされませんので工夫して書く必要があります。 ところでWindowsでなかなかうまくいかなったのですが、その原因は wxClassInfo::sm_first でした。 こいつはプロセス中で唯一であることを保証しなければいけません。 つまりDLLを使うことが必須となります。(スタティックリンクでうまくいくようなアイデアがあれば教えてください) Linuxでうまくいっていたのは、wxGTK.rpmで入れているため元々共有ライブラリになっていたからでした。 これについては lists.wxwindows.org/cgi-bin/ezmlm-cgi/8/26949 の P.S.の部分に >you need to build your app and dll using WXUSINGDLL=1, otherwise you'll have no end of trouble. とちゃんと書いてありました。(でもこれP.S.なんてもんじゃじゃないだろーと思った)
537 名前:デフォルトの名無しさん mailto:sage [03/10/17 00:15] >>536 訂正が間違ってるというとんでもないことをしてしまいました。(;´Д`) > wxPluginManager::LoadLibrary("ライブラリ");を実行するだけでpublic wxModuleなクラスはちゃんと使えます。 > public wxModule"以外の"クラスは型システムにインポートされませんので工夫して書く必要があります。 そんなことないです。wxClassInfoを生成(IMPLEMENT_DYNAMIC_CLASS)すると自動的にインポートされます。 wxModuleを継承したクラスは、メモリにマップ・アンマップされる度にOnInit,OnExitが呼ばれ、 そうじゃないクラスは特に何も起こらない、です。モウカキマセンヽ(`Д´)ノゴメンナサイ
538 名前:デフォルトの名無しさん mailto:age [03/10/17 14:13] 昨日、2.4.2落としたら src/makefile.b32 が付いていないみたいなんですけど、 どうやってlib作ったらいいですか?
539 名前:の mailto:sage [03/10/18 11:53] > 537 お疲れです。 >モウカキマセンヽ(`Д´)ノゴメンナサイ そんなこと言わずに書き込んでくだされ。 Hackについてけないことが多いですが…… > 538 $(WXWIN)/docs/(システムごとのフォルダ)/install.txt を見るヨロシ。 コンパイラごとのmakefileを使うか、configureを使うみたいですな。
540 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/18 11:59] bcc使ってないから知らないけど,configureは使えないんだよね.bccでは makefileがないとビルドできないということになると思うけど,使用するmakefileが 変わったのかな? MinGW Developer StudioのwxWindows入りバージョンを使ってるから,マトモな アドバイスが出来なくてスマソ.
541 名前:デフォルトの名無しさん mailto:sage [03/10/18 12:15] >>539 結局はスタティックリンクするとwxClassInfoのメンバ変数が複数生成されてしまうという こちら側のしょうもないミスだったのですが、ろくに確認せずに書いてしまって申し訳なく思っとります。 >そんなこと言わずに書き込んでくだされ。 お言葉に甘えて、これからは確実に確認してから書き込みさせていただきます。 >>BCCの話題 いやいや、src/makefile.vcの中身見れば分かるけど、 src/msw/makefile.*を読んでるだけなので、 BCCだとsrc/msw/makefile.b32を使えばいいわけです。 src/makefile.vcをコピってちょっと修正すればOKだと思う。
542 名前:デフォルトの名無しさん mailto:sage [03/10/18 12:21] ×src/makefile.vcをコピってちょっと修正すればOKだと思う。 ○src/makefile.vcをコピってちょっと修正してもいいと思う。
543 名前:デフォルトの名無しさん mailto:sage [03/10/18 14:48] 一応今回の件(wxClassInfo,wxDynamicLibrary)についてまとめてみました。 www004.upp.so-net.ne.jp/rcl/program/wxwindows/ 転載等は自由にして下さって構いません。
544 名前:538 mailto:sage [03/10/19 02:08] >>539-542 レスサンクス、とりあえず来週 >src/makefile.vcをコピってちょっと修正 ためしてみます。
545 名前:デフォルトの名無しさん mailto:sage [03/10/19 07:14] Cygwin環境でいじってみようと、ドキュメントに書いてあるとおりに ../configure --with-msw --enable-debug --enable-debug_gdb --disable-shared make でコンパイルしました。 これだと、cygwin1.dllが必要になっていると思うんですが、 cygwin1.dllが必要ないようにするにはどうしたらいいのでしょうか。 -mno-cygwinをどこかで指定するのでしょうか。
546 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/19 08:23] >>545 specあたりを弄ればいいんじゃない? でもいろいろ問題があるかもしれないから,↓を読んでから挑戦してね. www.sixnine.net/cygwin/cygwin-doc/devel/mno-cygwin-howto.html
547 名前:538 mailto:sage [03/10/20 13:32] >src/makefile.vcをコピってちょっと修正 やってみたら簡単にできました。書き込むほどのことでもないですがとりあえず !include <makeb32.env> THISDIR=$(WXWIN)\src all: cd msw make -f makefile.b32 cd $(THISDIR) clean: cd msw make -f makefile.b32 clean cd $(THISDIR) cleanall: cd msw make -f makefile.b32 cleanall cd $(THISDIR)
548 名前:538 mailto:sage [03/10/20 13:36] ためしてみたのは make -f makefile.b32 FINAL=1 でライブラリを作成して samples\dialogs をメイク、実行ができました。
549 名前:538 mailto:sage [03/10/20 13:52] というか、 >BCCだとsrc/msw/makefile.b32を使えばいいわけです。 が、正解だったのですね。おさわがせスンマソ
550 名前:デフォルトの名無しさん mailto:sage [03/10/20 13:54] へえ
551 名前:デフォルトの名無しさん mailto:sage [03/10/25 14:45] >>546 さん MinGWDSに同梱のwxWindowsライブラリからリソース使えますか? MinGWからライブラリ作り直さないと無理ですかね・・・
552 名前:デフォルトの名無しさん mailto:sage [03/10/25 15:24] というか「(゚∀゚)ノ☆バンバン! とりあえずライブラリ全部持ってこーい」ってオプションないのかな --enable-controls use all usual controls これは違うみたいだし
553 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/25 21:56] >>551 wxWindowsを入れてるPCとMinGWDS入れてるPCが違うので,正確には調べて いません. <wx/setup.h> #define wxUSE_RESOURCES 1 #define wxUSE_PROLOGIO 0 #define wxUSE_WX_RESOURCES 0 こんな感じでdefineされていますが,とりあえずPROLOGIOが0ということは .wxr形式のリソースは無理でしょう..rcはいけるんじゃないかな. #さっさとdialogedをxrcバージョンにしろよ>wxWindows
554 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/25 22:14] >#さっさとdialogedをxrcバージョンにしろよ>wxWindows ちゃんとwxrceditってのがありますね.contribのなかにあるのを「ちゃんと」と 言うかどうかは知りませんけど. いまcontrib内のmake中ですが,errorやwarningが沢山出てくる・・・使えないかも.
555 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/25 22:31] wxrceditが一応ビルド&実行可能でした. 使い方が判らないけれど,単にXRC専用xmlエディタにプレビュー機能が 付いたみたいな感じで,RADツールみたくペタペタと貼るのは無理かも.
556 名前:デフォルトの名無しさん mailto:sage [03/10/26 00:16] >>555 俺使い方良く分からんかった。 あれだと手書きの方が早い気がした。
557 名前:思兼 ◆l3iwkTImVo mailto:sage [03/10/26 06:19] >>556 一応,プレビューがサクサク表示されるならあっちの方がデザインしやすい とは思う.でもまだXRCはお勧めできるものではないね. っつーことで,wxr形式のリソースに対応していないMinGWDS付属ライブラリは 使いにくいかも. wxWindowsって結構こういう不完全な部分が多いかも.自分で使う分には良いけど, C++初心者の後輩に使わせるGUIツールキットとしてはgtkmmかFOXの方が良いかも. 翻訳再参戦は延期してしばらく別のライブラリを触ってみます. #Windows上でフリーで初心者にも使いやすい開発環境をそろえるのは大変かも.
558 名前:の [03/10/26 22:26] wxListBox終ったなり wxwindowsjp.sourceforge.jp/docs/html/wx/wx233.htm#wxlistbox
559 名前:デフォルトの名無しさん mailto:sage [03/10/30 15:13] otsu
560 名前:デフォルトの名無しさん mailto:sage [03/11/03 00:24] 思兼 ◆l3iwkTImVoにも見捨てられた哀れなライブラリ
561 名前:の mailto:sage [03/11/03 03:43] >560 まあ、のんびりいくよ。マターリとな。 使う分にはいいんだが、訳すのは大変。ヒマが作れん。 Wikiみたいのだったらなぁ
562 名前:デフォルトの名無しさん mailto:sage [03/11/03 17:07] wxFoundationとBorlandの採用がらみでMLは喧喧諤諤でし。
563 名前:デフォルトの名無しさん mailto:sage [03/11/05 07:29] >>562 wxWindowsがBorlandに採用されるん?
564 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 17:06] >>563 www.zdnet.co.jp/enterprise/0311/05/epn10.html 今はWindows版用のプレビュー版プラグインとして提供されて いる・・・んだと思う. 将来的にC++BuilderやKylixと統合される時には,完全にクロス プラットフォームな標準プラグインとなると思いたい.
565 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 17:14] >>560 どっちかっていうと,C++自体に愛想が付きかけている気がする.すごく 強力で,プロコンの競技部門には必須だし,それ以外でも自分個人で 使う分にはすごく良い.でも後輩に教えようとすると,プログラミング以外で 覚えないといけない部分があまりにも多いことに気が付く. 多分,他人と一緒にプログラムを書くときに,個人の能力差が一番問題に なるのもC++だと思う. #C#かJavaがガベッジコレクタ&VM無しで動かせるなら,すぐにでも移行したい.
566 名前:デフォルトの名無しさん mailto:sage [03/11/05 17:15] Rubyだな
567 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 17:19] >>566 Rubyって起動速い? 値ベースと参照ベースをプログラマが指定できるGenericsがある? メモリ管理をプログラマが指定できる? JITコンパイラの最適化能力は高い? ブロックは{}の形が見やすくて好きだけど,Rubyがプロコンの競技で十分使える 性能を持っているのなら後輩に教えてみる.
568 名前:デフォルトの名無しさん mailto:sage [03/11/05 17:33] | ブロックは{}の形が見やすくて好きだけど,Rubyがプロコンの競技で十分使える |性能を持っているのなら後輩に教えてみる. と言う位Rubyを分かってるなら前4つの質問の答えは分かると思うが?
569 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 19:15] >>568 いや,Rubyのプログラムソースを見たことがあるだけで,実際に使ったことは無い. Perlっぽいスクリプト言語だとか,中間コード+JITコンパイルだからPerlより速いとか, その程度の印象はあるけどそれが正しい理解だと言う自身は無い.
570 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 19:26] 調べてみた. 1.起動速度 C#より遅い 2.Generics 無い?(検索してもそれらしいものがヒットせず.リファレンスを概観しても載ってない) 3.メモリ管理 ガベッジコレクトに任せるしかない. 4.実行速度 C#にダブルスコアをつけて遅い. 結論 Perlの代わりにはなっても,C++の代わりになるとは思えない.
571 名前:デフォルトの名無しさん mailto:sage [03/11/05 19:37] >>570 Rubyはモノタイプ言語なので、genericsは不要。 型チェックが無いので、ミスが許されない競技にはお薦めできないかも? 競技なら、タイピングに手間かけられないだろうから、いくら要件を満たしててもAdaなんかは除外でしょうね。 OCamlとか、どう?(よく知らんけど C++の機能に満足してて複雑さに愛想が尽きてるならDが一番いいんだろうけど、まだアルファだし。 //スレ違いすまんです
572 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/05 19:56] >>571 競技といっても,プログラミング速度を競うのでは無くて,先に作ったプログラムを 持ち寄って性能を競い合うものです.形式としてはロボコンに近い. www.procon.gr.jp/14th/ #スレ違いすぎだな・・・スマソ
573 名前:デフォルトの名無しさん mailto:sage [03/11/05 20:18] >>565 GCなしネイティブでC系といったら、D言語ですよ。 genericsもあるし、値・参照の使い分けも、メモリ管理も出来る。 pc2.2ch.net/test/read.cgi/tech/1003674814/l50 難点は、D言語がデフォルトのGUIライブラリを持っていないこと。 wxWindowsがポートされると嬉しいんだけど。
574 名前:デフォルトの名無しさん mailto:sage [03/11/05 21:53] >>573 D言語はGC付きだよ。オフにすることもできるけどさ。 まぁ、でも、D言語は俺も期待。思想にちょっと不満はあるが。 文字列とか連想配列とかはライブラリに入れて欲しいかな、やっぱり。
575 名前:の mailto:sage [03/11/05 23:59] >565 Templateみたいな仕組みのある言語があれば、そっちも勉強したいなあ。 コンパイル時に確定している情報と実行時じゃないと確定しない情報という観点で 効率化を計っている言語はC++以外に知らないしなぁ。
576 名前:デフォルトの名無しさん mailto:sage [03/11/06 08:38] Eiffelとかどうなんだろう?
577 名前:デフォルトの名無しさん mailto:sage [03/11/06 19:38] どんな言語にせよ、メジャーになってもらわないと仕事に使えないのが辛い。 メジャーじゃなくても仕事に使える、というつっこみはなしで。
578 名前:デフォルトの名無しさん mailto:sage [03/11/07 03:17] まずは使ってメジャー化させてくださいw
579 名前:デフォルトの名無しさん mailto:sage [03/11/07 23:01] >>574 全体的に禿同
580 名前:デフォルトの名無しさん mailto:sage [03/11/07 23:46] 連想配列は同意だが、文字列に関しては、そのまま文字列に使える配列というのは嫌いじゃ無い、 というか、素のCだってそうだし。 文字列をクラスにした場合、C++のように、リテラルからの格納形式への変換というコストと、 様々な文字列クラス乱立という混乱を招くので、組み込みで正解と思うし、 charの配列とそれ以外の配列を区別する必然性は無いので、OKかと むしろ問題は.sort。同じデータ列でも並び方は色々あるのに、一種類だけ言語に組み込む理由が… //スレ違いゴメン
581 名前:デフォルトの名無しさん mailto:sage [03/11/10 05:20] >>580 見た感じ、標準ではクラスを使わず、データと関数を分離して使う方向で行ってるね。 ここんところがC的だが、Cより安全になってるようだからいいか。 でも、わざわざ配列操作のために演算子作ったり、deleteを連想配列の要素削除に使ったり。 うーん、普通に関数じゃダメなんかな。~ってタイプしにくいぞ。関数のがいいよ……。
582 名前:デフォルトの名無しさん mailto:sage [03/11/12 23:55] 凄いスレだ・・・翻訳プロジェクトが動いてる・・・ このスレの神に習ってFLTK日本語ドキュメントでも作っちゃおうかねぇ・・・
583 名前:の mailto:sage [03/11/13 01:12] >582 ちょっと停滞中だよ。私も今しばらくはTikiの勉強中…… でも、いい加減飽きたから翻訳に戻ろうかな……
584 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/18 16:51] さっきCマガジンを立ち読みしてきた. C++BuilderXの紹介記事があって,Borlandへのインタビューもあった. wxWindowsは,将来搭載される予定のGUI関連の機能のプレビューと して搭載されただけで,wxWindowsの採用が決定しているわけではない とのこと. とりあえず,wxWindows3が大幅に使いやすくなって,C++BuilderXへの 採用されて,一気にメジャー化という夢はまだ残ってる.
585 名前:デフォルトの名無しさん [03/11/18 21:43] そ、そうなのか。 なんだったんだ。
586 名前:デフォルトの名無しさん mailto:sage [03/11/18 21:44] 夢見すぎ。
587 名前:デフォルトの名無しさん [03/11/18 22:23] 1月にwxWindowsで遊だときは日本語の情報なんてほとんどなかったのに。 ちょっとだけマニュアルを日本語に訳してすぐ挫折した。 すごいよ2ch そのとき作ったページの一部を編集して6月くらいにアップしてほったらかし。 このスレ見たら元気になったので、更新する気力が湧いてきそう。 www.h3.dion.ne.jp/~k5_n/wxwin/index.html
588 名前:デフォルトの名無しさん mailto:sage [03/11/22 02:52] GTK,gtkmmでいいじゃん。
589 名前:思兼 ◆l3iwkTImVo mailto:sage [03/11/22 06:53] >>588 gtkに比べて,wxWindowsはネイティブのLook'n'Feelだとか,多機能だという 違いがある. 特に機能に関しては,Write once, Compile anywhereを実現するために, API依存を吸収するラッパクラスが多数存在する. その代わりgtkmmに比べて泥臭いコードになるんだけどね(w.wxWindows3に 期待.
590 名前:デフォルトの名無しさん mailto:sage [03/11/22 16:29] おれも、gtkやQtなどを使ってしまうことに賛成。 どうしても、windowsの操作感を求めるなら、外部だけ作り直してしまった方がいい。
591 名前:デフォルトの名無しさん mailto:sage [03/11/22 21:23] 逆にGTKやQtはwxWindowsに比べてどんな利点があるの?
592 名前:デフォルトの名無しさん mailto:sage [03/11/23 11:44] www.roebling.de/default.html どうよ?
593 名前:デフォルトの名無しさん mailto:sage [03/11/27 20:04] 2.4.2で、メッセージカタログをShift_JISで作るとちゃんと使えないみたい。 UTF-8では使えたので、内部での変換でしくってるのか? 2.4.0ではちゃんと使えてたのに……。
594 名前:灰 ◆v/.u/aNe9w [03/12/09 01:29] wxColour と 標準イベント識別子 を翻訳してくれた素敵さん。 wxwindowsjp.sourceforge.jp/docs/html/wx/wx63.htm wxwindowsjp.sourceforge.jp/docs/html/wx/wx446.htm ありがのう。 あと、この辺に突っ込んでくれる人がいると誰かが幸せになりそうな気がします。 dot-gray.s33.xrea.com/index.xcg?page=MinGW%A4%D8%A4%CE%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB dot-gray.s33.xrea.com/index.xcg?page=wxRuby%A5%CD%A5%BF
595 名前:デフォルトの名無しさん [03/12/09 18:31] $B$9$_$^$;$s!"$I$J$?$+65$($F2<$5$$!#(B $B2?$+D9$$=hM}$r$9$k;~$K!"=hM}$r$7$F$$$k$"$$$@$K(BWindow$B$H$+$,:FIA2h$5$l$J$/$J$C$F(B $B$7$^$&$N$G$9$,!"$3$l$r=hM}$NESCf$K:FIA2h$5$l$k$h$&$K$7$?$i$I$&$7$?$iNI$$$G$7$g$&$+!#(B $B%a%$%s%U%l!<%`$N(BRefresh(), Raise(), Update() $B$H$+$r8F$Y$PNI$$$N$+$H;W$C$?$N$G$9$,!"(B $B$=$l$G$O:FIA2h$5$l$J$$$h$&$G!D!#(B GUI$B$N%=%U%H:n$C$?;v$J$s$FKX$IL5$$$N$G$I$N$h$&$J%-!<%o!<%I$G8!:w$7$?$iNI$$$N$+$bJ,$+$i$:!"(B $B$I$J$?$+%]%$%s%H$@$1$G$bNI$$$N$G65$($F2<$5$$(Bm(_ _)m
596 名前:595 [03/12/09 18:50] すみません、どなたか教えて下さい。 何か長い処理をする時に、処理をしているあいだにWindowとかが再描画されなくなって しまうのですが、これを処理の途中に再描画されるようにしたらどうしたら良いでしょうか。 メインフレームのRefresh(), Raise(), Update() とかを呼べば良いのかと思ったのですが、 それでは再描画されないようで…。 GUIのソフト作った事なんて殆ど無いのでどのようなキーワードで検索したら良いのかも分からず、 どなたかポイントだけでも良いので教えて下さいm(_ _)m すみません>>595 バケました。