1 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:49:20 ] クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。 本家 www.wxwidgets.org/ wxWindows日本語プロジェクト wxwindowsjp.sourceforge.jp/ Let's wxWidgets dot-gray.s33.xrea.com/ wxWindowsで始めるC++ GUIプログラミング www.h3.dion.ne.jp/~k5_n/wxwin/ wxWidgets でクロスプラットフォーム GUIアプリを作ろう 0xcc.net/pub/uu-2004-08/
42 名前:35 mailto:sage [2008/07/14(月) 13:16:44 ] レスありがとうございます。 >wxWidgets の話題から外れるので、軽くだけ。 すいません、そうですよね。。ありがとうございます。 >wxTextCtrl のようなコントロールを駆使してやるのは難しいと思いますよ。 やはり・・ >> Windows なら .Net > そ・れ・は・ない いまさらVisual C++ とかはあんま賢くない選択肢なんでしょうか。 > こういうクロスプラットホームので日本語入力周りが細かく操作出来ると思うのが甘いんじゃないかと思います ... 開発者の大多数が英語環境なわけでね。 それに気づくのが遅すぎました泣 QTなんかはどうなんですかね・・日本での実績もあるのでwxWidgetsよりはマルチバイト文字周りも大丈夫そうですが。 結局開発環境で何を採用すればいいのかという導入部での問題にまたぶつかってしまいました。 最初は、これからはマルチプラットフォーム対応じゃないとと思ってwxWidgetsを選んでみたんですが、結局まだほとんどの日本人はWindowsを使っているわけで、まだしばらくはWindowsをほとんどの人が使っていくんじゃないかとも最近思うので、 素直にVisual C++ から入ればよかったのかなとか思い始めてるんですが・・ こういう話題NGだったらスルーしてくださひ。
43 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:19:24 ] >素直にVisual C++ から入ればよかったのかなとか思い始めてるんですが・・ Windowsソフトを作るにしてもVC++はやめといた方が良い。 M$社内でも使われなかった該吉設計MFCを使うか、 ドトネトとC++を混ぜるというそれだけでウンザリ、 といった環境しかない。
44 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:55:31 ] >>42 >最初は、これからはマルチプラットフォーム対応じゃないとと思ってwxWidgetsを選んでみたんですが、結局まだほとんどの日本人はWindowsを使っているわけで、まだしばらくはWindowsをほとんどの人が使っていくんじゃないかとも最近思うので、 会社の仕事でソフトを書いてるなら他の人が何を使ってるかは重要だけど、 自分ひとりで使うなら何で組んだって勝手だよね。 wxWidgets がすきならそれをつかえばいいし、プラットフォームべったりでも好きなフレームワークがあればそれを使えばいいんだと思うけども、 どうも 35 さんは日本語入力周りをいじりたいというクロスプラットホームには不向きな題材をやりたいようだから... やっぱやりたいことに即した言語/フレームワークを使うべきだとおもいます。 でもVisual C++ はよくないと思います。C++/CLI は変態で面白い言語だとは思うけど。
45 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:07:06 ] >思ってwxWidgetsを選んでみたんですが この苦難を乗り越えてこそ、 アプリとかのすぐれたデザインパターンを発見できるだろうし、 ソフトウェア資産になると思うんだが。 それが”WxWidgetsを組み込んだ場合の優良なデザインパターン”となるか、 ”質問者の作成するはソフトウェアの要素からWxWidgetsが外される”ことと落ち着くか、 それは自分で決めることだけど。前者も無理じゃないと思うぞ。
46 名前:35 mailto:sage [2008/07/14(月) 14:24:32 ] どもです。 Visual C++ 人気ないですね。。MFCとか.NETが人気ないってことなんでしょうか。 ATL/WTL ってのがVisual C++ で使えるみたいなんですがこれはけっこう評価が良いような?? あとはVisual C# とかですかね。。 >>45 まだ自分はデザインパターンとか見つけられるレベルではない気がします。。
47 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:35:41 ] 別にVC++で問題ないよ。SDKでガシガシ書け。 どうせどんなGUIライブラリ使っても、細かいところはAPI直に触らなきゃならないんだから。
48 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:49:18 ] VC++/SDKなら問題無いかも。 それならその中にWxWidgets使っても無問題。 MFCはやめとけ。 1回生成されたダイアログを使ったソースを見てみれば、 ”これ何語?”って感じであきらめることになるだろう。 ドトネトもやめとけ。作るものに限界があるし、そうだと、作っててつまんない。
49 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:04:36 ] >まだ自分はデザインパターンとか見つけられるレベルではない どっちにせよ、アプリの構造はつねに意識してないとね。 どういう構造が良いのかわかってないと、プログラム修正して良くなったのか悪くなったのかわからんだろ。
50 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 02:39:38 ] 自分か身内だけで使うようなちょっとしたものだと、 C#に.NET3.0↑で書くのが楽すぎる Windows専用になっちゃうんだけどさ ってスレ違いだな
51 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 04:26:43 ] >>46 ,35 以前に少し使った程度だけど、WTLは結構いい感じだったよ。あとwindowsで コード組むなら、やっぱりVC++がいいと思う。単純にwindowsとの相性がいいのと windowsで実行する場合、実行速度が速い。(独特な部分もあるので、注意が必要だけど) 将来移植するかもしれないけど、当分windowsメインなら自分でラッパークラスを作って 移植の時楽になるようにしておくのがいいんじゃないかな。 MFCはやっつけで作るには楽だけど、腰を据えて作る場合はなんか いらいらすることが多くて、自分はあんまり使いやすく感じなかった。 構造覚えるのも労力かかるし、わざわざ使うことないんじゃないかな。 C#(というか.NET)は、細かいところにこだわりを持つ性分なら薦めない。 使いやすいけど、細かいことにこだわると、結局API叩くことになるから。 あとやっぱり、もっさりした感じになりやすいね。 ついでに書くと、Qtはフリー版で作ったものは、ライセンスがGPLになるのと バージョンがあがった時に互換性がなくなった、変なプリプロセッサを通して コンパイルするなどが嫌で、使うのやめたことがある。作り易そうではあるんだけどね。
52 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 08:05:00 ] >>51 で、wxWidgetsはどうなんだ?
53 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:30:58 ] そういえば、ここはwxのスレだった。 wxは以前に調べた限り、C++でクロスプラットフォームの開発をする場合は 一番妥当なライブラリだと思うよ。 日本語の入力が使えて、継続的に開発されていて、GUIの見た目がOSと 同じようになる。ある程度の実績があり、ライセンス的にもあまり 縛りが強くないってなると、wxしかなかった。 IME周りや日本語フォントなど細かいことをやるには問題があるかもしれないけど。 自分はクロス開発する必要があるものはwxを使って、api叩く必要がある場合は ラッパークラスを作るようにしている。 あと日本語周りを細かく操作したいなら、どうせAPIを使うことになるから、 それが楽になるライブラリを探すよりは、そのあたりのAPIの使い方を 調べたほうが近道だし、応用が利くと思うよ。
54 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 05:41:43 ] そうだね
55 名前:デフォルトの名無しさん [2008/07/19(土) 21:07:43 ] ところで、暇つぶしに、wx使ってどこまでできるの挑戦で、こんなのつくってみたんだ。 cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/ugmail/Doutor/src/?sortdir=down
56 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 04:59:33 ] ugmail.sourceforge.jp/
57 名前:デフォルトの名無しさん [2008/07/25(金) 16:02:55 ] ほしゅ
58 名前:35 [2008/08/01(金) 15:58:28 ] ご無沙汰です。挫折してしばらく何もしていなかったのですがまた最近やり始めています・・。 結局VC++はIDEの使い方を覚えるのが面倒で、またwxWidgetsに戻ってきてしまいました。 >どうも wxTextCtrl::SetStyle() とか GetStyle() を使うと、 >該当箇所の文字列が一瞬青く反転してしまうようです・・ この問題は、 (void) ::SendMessage(GetHwnd(), EM_HIDESELECTION, 1, 0) ; wxTextCtrl::GetStyle(position, style); (void) ::SendMessage(GetHwnd(), EM_HIDESELECTION, 0, 0) ; こんな感じでGetStyle()をオーバーライドしたら解決しました。win32APIを直書きすればこれぐらいの問題ならば解決できたようです。 今まだ悩んでいるのがEN_IMECHANGEやWM_IME_COMPOSITION を捕捉するところです。 >>31 さんに提示して頂いたように class myTextCtrl : public wxTextCtrl { public: virtual bool MSWCommand(WXUINT param, WXWORD id) { if ( !wxTextCtrl::MSWCommand( param, id ) ) { switch (param) { case EN_IMECHANGE: 〜 break; default: return false; } } return true; } みたいな感じで色々試してみているのですが、このやり方だとどうもうまく捕捉できません。 これらのイベントの捕捉のしかたが分かるかたいらっしゃいましたらご教授頂けると幸いです・・m(_ _)m
59 名前:35 [2008/08/01(金) 16:00:52 ] >>47 >>48 >> 49 >> 50 >> 51 ありがとうございますm(_ _)m お礼がめちゃくちゃ遅くなってすいません。 結局VC++とかWTLじゃなくてwxWidgetsをまだ使ってます。。
60 名前:18 mailto:sage [2008/08/02(土) 16:36:53 ] >>58 あれ?駄目なのかな。 ちとしばらく忙しくなるので、気長に待ってみて…
61 名前:デフォルトの名無しさん [2008/08/02(土) 21:37:47 ] >>58 MSWCommand の先頭で、処理してもだめなのか? wxStyledTextCtrlの場合でやったときは、 WXLRESULT wxStyledTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { WXLRESULT ret; switch(nMsg) { case WM_IME_・・・・ //じぶんでつくった処理 break; default: ret = wxControl::MSWWindowProc(nMsg,wParam,lParam); break; } return(ret); } なかんじでできたよ
62 名前:35 [2008/08/04(月) 13:01:51 ] レスありがとうございます。 MSWWindowProc()の方を試してみたら、VM_IME_COMPOSITIONを捕捉することが出来ました!ありがとうございましたm(_ _)m EN_IMECHANGE、VM_IME_CHAR、VM_CHAR はなぜか捕捉出来ず。 いまやりたいことが、「VM_IME_COMPOSITIONのタイミングで、IMEで編集中の文字列のフォントを変更する」ということなのですが、 VM_IME_COMPOSITIONを捕捉できてなんとかなったと思ったのですが、VM_IME_COMPOSITIONのタイミングでwin32APIの ImmSetCompositionFont(hIMC, lf) を使っても、フォントが変更されませんでした・・。 1が返ってきているので関数自体は成功していると思うのですが・・。 例えば、テキストインターフェース上で、太文字で強調表示させた文字列の直後にキャレットを置き、そこでIMEをONにし、キーストロークによって文字を打ち込むと、 直前の強調表示された文字列のフォント(太文字)がIMEのフォントにも継承されてしまうようで、 それをどうにかしたくてVM_IME_COMPOSITIONのタイミングでIMEの編集中の文字列のフォントを強制的にデフォルトのものに変えてしまおうという考えだったのですが・・ アドバイス頂けると幸いです。
63 名前:35 [2008/08/04(月) 13:56:38 ] > wxStyledTextCtrlの場合でやったときは、 wxStyledTextCtrlって、IMEをONにしたときの入力が正常に動かなくなかったですか? 自分の環境では変換待ちの文字列が常に一番上の行に出てしまって、それが嫌でwxStyledTextCtrlを使うのはやめたという経緯がありました。
64 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 20:01:03 ] 「自分の環境」とは?
65 名前:デフォルトの名無しさん [2008/08/05(火) 00:14:39 ] >>63 ああ、IMEの処理は実装されていないから、そうなる。 そもそも、IME関係はOS依存?FEP依存?のようで、wxWidgets に対応するものはない。 Scintilla の場合は、Plat??.cpp でマルチプラットフォームを実現してるのだが、 (wxStyledTextCtrlでは、PlatWX.cpp がそれに該当する) マルチプラットフォーム化する必要のために、IMEの処理を移植できなかったのかと思う。
66 名前:65 [2008/08/05(火) 00:19:11 ] あと、EN_IMECHANGE、VM_IME_CHAR、VM_CHAR の処理はwxWidgets のソースを見たほうがはやいな。 wxWidgets のソースは簡単だから、そっちをあたることをお勧めする。
67 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:24:03 ] wxJoystickを使うと、レジストリのHKLM\SYSTEM\.. というのを読みに行って失敗する・・・。 HKLM\ってうちのマシンには見当たらない。またwxJoystickEventがEVT_JOYSTICK_EVENTSで拾えない。 GetNumberJoysticksはなんか値が返ってきているから何かしらJoystickは見えているはずなんだけど。 コンパネのゲームコントローラはちゃんと認識しているのでHWの故障でもない。 さぁどうしよう。 飛ばしてwxMediaで遊ぶか。
68 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:12:17 ] HKLMってHKEY_LOCAL_MACHINEのことだけど
69 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 19:47:49 ] 何でだろう、EVT_PAINTを登録するとCPUがブン回る・・・ samplesのプログラムはそうならないけど、何が違うのか分からない。 頭悪いな俺。
70 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 06:59:56 ] wxPaintDC使ってないだろ
71 名前:69 mailto:sage [2008/08/21(木) 10:01:31 ] wxPaintDC dc( this ); とするべきなところを wxPaintDC dc; と書いていました・・・。 直したら、ちゃんと動きました。 スレ汚ししてすみませんでした。
72 名前:デフォルトの名無しさん [2008/08/23(土) 16:37:06 ] 質問です wxGridはデフォだとマルチセレクト且つダブクリで編集モードになりますが、 シングルセレクトにしてワンクリで編集モードに移行するようにできますか? IDEとかRADのプロパティ表示みたいなことをやりたいんです。 DialogBlocksが多分wxWidgetsで組まれてると思うのであれがそのまま使えればいいんですけど そのまんまのクラスって無いですよね?
73 名前:72 mailto:sage [2008/08/25(月) 22:14:35 ] 探してみたらwxPropertyGridっていうまんまのコンポーネントが見つかりました。 wxCodeに載ってなくても探せば使えるコンポーネントって結構ありますね
74 名前:デフォルトの名無しさん [2008/08/28(木) 17:27:01 ] で、クロス開発する場合、IDEはどれが一番良いの? wxDev-C++を使ってるけどバージョンうpされないorz
75 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:36:46 ] とりあえず、wx-Dev C++ と Code::Blocks は、どちらが良い?
76 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:46:17 ] GUI作成できるのは、 ・wx-Dev C++ ・Code::Blocks ・wxGlade だけでつか?
77 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:40:12 ] >>74 wxDev-C++はHPで近いうちに更新するっていってたよ >>76 そんなあなたに、このページを送ろう ttp://wiki.codeblocks.org/index.php?title=Comparison_of_wxSmith_features
78 名前:74 mailto:sage [2008/08/29(金) 10:07:05 ] >>77 え”、更新ですか!wx-Devは大好きなので嬉しい。 そのページ凄すぎ。 結構1年近くググルでwx系を検索してたんですが3つ4つしか把握できなかったのに、 そのページで全部そろうじゃん。 こんなにいっぱいあるとは。。。 商用のは一旦除いて(商用でもC++ Builder並に良いものなら買うけど、決定打が無さそうなふいんき)、 使ってないやつで良いのがあるかもしれないのでまた調査。
79 名前:61 [2008/08/29(金) 21:03:27 ] >>76 私的には Visualwx ttp://visualwx.altervista.org/indexit.php あとは、wxStudioとか wxstudio.sourceforge.net/
80 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:22:02 ] dialogblocksが挙がってないのは有料だから?
81 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:25:58 ] すでに72で挙がってるからですな・・・スマソ。
82 名前:76 mailto:sage [2008/09/01(月) 09:19:29 ] >>79 VisualWxってえらい変わりましたね。 以前はコンパイラ起動できなかったような。
83 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 13:19:08 ] どれが良いか投票とか、 使える・使えないレビュー、 きぼんにゅ。
84 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:15:22 ] どのIDEが好き?
85 名前:デフォルトの名無しさん [2008/09/03(水) 00:19:27 ] まだ、これってIDEやRADがないんだよねー。残念ながら。 俺は今、MinGWのCodeBlocksを入れようと思ってんだけど、 wxmsw28??_core.lib(libwxmsw28??_core.a)や、 wxbase28??.lib(libwxbase28??.a)がないって怒られる んだけど、下のサイトのようにwxWidgetsをビルドしても ライブラリが生成されないんだけど。なんで? python.matrix.jp/apps/code_blocks.html もっと簡単なクロスなIDEはないもんかね?
86 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:18:15 ] 趣味プログラミングでしかないけれど、wxFormBuilder 3はフォームデザインのみとはいえ使い勝手いいよ。 自分で書くコードと、wxFormBuilderが生成するコードが、完全に分離されるところが好き。 Makefileは手書き、ソースコードエディタはVim。開発は主にLeopardで行い、一回のmakeでWin/Mac用バイナリを生成……という感じ。 IDEって、突然バージョンアップが止まったり、なんだか変なものを導入したのか 不安定&低速になったりとあんまり信用できない感じ。なんていうか、Delphiで懲りた。
87 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:17:44 ] >>85 そでだけだとよくわからんけど、 debugのバイナリ作ってないのに デバッグビルドしようとして同じようなことになったことはあるな Code::Blocksよりdialogblocksのほうが使い易いと思う タダ版だとカスタムクラスが1つしか登録できないとか RADツールで使えないクラスがあったりするけど その辺は勉強もかねてエディタで乗り越えようとすれば問題なし
88 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:17:31 ] wxWidgetsで非矩形ウィンドウや半透明ウィンドウは扱えるのでしょうか。 また扱える場合は関連するメソッドを教えていただけると有り難いです。
89 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 22:13:46 ] >>88 リージョンは使えるよ。 半透明ウィンドウは、以前そんな話があったみたいだけど、 Windows以外のプラットフォームで出来ないのもあるみたい なので、実装されなかったみたい。
90 名前:88 mailto:sage [2008/09/11(木) 22:38:14 ] >>89 なるほど。どうもありがとうございます。 対応プラットフォームが多いと実装もやっぱり大変なのでしょうねぇ。
91 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 11:35:27 ] IDEランキング調査スタート!
92 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:45:41 ] ,. -‐ ' ´  ̄ `` ' ‐- 、 ,. -─ ‐- 、 / ``' 、 ∠-‐' "´  ̄ ` `'‐- 、 `'‐、 /´ ヽ、 `'‐ 、__ , ‐' (⌒'‐- 、 \ -='´ ='イ ヽ. ヽ / ヽ、=_,‐''´ 、_,ノ ヽ . i 、 ヽ、_, /,. _-,=‐、ゝ' ', .{ ゞ_=、<. ヽ-' ,、r‐;、彡‐==/ニ.ヽ }-‐- 、 / \ ', 、y=;'、 ´ゞ=''_,.´ / F、ヽ ', ./ \ / \ヽ`ゞッ /  ̄ { |´ノ / ∠ \ ,/ `}  ̄〈,. -‐、 ! ヽ/ / `、 `'‐-、ニ、_,./ ! ` '、 ヽ. / `'‐- ..,,j-‐'"´ ヽ. ' ´ ̄` ヽ ∨ . \ '" ,. } ∧ ヽ. ____, ,-‐'" / ,./ ‐ヘ )_,,.ハ <_,. -' \___,,,.. ..,, ´ ト、 | | /´ ``ヽ. _,. -‐'´j ヽ! ィ /´ ト、 /´| i. ヽ! /// _,,,.. ....., 、 |i | | |\ __ ./ / {,. -‐´ __ ` !.} ,-ソ ! ! / Y´ /くン-─/´ _,,.. - / | ,. へ'´ 、 リ ! />-<ヽ. ∠ノ  ̄``'´ / i ‐ 、_ 、_ ヾ ノ !' ´ `/ / !
93 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:26:54 ] _ _, - ' ´ ̄ ̄  ̄ ヽー -、_ / `ー 、_ / _ `ヽ / /´ `ヽ, `i / l i ヽ i ヽ、 (_).ノ ヽ | l l | /l /l | ハ /l  ̄ ヽ ', l ヽ. ハ |ヽ| ヽ 、 l ヽ、 l ヽ ', ヽヽ、 _-ヽヽヽヽ、 >_ニ==`ー-、j i 冫、 _v ーテ、 - 'テtァ- ', | / ヽ .,ヽ゚ノ ヽヽ=゚'´ ヽ ! i ! / / ̄ i / ', ー / l ! ヽ ー - - ! / \ \ _ ヽ _ / `ー --'-'- `ー -‐ i ´ `ー'- -'-'-'-'‐'´ | | | ヽ、 _____ノ `ー - -、_ ヘ _, - ' `ー、 / \ , - ‐ ' ´ /  ̄ ̄ ヽ l ヽ 、 _ , - ‐ ' ´ / i y / | / / l / / / / ( ` y ´ / / /
94 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 16:09:32 ] Libファイルを作成後に sampleをコンパイルしてみようと思ったんですが 未解決の外部シンボル だらけになってしまいます。 どうもまったくlibファイルを認識していないのか何なのか。 sampleはそのままの状態でコンパイルしてはいけないんでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 08:52:45 ] あのさ、こっちだってエスパーじゃないんだから、 自分がどういう環境で何をやってるか相手に判ってもらおうっていう気はないわけ?
96 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:46:27 ] 原因を追求する気があるならあんな書き込みはしないだろ。
97 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:03:26 ] wxwidgetsのストリング関係のクラスは 日本語使える(漢字)?
98 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 00:07:06 ] >>97 使える。Unicode モードと、環境依存エンコーディング決めうちモード(なぜかANSIモードとよばれる)があるよ。
99 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 05:53:11 ] 後者は基本的にユニバイト環境しか考えていない。 たとえばファイルのパス操作など、セパレータが \ かつ文字コードがCP932な 変態環境では問題が生じうる。
100 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:21:10 ] 94です すいません。8時間ぶっ通しで1つの進展も無く悩みすぎて色々おかしくなってました。 2日寝てようやく冷静になりました。 wxMSWのセットアップを使用して、WindowsXpにxwWidgetsをインストール後 VisualC++2005Expressに、\build\msw\ws.dswを読み込ませ各種libファイルをビルドしました。 この時点でエラーはありません。 その後、サンプルをビルドしてみようと \samplesフォルダにある、samples.dswを読みこんでそのままビルドしてみましたが、 すべてのlib内の関数が「未解決の外部シンボル」と出て認識してもらえませんでした。 試しに、他の\samplesフォルダ内の 各サンプルの.dspファイルを直にVC++2005Expressに読み込んで、同じ様にビルドしてみましたが すべて同じ症状でした。 生成したlibファイルの存在する\lib\vc_libにはリンク設定はしてるようですし、 インクルードディレクトリの設定にも問題があるようには思えませんでした。 sample内の.dspファイルはそのままの状態でコンパイルしてはいけないんでしょうか?
101 名前:デフォルトの名無しさん [2008/09/15(月) 23:45:58 ] Libのモード(リリースビルド、デバッグビルドとか)が、 sample のがあってます? それと、wxwidgetsのversionは、2.8.8だよね? とりあえず、VC2003とVC2008の場合は、動作しますよ
102 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 22:11:41 ] 94です。 助けありがとうございます。 wxwidgetsのversionは、2.8.8です。 Libのモード(リリースビルド、デバッグビルドとか) のパスや名称は合っているようです。 forums.codeblocks.org/index.php?action=printpage;topic=7140.0 にあった事例のようです。 I now compiled wxwidgets with VS2005 and I am now able to build the samples, but with new projects I still have problems. It seems that the wizard does something wrong - the linker wants to have wxmsw28d.lib but I cannot find it on my system. I have a lot of wxmsw28d_xxxxx libs... という話しで 解決方法は wxmsw28d.lib is for Monolithic debug builds; you seem to have a Multilib build. MultiLib is the opposite of Monolithic. In the wizard un-check Monolithic or you need to build wxWidgets as a Monolithic build. とのことです。 つまり、wxmsw28d.libが生成されなければならないのに、 複数に分かれたwxmsw28d_xxx.libが生成されてしまうという問題です。 1つのwxmsw28d.libにまとめられれば、この問題は解決しますが 話が理解できません。 チェックを外すべきMonolithicとは何なのでしょうか? どうすれば1つにまとまるんでしょうか?
103 名前:デフォルトの名無しさん mailto:sage [2008/09/16(火) 23:22:59 ] 94 氏とは別件だけど、2.8.8をMinGWでコンパイルで、ライブラリ(〜.a)を 作成したまでは良いんだけど、リンクエラーが出ます。 ヘッダが無いとかが、原因ですかね? 〜\wxWidgets\lib\libwxmsw28d_core.a(corelib_imagjpeg.o):..\src\common\imagjpeg.cpp|238|undefined reference to `jpeg_std_error'
104 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:36:56 ] >>102 ビルドが出来るってことは、WindowsSDKは大丈夫なんだね。 スタートメニューから、Visual Studio Tools でコマンドプロンプトを開ける? 開いたら、cd wxWidgetsのディレクトリ\build\msw して、 nmake /E MONOLITHIC=1 makefile.vc してみて。
105 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 00:39:20 ] >>103 undefined referenceが出る場合は、そのシンボルの実態が無いって事だから、とりあえずリンクするライブラリ不足を疑うと良いよ。 jpeg_std_errorでググると、libjpegの中の関数だってわかるから、g++のコンパイルオプション(というかリンクオプション)に -ljpeg を 付けて再チャレンジして見て。
106 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 09:11:10 ] >>103 があと数回は同じ質問を繰り返す様が見て取れるようだ。
107 名前:デフォルトの名無しさん mailto:sage [2008/09/17(水) 23:25:19 ] >>104 94です。 たびたび助かります。 104を試したところ しばらくコンパイルが通った後、 ..\..\src\msw\utils.cpp(173) : error C2143: 構文エラー : ')' が '__stdcall' の前 にありません。 ..\..\src\msw\utils.cpp(173) : error C2059: 構文エラー : ')' ..\..\src\msw\utils.cpp(175) : error C2143: 構文エラー : ';' が '*' の前にありま せん。 以下エラー略〜〜な状況です。 この173行目は typedef int (PASCAL *WSAStartup_t)(WORD, WSADATA *); こんな内容です。PASCALかWORDかWSADATAのどれかが、定義されていないと思われるんですが、 VCのオプションでも、SDkへのパスは設定してありますし、 Microsoft Platform SDK\SetEnv.Cmdは実行済みなので(試しに直前にもやってみたけど結果は同じ)、 SDKのパスが通っていないとは思えないです。 おそらく、これが最後の関門だと思います。 どうかもう一度よろしくお願いします。
108 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:09:03 ] >>107 __stdcallは、PASCALというマクロが展開された結果。 その前に ')' が必要といわれてるんだから、問題になってるのはそこより手前 本当にそのコンパイルエラーの手前にWarningかエラーない?
109 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 00:33:20 ] >>107 というか、MONOLITHIC=0がデフォルトなんだから、MONOLITHICじゃないライブラリ使えば良いじゃない。 1. wx_dll.dswを開いて、構成をDLL Unicode Releaseを選択してソリューションをビルド 2. samples.dswを開いて、構成をDLL Unicode Releaseにしてソリューションビルド で、普通にいけるぞ?
110 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:05:55 ] 94です。 >>108 warning C4068: 不明なプラグマがありました。 というwarningが大量にありました。 >>109 >1. wx_dll.dswを開いて、構成をDLL Unicode Releaseを選択してソリューションをビルド この時点で未解決の外部シンボルの嵐で全然ダメです。 wx_dllは他の構成でも全然ダメでした。 もしかして、何かおかしなことが起こってますか…??
111 名前:デフォルトの名無しさん mailto:sage [2008/09/18(木) 01:21:30 ] >>110 とりあえず、WindowsSDKとVC++2005消して、新しい環境を構築しなおせ。 VC++2008Express SP1 Windows SDK for Windows Server 2008 and .NET Framework 3.5
112 名前:デフォルトの名無しさん mailto:sage [2008/09/19(金) 00:14:55 ] そうします。 やっぱり何か異常な状態なんですね。
113 名前:デフォルトの名無しさん mailto:sage [2008/09/21(日) 00:19:51 ] すいません。Code::Blocks+MinGW+WxWidgets2.8.8の環境構築について 解説しているサイトはないですか?ググったのですが見つからなくて 困ってます。
114 名前:デフォルトの名無しさん mailto:sage [2008/09/22(月) 17:26:08 ] wxPythonでのトラブルですがwxWidgets絡みなので ここで質問させてください。 wxWidgetsのDLLをUPX圧縮した状態でwxを使うツールを 2重起動するとOS毎固まる症状が出ています。 調べた限りではwxのどのDLL,pydを圧縮しても 同じ症状が出るようです。 OS Win98 WxWidgets 2.8(wxPython2.8.7.1 本家のWin版) UPX 2.0.3 AVSP(1.3.6 python2.4 wx2.6)ではUPX圧縮してあっても 多重起動できているのでバージョンの問題かも しれませんが、ツールを一纏めにして配布する 予定なので出来るだけ圧縮して使用したいのです。 御教示お願いします。
115 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 08:32:34 ] ツールを一纏めにして最後にZIP圧縮して配布すればよい。UPX圧縮したのを一纏めにするのとほぼ同等の効果がある。 というより何形式であれ圧縮されたファイルはそれ以上ほとんど圧縮されない。何故なら圧縮されているからだ。
116 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 09:18:59 ] wxWidgets 2.8.9 リリースされたみたい。
117 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 10:15:22 ] コンパイルするのまんどくさいんで 誰かランタイムとヘッダだけまとめて配布してくれ
118 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 10:19:43 ] >>115 圧縮されてるから圧縮されないんじゃないよ 均一にどの視点から見ても完全にランダムなデータになってるから圧縮出来ないんだよ 同じデータでも圧縮する前に可逆な方法でランダムに入れ替えたデータでやるとまったく圧縮出来ないよ 圧縮率の上下はいかにランダム性を生ませないような構造にデータを持っていくかが味噌なんだ 最近の圧縮アルゴリズムなんてとっくの昔にエントロピーなんて越えてるし
119 名前:114 mailto:sage [2008/09/23(火) 17:35:09 ] >>115 pythonの場合はスクリプトなので起動時のロード時間が 非常にかかります。wxWidgetsのライブラリは テキストが多く含まれているので圧縮すると半分くらいの 大きさになりロード時間がかなり削減できます。 今回は圧縮率よりもロード時間を気にしています。 念のために。UPX圧縮による実行時のメモリ浪費は 気にしなくて結構です。
120 名前:デフォルトの名無しさん mailto:sage [2008/09/23(火) 17:53:39 ] スレ違いで申し訳ないのですが、widestudioを使ったことがある方っていますか? IDEも付いている至れり付くせりな感じなのでいいんではないかと思うのですが、あまり稼動実績が見当たらないのですよね。 wxWidgetsと比べてどんな感じかとか、使ったことある方いらっしゃったら教えて頂けると嬉しいです。
121 名前:120 mailto:sage [2008/09/23(火) 18:02:58 ] すいませんwidestudioのスレあったのでそっちいきます。。 と言ってもここでも色々意見頂けるとありがたいのですが。
122 名前:デフォルトの名無しさん mailto:sage [2008/09/24(水) 03:36:42 ] widestudioはwx以上に使われてない感があるな〜 見た目がOS標準じゃないのがちょっと・・・ OS標準よりもかっこよければ、非ネイティブでも許せるんだけども
123 名前:デフォルトの名無しさん [2008/09/25(木) 13:45:50 ] >>116 おっ、まじですか そろそろ汎用的なXMLPerserキターかな?一寸見てこよ。 つか、>>91-93 が完全に空気になっているのに吹いた。
124 名前:デフォルトの名無しさん mailto:sage [2008/09/25(木) 20:11:40 ] >>122 ありがとうございます。 うーん、やはりそんな感じなんですね・・
125 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 13:43:04 ] WxWidgetsについて質問させてください。 Windows上で、WxRubyを使ってアプリケーションを作っているのですが そのアプリケーションの中で、時間のかかる作業(多くのファイルのコピー)を始めると 作業中にウインドウが固まってしまいます。 (ウインドウ上のボタンが押せない&他のウインドウをアクティブにすると、元のウインドウを表示できなくなる) 定期的にupdateメソッドを実行してみたりもしたのですが 表示が更新されるだけで、固まる問題は解決しませんでした。 WxWidgetsにおいて、時間のかかる作業をやりたいときの 定石のようなものはないでしょうか?
126 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 14:04:17 ] 処理を分割してタイマーか何かで少しずつ進めるか、処理を別スレッドにする。 wxWidgetsに限らず大抵のウィンドウシステムではこうなるわな。
127 名前:125 mailto:sage [2008/10/01(水) 15:40:25 ] ありがとうございました! Rubyスレッドの中で処理を実行して、WxTimerで10msおきにスレッドに処理を回すことで 余裕を持って動くようになりました
128 名前:デフォルトの名無しさん mailto:sage [2008/10/01(水) 20:22:11 ] MinGWでwxwidgetsをコンパイルして使えるところまで来たと喜んでいたんですが、 簡単なサンプルで C:/wxWidgets-2.8.9/include/wx/chkconf.h:103:9: #error "wxUSE_DYNLIB_CLASS must be defined." C:/wxWidgets-2.8.9/include/wx/chkconf.h:111:9: #error "wxUSE_EXCEPTIONS must be defined." C:/wxWidgets-2.8.9/include/wx/chkconf.h:119:9: #error "wxUSE_FILESYSTEM must be defined." C:/wxWidgets-2.8.9/include/wx/chkconf.h:127:9: #error "wxUSE_FS_ARCHIVE must be defined." C:/wxWidgets-2.8.9/include/wx/chkconf.h:140:9: #error "wxUSE_DYNAMIC_LOADER must be defined." C:/wxWidgets-2.8.9/include/wx/chkconf.h:148:9: #error "wxUSE_LOG must be defined." ・・・ というようなエラーが出てします。原因は何が考えられますか? ちなみに付属のサンプルはmakeコマンドでビルド出来ました。コンパイル時の オプションの問題なのでしょうか?
129 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:12:59 ] >>128 MinGW 使ったことないから外しているかもだけど setup.h は include している?
130 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:25:01 ] `wx-config --cxxflags --libs`とか?
131 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:45:58 ] >>128 samplesフォルダのminimalはコンパイルできる?
132 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 11:47:49 ] ああ、makeで出来たって書いてあった、すまん。 コンパイル時に打ったコマンドをさらした方がよいと思われ。
133 名前:128 mailto:sage [2008/10/02(木) 14:05:05 ] レスありがとうございます。 windows上でプログラム作るときは、やはりVC++使ったほうがいいのかなと思って 開発環境を変えようかなと思っています。 >>129 setup.hはインクルードしてませんでした。たぶんコレが原因… >>132 make時は、 ttp://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_(MSW) を参考に、mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release を使ってました。コンパイル時にはNetBeansを使っていたのですが、もうアンインストールしちゃったので分かりません。 NetBeans、もっさりしすぎです・・・
134 名前:128 mailto:sage [2008/10/02(木) 14:15:34 ] 連投すみません。setup.hが原因の場合、includeパスにwx.hがおいてあるフォルダを 設定していたら、そこにsetup.hを放り込んでおけば良かったのでしょうか? サンプルのminimalをmakeは出来たのに、自分でコンパイル出来なかったということは、 インクルードパスの設定が不十分でsetup.hが見つからなかったことですよね。たぶん
135 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 17:56:59 ] >>134 wxは複数のバージョンや条件(Unicodeだとかデバッグだとか)でビルドしたライブラリ を置いといて、wx-configにオプションを与えることで設定通りの条件のsetup.h だとかライブラリだとかが使われるコンパイラ引数を出してくれるようになってる。 なのでsetup.hを手前で適当に放り込むなんてのはしない方がよい。 ファイルがどこにあるか調べ上げて自分でパスを列挙するなんてのとは違う。
136 名前:134 mailto:sage [2008/10/02(木) 19:11:22 ] >>135 wx-configはちょっとしたプログラムを作るためのもので、まともなプログラムを 作る場合はmakefileにインクルードパスなどを細かく書くものだと思っていました。 `wx-config`はcygwin,linuxあたりでは使えると思うのですが、windowsの 開発環境(VC++,eclipse,netbeans等)で、コンパイルオプションに指定して 動くものなのですか?
137 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 19:21:13 ] もともとMinGWって言ってるじゃねーか。 なんでVCが出て来るんだよ。
138 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 19:39:53 ] > まともなプログラムを作る場合は もっとマシな人間をアサインする
139 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 19:47:32 ] >>137 確かに、それは私が悪いんですが、wxwidgets自体がクロスプラットフォームな ライブラリじゃないですか。そうすると、VCで使う人もいるだろうし、 VCの場合はどうするのか気になったんです。 結局、'wx-config'はcygwin上からでしか使えないのですか?
140 名前:132 mailto:sage [2008/10/02(木) 19:51:52 ] wx-configは、makefileに細かく設定するのがめんどくさいから使うもの。 wx-configはWindowsのコマンドラインからは使えないので、使えるようにするためのツールがMSYS。 MSYSからwx-configを使ってコンパイルしてみなされ。 ちなみにwx-configをくくってるのは半角のバッククォートだよ?Shift+@で。コマンド置換とかで調べてみ。 gccのオプションとかについても調べましょう。
141 名前:デフォルトの名無しさん mailto:sage [2008/10/02(木) 20:06:45 ] >>140 回答ありがとうございます。 バッククォート間違ってたorz どうもいくつか腑に落ちないことがあって、ヘッダファイル除いてみたり してたんですが、根本的に間違えてるかもしれないです。足掻いてみます。 お騒がせしました。
142 名前:デフォルトの名無しさん mailto:sage [2008/10/03(金) 11:02:20 ] >>139 VisualStudio の場合、基本的には.dspなんかを使うんだけど それが build/msw フォルダに入っている。 で、その中で include パスの設定なんかが入っているので そのままコピーするなり好きなように設定すればOK