【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (960レス)
1-

589: 2013/11/15(金)07:53 AAS
損してると思うよ
590
(1): 2013/11/16(土)00:14 AAS
constexprも使えないコンパイラは要らないんですよ
591
(3): 2013/11/16(土)00:58 AAS
メタプログラミングって奴でしょ?
何が何だかサッパリ分からないよー。
つまり俺にはまだ早い代物だという事は承知してるが、
どういう用途で使うものなのか教えてほしい。
592: 2013/11/16(土)03:33 AAS
wxと同時に浸かって委員会
593: 2013/11/16(土)03:39 AAS
GCC3xの頃はvc++の方が速かった気がするけど、4.6から急激に速度が向上した気がする
あくまで自作プログラムでの話だけどね
ただ、gccでビルドされる様々なテストプロブラム見てるとvc++でビルドって安全性って意味
でヤバいんじゃないかって思っちゃうの
594: 2013/11/16(土)04:27 AAS
>>591
実行時の計算オーダーを減らす機能。事前計算機能だね。
コンパイルタイムにできるだけ計算して結果を出しておくことで実行時の計算量を減らす。
ネットの変人がそれでレイトレーシングやったりしてる。
C++14のやつはそれなりに簡単だよ。
595: 590 2013/11/16(土)09:47 AAS
>>590はちょっと冗談気味だが
正直VC++はC++とは言えない
C++の機能を最大限活かす/楽しむにはgccやclangを使うべきだと思います
会社でプログラム書けと依頼されたらもしかしてVC++使うかもしれないけど
596
(3): 2013/12/28(土)16:23 AAS
chrome のブックマークバー、 IE のお気に入りバーのようなコントロールクラスを探しています。
全てのアイテムが編集可能でアイコンとテキストが表示されて
そのアイテムの値のテキストを編集できるメニューを作りたいのですが
最適なコントロールクラスはどれか教えてください。

wx.Menu を使おうと思ったのですが、
右クリックやコンテキストメニューのイベントが Bind しても呼び出されず苦戦しています。

wx.ListCtrl を使った場合は右クリックのイベントは受けられるのですが、
左クリックのイベントが wx.EVT_COMMAND_LEFT_CLICK のみで
これは MS Windows のみと書いてあるのでできたら使いたくありません。
これらのイベントについても誤りがあれば教えて欲しいです。

環境は wxPython 2.8-msw-unicode です。
よろしくお願いします。
597
(1): 2013/12/28(土)17:54 AAS
>>596
理想の実装になるかわからない&C++しかわからないが
wxMenuをそのまま使うのが良いと思います

実装の骨子
・メニューの項目一つ一つにwxWindowID ( enum )を振る
・wxWindowIDはwxCommandEventで起動するようにしておく
・上記のwxCommandEventを処理する関数はenumをswitch文で処理する
・wxCommandEventはEVT_MENU_RANGEで定義しておく(enum値が 1000~1200の場合反応する関数を作るなど)

アイテムを編集可能にするために
・EVT_UPDATE_UIをwxMenuに設定しておき、ユーザーがメニューの項目を触ったら更新を実施

右クリック
・wxのConnectとかBindでwxMouseEventをくっつければいいと思う

-------------------------------------------------------

上記をやろうとすると、ユーザーが設定した項目でループを回して常に更新かける
感じになるんじゃないでしょうか。

wxMenu *menu = new wxMenu;
wxMenu *foo  = new wxMenu;

for ( ユーザーが設定した数だけループ ) {

foo->Append(wxID_HOGEHOGE_RANGE + i , wxT("ユーザー設定項目1"));
foo->Connect(); // 右クリックイベントを定義しておく
}
598
(1): 596 2013/12/29(日)12:00 AAS
>>597 レスありがとうございます。

wxMenu に対して Connect/Bind を試してみたのですが、
クリックイベントは wxEVT_MENU または wxEVT_MENU_RANGE だけが呼び出されました。

LEFT_UP, RIGHT_UP, COMMAND_LEFT_UP, COMMAND_RIGHT_UP, CONTEXT_MENU のイベントを試しましたが、
こちらは EVT_MENU の有無にかかわらず呼び出されませんでした。

試したソースコード : http://codepad.org/S9vtw4yX

wxEVT_MENU の際に右クリックか左クリックかわかれば処理を分岐できるのですが、
wxCommandEvent でクリックしたボタンの情報の取得方法がわかりません。

wxWindow::PopupMenu では wxMenu を参考にして GUI を作り出すようですが、
そこですでにイベントが途絶えているように思えてしまいます。
ウィンドウハンドルも得られないようだし、
ポップアップメニューにイベントを追加することはサポートされていないように感じます。

wx.ListCtrl でも思ったことなのですが、
wx.CommandEvent 系のイベントを使うコントロールクラスでは
wx.MouseEvent 系のイベントは関連付けられないのでしょうか?
599
(1): 2013/12/29(日)12:26 AAS
>>598
う〜ん、メニュー上での右クリックは悲しいことにできなさそうね

[wx-users] Trapping wxMouse events over wxMenus
https://groups.google.com/d/msg/wx-users/xAGPwk-f9Ao/0BGV9JD55L4J

この会話の中で、Vadimさん(wxWidgetsのコミッタ)が無理やでとか言ってる
メニューの項目の中で右クリックするとイベントはメニューのほうに行ってしまう
から、そのイベントをつかむのは無理だと。
で、それはWindowsとGTKのネイティブ実装がそうなっているから。

> Ideally, I would like to be able to left-click and
> right-click WITHOUT the menu disappearing.
This is impossible under the two main platforms: MSW and GTK. Menus grab
the mouse when popped up (down?) and so all mouse events go to them.
600
(1): 2013/12/29(日)12:34 AAS
いや、ちょっと違うか
メニューの右クリックイベントは掴めるけど
その時呼び元のメニューの項目が消えるといってるのか

その解決策としてはwxMenuを使わずに
menuのウィジェットを自分でエミュレートするしかないとのこと
601
(1): 2013/12/29(日)13:16 AAS
>>599-600
ありがとうございました。
wxMenu を流用できないのは残念ですが、
これで踏ん切りがつけたので、 wxListCtrl を使ったものを試そうと思います。

引き続き、wxListCtrl のような wxControl 派生に対して
wxMouseEvent 系のイベントをつける方法を求めていますので
何か参考になることがありましたらよろしくお願いします。
602: 2014/01/27(月)14:20 AAS
了解
603: 2014/01/27(月)14:35 AAS
>>601 です。 >>596 について進展したので参考になればと思い報告します。

メニューアイテムの上で右クリックしてポップアップメニューを表示することが可能なクラスが wxPython にありました。
wx.lib.agw.flatmenu がまさにぴったりのクラスでした。
RIGHT_UP のイベントはありませんが、 FlatMenuItem::SetContextMenu(FlatMenu) で >>596 でしたいことが簡単にできます。
自作のために PopupWindow あたりを調べているときに見つけました。

また何かありましたらよろしくお願いします。
604: 2014/02/26(水)17:32 AAS
サンプルが多すぎて逆にわからないのですが、
ランタイム時にGUIパーツを生成消滅させることって可能ですよね?
例えばユーザが読み込んだファイルによってボタンの数を変化させるなど
605: 2014/02/26(水)17:48 AAS
マジレスすると
出来ますよ
606: 2014/02/26(水)18:02 AAS
ありがとうございます
関連するサンプルなどありましたら教えていただけると幸いです
607: 2014/02/26(水)18:06 AAS
きっと君のHDD(SSD)に既に入ってるよω
608: 2014/02/26(水)18:19 AAS
そうなんですよね〜でもsample多くてどっから見ればよいか、という感じです
まあできるということがわかればとりあえず見て回ります
609: 2014/02/26(水)18:34 AAS
チュートリアルで最初の方から見ればすぐ出ると思う。
610: 2014/02/26(水)18:38 AAS
デモ実行してみて自分の欲しい機能と似たものを見つけたら「ソースを見る」をクリック。
611: 2014/02/26(水)18:44 AAS
すいません、見てるものが違うかもしれないので確認させてください
チュートリアルとは何を指してますか?
デモはdemosフォルダの中にあるプロジェクトですよね?「ソースを見る」とはなんでしょうか?
612: 2014/02/26(水)18:48 AAS
ごめん。
見てるものが違った。
wxPython の方見てた。
613: 2014/02/26(水)18:53 AAS
wxPythonのDemo見て目星を付けて
wxPythonのソースを参考にwxWidgetsでCソース書くのもあり
614
(1): 2014/02/26(水)19:08 AAS
なるほど
wxPythonでコードを書いたものがC++に直接変換できたりしたら便利ですね
wxGladeみたいに
615
(1): 2014/02/26(水)20:20 AAS
なんか久しぶりにwxスレが伸びてるぞ、新規ユーザー大歓迎
ボタンとかテキストエリアの動的な生成は、wxPanelとかwxSizerを使った簡単なサンプルを作ったら理解できると思う
言葉で説明するよりコード書いたほうがよいけど一応書いとく

例えばボタンを生成・削除しようとする場合
親Panelをparent, 子panelをchildとすると

1. ウィジェットの生成:parentをnewして、必要な分だけchildをnew
child = new wxPanel(parent, …);
...

2. ウィジェットの削除:parent.DestoryChildren();
この関数で子ウィジェットを全部きれいに削除できる

説明の意味がわからなければ、まずは適当なチュートリアルサイトに行くべし
おすすめ
http://zetcode.com/gui/wxwidgets/
616
(1): 2014/02/26(水)20:22 AAS
>>614
慣れたら直接C++で書けるから多分コンバータは需要無いよ
617: 2014/02/26(水)20:29 AAS
>>615
詳しくありがとうございます
拝見致します

>>616
wxGladeも要りませんかね?
フローはwxGladeで枠を作って機能をC++で書く感じになるのかと
618: 2014/02/26(水)20:30 AAS
そのくらい wx は良く出来てるね。
619: 2014/02/28(金)21:18 AAS
Qt以下の品質。gtkならcで書けた。
620: 2014/03/01(土)00:37 AAS
そらQtのほうがメジャーやろ、死ね
621: 2014/03/01(土)01:40 AAS
どっちも1992年頃にできた。OSSといえども商業的な成功がコミュニティ形成の鍵。
それ以外はGood Oldを懐かしむロートルか宗教的価値観に支えられているだけ。
622: 2014/03/01(土)01:51 AAS
GUI比較スレってなんだよね・・・
比較的な話ってここで展開してもよいものやら
というかwxWidgetとQtどっちも使ってる人っているのか
623: 2014/03/01(土)02:28 AAS
世の中のアプリケーションはQtかAwt/Swingが採用される流れ。
直交性ならgtk。サクッと安定したものを書くならtk。
トイプログラムならSDL+OpenGL。生きるとは残酷なことである。
624: 2014/03/01(土)12:13 AAS
バイナリサイズでかいですな
VC2010でサイズ最適化オプションかけてもHelloWorldで5MB...
これはもうどうしようもない感じ?
625: 2014/03/01(土)12:23 AAS
どうしようもないっす
ベース部分(wxStringとかwxWindowとか)の定義が容量食ってるから?ではないかという疑惑
626: 2014/03/01(土)12:27 AAS
うーんなるほど
ランタイムで色々判断出来るような設計なんですかねえ
627: 2014/03/01(土)12:32 AAS
そうですねwxWidgetsはRTTIの仕組みが活かされてるみたいなドキュメントはどっかで見た
たぶんwxWidgetsの中核であるwxWindowクラスはそんなんばっかしなんだろう
628: 2014/03/05(水)12:40 AAS
ファイル操作系が異様にやりにくい
wxString dir_name("some directly name");
dir_name.Traverse(some_traverser,wxString(""),flags);
でディレクトリたどりながらファイル抽出できるかなとおもったが
flags = wxDIR_FILES
だとそのディレクトリの中身”のみ”探す
flags = wxDIR_DIRS
だとその下の”全ての”階層のディレクトリを抽出する
wxDIR_DEFAULT
だとその下の”すべての”ファイルを探す
なんでこんな仕様なんだ
629: 2014/03/05(水)12:45 AAS
ああわかった
ディレクトリが見つかった場合のみその下も探す、ということなんだな
するとファイルのみだと当然下なんぞ無いからそれ以下を探すことはなく
ディレクトリのみ、とすると下にもいけるから最下層まで探そうとするわけか
うーん
630: 2014/03/05(水)12:55 AAS
連投失礼
Traverserクラスを継承してそのOnDir関数の返り値で制御すればいいということでした
631: 2014/03/11(火)15:51 AAS
浮動小数点を扱えるsliderってデフォルトではなさそうですか?
632: 2014/03/11(火)17:23 AAS
たとえば 0 - 100 を 10 で割ると
0.0 - 10.0 のレンジになります
633: 2014/03/11(火)17:30 AAS
やっぱそんな感じなんすね
最大値最小値現在値ラベル表示が便利だなーとおもったんですが、小数点付きでやろうと思ったら
自分でラベル付けるしかなさそうですね
634
(1): 2014/03/15(土)21:45 ID:w4oGcJBI(1/2)調 AAS
右側のボタンを押したら左側のパネルを再描写させたい、など
あるイベントから(親でない)ほかのイベントを誘発させたい時ってあると思うのですが
その辺に関する記事てどっかにあります?
635
(1): 2014/03/15(土)23:13 ID:eHN/5w2/(1)調 AAS
>>634
そのへんはイベント処理の領域になりますね
wxWiki見るしかない感じ

イメージとしては
Sample::LeftPanelRedraw(wxCommandEvent& event);
というイベント関数のIDがID_LeftPanelRedrawであった場合

そのイベントは
wxCommandEvent e(wxCommandEvent(wxEVT_COMMAND_BUTTON_CLICKED, ID_LeftPanelRedraw));
LeftPanelRedraw(e);
で呼べる
636: 2014/03/15(土)23:39 ID:w4oGcJBI(2/2)調 AAS
>>635
了解です、参考にさせていただきます
637: 2014/03/21(金)11:44 ID:hjbpSh7I(1/2)調 AAS
glcanvasを使ってパネルを描写し、ドラッグに反応するようにしたのですが
ドラッグ中に、ポインタがパネルの範囲外に出た時に、反応が止まってしまいます

sampleのdragimagではドラッグ中であれば範囲外でもイベントが取れるようですが
sampleのopengl/penguinだと取れないようです
マウスイベントの接続は両者ともEVT_MOUSE_EVENTSで行っているので
何が違って取れているのかわかりません
その辺の事情、どなたかご存知ないですか?
638: 2014/03/21(金)12:58 ID:hjbpSh7I(2/2)調 AAS
わかりました
wxWindowBase::wCaptureMouse()を呼び出すと以降座標とイベントが取得されるようです
639: 2014/03/23(日)17:51 ID:cY3NJQQl(1)調 AAS
はい。知ってますよ。
640: 2014/03/23(日)19:26 ID:0loqh5rV(1)調 AAS
いや、知らないです
641
(2): 2014/05/12(月)21:36 ID:d288LkW9(1/2)調 AAS
クロスプラットフォームの開発環境について調べてるんですが、wxWidgetsの
GUIは外観とかは各プラットフォームのものが使われるんですか?それとも
独自のテーマになってしまうんでしょうか?
642
(1): 2014/05/12(月)21:48 ID:N4i3m2/R(1)調 AAS
>>641
各プラットフォームのものが使われます
つまりWindowsならWIN32、LinuxならGTK、MacならCocoa
それぞれの外観になります

対してQtやTk、JavaのSwingなどは独自のテーマになります
643: 2014/05/12(月)21:58 ID:KhXbSVtN(1)調 AAS
Qtってそうだったんだ
644: 2014/05/12(月)22:57 ID:d288LkW9(2/2)調 AAS
>>642
ありがとうございます。他の環境まで概括してくださるとは助かりました。
645: 2014/05/13(火)02:25 ID:mUTDx2p/(1)調 AAS
>>641
敢えてプラットフォームのを使わず
テーマ選ぶ方法もあったはず
646
(1): 2014/05/25(日)10:10 ID:Wcl6d7YS(1)調 AAS
てす
647: 2014/06/03(火)09:02 ID:va6vQ78Z(1)調 AAS
Swiftスレ
2chスレ:tech
648: 2014/06/04(水)21:33 ID:EBZlr/6D(1)調 AAS
いまこのスレ開いたら、>>646にあったはずの有益な書き込みが消えている…
貼っておこう

> 646 名前:デフォルトの名無しさん [sage]: 2014/05/23(金) 01:42:23.54 ID:NdcsMWjh
> wxFormBuilder 3.4.2betaがリリースされていたので試してみたら、
> wxWidgets3.0ベースのGUI描画になったおかげか、2.8をベースに作っていたレイアウトがごっそり狂った。
> これから3.0で作る分にはいいと思うけど、2.8で作る分には3.4.0betaで止めておいた方が良いかも。
649: 2014/06/05(木)01:15 ID:/T91KtMA(1)調 AAS
なんと、板移転したときに消えたのかもしれないね。
650: 2014/06/19(木)12:54 ID:sMGAuaVR(1/2)調 AAS
wxWidgetsを使って作られたプログラムの一覧ってあったりするのかね?
とりあえずAudacityは知ってる
651: 2014/06/19(木)19:37 ID:Brdb8B0I(1/2)調 AAS
http://www.wxwidgets.org/about/screenshots/
とか
652: 2014/06/19(木)19:41 ID:sMGAuaVR(2/2)調 AAS
おーありがとう
後で見て回る
テンプレにあってもいいじゃないかな?
653: 2014/06/19(木)20:07 ID:gduOxxnf(1)調 AAS
車の再発見
654: 2014/06/19(木)22:56 ID:Brdb8B0I(2/2)調 AAS
商用アプリは
http://wiki.wxwidgets.org/Commercial_applications_using_wxWidgets
655: 2014/08/24(日)18:20 ID:Gtnn2j9y(1)調 AAS
wxWidgetsで、フォームを閉じる処理をして実際に閉じるまでの間に発生するイベントとかある?
.NETで言うところのOnClosingみたいな感じで。
656
(1): 2014/08/25(月)02:12 ID:OTL7uAT+(1)調 AAS
OnClose
OnVeto
657: 2014/08/25(月)14:23 ID:IQl9g11m(1)調 AAS
>>656
?
おかげで作業が進みました。
658: 2014/08/26(火)17:09 ID:QEgdFK7f(1/5)調 AAS
Windows で、
CrossBlock + MinGW + wxWidget
で最も簡単な GUI アプリを基本プロジェクトで作成してみたところ、

MyTest.exe のサイズ:736KB
(wxWidgetのDLL) wxmsw28u_gcc_custom.dll のサイズ : 15.9MB
MyTest.exe のメモリ使用量 : 7,732KB // TaskManagerの表示

となった。

この基本アプリは、HelpでAboutでメッセージ・ボックスが表示できる
ようになっているが、メニュー項目をクリックしてから実際にそれが
出るまで数秒かかる。実験したのはそこそこ速いマシンと速いWindows
での事。
659: 2014/08/26(火)17:09 ID:QEgdFK7f(2/5)調 AAS
ただし、遅いのは最初の一回だけ。
一度でも表示すると後は速い。
660: 2014/08/26(火)17:56 ID:QEgdFK7f(3/5)調 AAS
Mailer の Thunderbird-Portable なんかもマルチプラットフォーム対応
だけど、起動がかなり遅い。これも巨大な dll を読み込んだりしてる
からかな。

起動やメニュー操作が遅くなるのはマルチプラットフォーム化する代償
として負わされるのかも知れん。

こういうツールキットで軽快なアプリを作るのは難しいのかもな。
661
(1): 2014/08/26(火)19:14 ID:OmJCXozv(1)調 AAS
小規模の自作ソフトでwxWidgetsをスタティックリンクしない理由が分からん
わざわざ合計バイナリサイズを大きく、速度も遅くする理由がどこにあるのだろう
662: 2014/08/26(火)21:27 ID:QEgdFK7f(4/5)調 AAS
>>661
なるほど、スタティックリンクにすれば、起動後になってからユーザーの
命令に対する応答が遅れる事はなくなるかもしれない。
起動が遅くなるだけで済むんなら、そっちの方がストレスが少ないかも。
663: 2014/08/26(火)21:50 ID:JtVIC4MG(1)調 AAS
ある程度規模が大きくなるとスタティックリンクだと初回起動が遅すぎになので
dllにモジュールを分割してやったほうがいい
起動時のメモリへのロード時間はどうしようもないのでスプラッシュをつけてごまかす
664
(2): 2014/08/26(火)22:39 ID:QEgdFK7f(5/5)調 AAS
CrossBlockでは、monolithic タイプのライブラリをビルドしてから使う
ようになってるんだけど、それも遅い原因なのかな。

でも起動後にユーザー入力に対するレスポンスが遅いのはどう説明すれば
いいんだろう?

普通の Windows の仕様だと原則、起動時に全ての DLL をロードする。
LoadLibrary()を使えば動的にロードすることも可能は可能だけど、
それをする必要は旧OSでサポートしてなかった新OSのDLLをロードする
ような場合は、多言語化のサポートなど。

なるほど、多言語化のせいかも。_("xxx") みたいなのがあったから、
gettext を使ってる。それでリソースを動的ロードしているのか。
665
(1): 2014/08/27(水)04:40 ID:IfBPvyzm(1)調 AAS
何度かアプリ起動しているうちにWindowsのFetchが学習してくれて
DLLとか先読みしてくれるようにならないのだろうか
666
(1): 2014/08/27(水)06:47 ID:J2peHUgZ(1/3)調 AAS
>>665
それはなる。
・ディスクの内容は、メモリにキャッシュされる。
・同じDLLは、全てのアプリで物理メモリが共有されると聞いたことがある。

# >>664 は、CrossBlockではなく、CodeBlocksだった。スマン。

それより、wxWidget 本家のソース配布に入っている samples を
Windows の mingw32 でビルドしてみたところ、全然遅くなかった。

・アプリの起動は速い。
・起動後のメニューコマンドやユーザー入力に対するレスポンスも速い。
・Aboutダイアログも瞬間ではないが、0.3秒程度で、Windows Nativeアプリ
 でも、その程度の遅さはある場合があるので遜色ない。

CodeBlocks で作ったものが遅い原因は今のところ謎。やはり monolithic な
ライブラリを使用しているからか。
667
(1): 2014/08/27(水)07:54 ID:X38Kg7Ty(1)調 AAS
>>666

># >>664 は、CrossBlockではなく、CodeBlocksだった。スマン。

なんだと思ったらわりと素人じゃねえかおい

>CodeBlocks で作ったものが遅い原因は今のところ謎。やはり monolithic な
>ライブラリを使用しているからか。

monolithicってのはwxWidgetsのモジュール全部入りのDLL作るという意味なので遅くて当然
(実際試したことないので遅いというのは初めて知ったが…)

普通は ./configure --prefix=/mingw --enable-shared みたいに指定してビルドするから
モジュールごとに分割されたDLLが作成される
Windows上で開発する時はMinGW + NTEmacs/eclipse CDTの環境がおすすめ
668
(1): 2014/08/27(水)09:58 ID:J2peHUgZ(2/3)調 AAS
>>667
最後の段落:多分、wxWidgets 本体を MInGW32 用のビルドする際は、
configure は使えない気がする。
CodeBlocks のQuickなんたらRefの説明では、いきなり、
make するように支持されていた。しかも、-fno なんたら dll-export
みたいなオプションを付けろと指示。これは、MinGW32のバグで、
付けないと最後のldの段階でldがクラッシュする事をたまたま発見。

ところで話は変わって聞いておきたいのですが、 eclipse では
wxWidget のイベントを書くようなときに

・BEGIN_EVENT_MAP に自動的に一行マクロを挿入してくれて
・*.h にもメンバ関数宣言を書いてくれて
・*.cpp にも5行くらいの関数定義本体の雛形を書いてくれ

たりしますか?
669
(1): 2014/08/27(水)10:01 ID:J2peHUgZ(3/3)調 AAS
つまり、イベント・ハンドラを追加したとき、

BEGIN_EVENT_TABLE(wxListMainWindow,wxScrolledWindow)
EVT_PAINT (wxListMainWindow::OnPaint)
EVT_MOUSE_EVENTS (wxListMainWindow::OnMouse)
EVT_CHAR (wxListMainWindow::OnChar)
EVT_KEY_DOWN (wxListMainWindow::OnKeyDown)
EVT_KEY_UP (wxListMainWindow::OnKeyUp)
EVT_SET_FOCUS (wxListMainWindow::OnSetFocus)
EVT_KILL_FOCUS (wxListMainWindow::OnKillFocus)
EVT_SCROLLWIN (wxListMainWindow::OnScroll)
EVT_CHILD_FOCUS (wxListMainWindow::OnChildFocus)
END_EVENT_TABLE()

とか、クラスを書くとき

IMPLEMENT_DYNAMIC_CLASS(wxListMainWindow,wxScrolledWindow)

見たいなものの自動生成があるとうれしいんですが、そういう IDE
はありません?
670
(1): 2014/08/29(金)11:13 ID:AEJEOYpd(1/2)調 AAS
wxWidgetsの問題点の1つは、プログラムのサイズが大きくなる事。
特に静的リンクしたときに顕著。

Windows は、VC++ にて、
ac1rd: CUI の Win32 と printf() を使ったもののリリース・動的リンク版が 16KB程度。
    puts() を使えばもっと小さく出来る。
ac1rs: CUI の Win32 と printf() を使ったもののリリース・静的リンク版が 40KB程度。
    puts() を使えばもっと小さく出来る。
ag2rd: GUI の MFC の 基本的な MDI アプリがリリース・動的リンク版で 36 KB 程度。
ag2rs: GUI の MFC の 基本的な MDI アプリがリリース・静的リンク版で 332 KB 程度。

wxWidgets 2.8.12 の samples では、
bc1rd: CUI の console.exe がリリース・動的リンク版で 138KB
bc1rs: CUI の console.exe がリリース・静的リンク版で 863KB
bc1dd: CUI の console.exe がデバッグ・動的リンク版で 184KB

bg2rd: GUI の keyboard.exe がリリース・動的リンク版で 293KB
bg2rs: GUI の keyboard.exe がリリース・静的リンク版で 2,924KB
bg2dd: GUI の keyboard.exe がデバッグ・動的リンク版で 492KB

ただし、bc1xx は、アプリ本体のプログラムが複雑なことをしているようなので、
もっと小さく出来る可能性があり。
671: 2014/08/29(金)19:04 ID:GS9LyL7J(1)調 AAS
その説明にac1だの何だの自分以外分からない定義を使う必要があったのだろうか
672: 2014/08/29(金)19:07 ID:AEJEOYpd(2/2)調 AAS
今から見るとそうかも。
a: Windows Native or MFC
b: wzWidgets
c: CUI
g: GUI
r:release, d:debug
d:dynamic link, s:static link
673
(1): 2014/08/30(土)00:17 ID:S/CtHe8u(1/4)調 AAS
>>668

>最後の段落:多分、wxWidgets 本体を MInGW32 用のビルドする際は、
>configure は使えない気がする。

なにいってんだCodeBlocksのドキュメントにそう書いてあるだけで
基本autotoolsで作られたソースはconfigureでビルドできるぞ
実際自分はWindows上のmingw32/64、LinuxのクロスビルドからのMinGWでconfigure使ってる

なぜMakefileでやれという指示なのかというと、そのほうが簡潔で保守しやすいからだ
あとGNU MakeじゃないMakeでもビルドできるようにしたいとかいう微妙なこだわりが有る場合も有る

>>669
エディタの補助機能を使うべきだ、Emacsなら矩形範囲選択で一気に書ける
ソースのひな形自動生成機能は知らんなあ
674
(3): 2014/08/30(土)00:21 ID:S/CtHe8u(2/4)調 AAS
>>670
MinGWビルドでバイナリをストリップしたやつとか比較しないのか
675: 2014/08/30(土)07:56 ID:pUv0T+7B(1/5)調 AAS
>>674
Stripに詳しくないので、言っている意味が分からない。

Stripって Release 用に Build した Binary に対して行っても
サイズダウンできたりするの?
676: 2014/08/30(土)07:58 ID:pUv0T+7B(2/5)調 AAS
>>674
Stripに詳しくないので、言っている意味が分からない。

Stripって Release 用に Build した Binary に対して行っても
サイズダウンできたりするの?
677: 2014/08/30(土)08:15 ID:hpIa4Qjb(1)調 AAS
日本語インライン入力の対応ってまだなの?
というか予定自体なくて諦めた方がいい?
wxWidgets使ってるEditraってエディタにそろそろ移行できるかなと
思って試してみたら、未だにインライン入力できない
678
(3): 2014/08/30(土)08:19 ID:pUv0T+7B(3/5)調 AAS
>>674

小さくなりますた!!

Relese, 動的リンク
/wxWidgets-2.8.12/samples/keyboard/gcc_mswdll/keyboard.exe

strip 前:299,808 bytes
strip 後:124,430 bytes

Relese, 静的リンク
/wxWidgets-2.8.12/samples/keyboard/gcc_msw/keyboard.exe

strip 前:2,993,255 bytes
strip 後:1,887,758 bytes

strip 後も、*.exe が正常に起動することを確認済み。
679
(1): 2014/08/30(土)08:22 ID:pUv0T+7B(4/5)調 AAS
>>673
>エディタの補助機能を使うべきだ、Emacsなら矩形範囲選択で一気に書ける

詳しく:
680: 2014/08/30(土)11:51 ID:RJxcDZkh(1)調 AAS
馬鹿には無理
681
(1): 2014/08/30(土)12:02 ID:S/CtHe8u(3/4)調 AAS
スタンド・アローン・コンプレックスと化した馬鹿には無理さんオッスオッス

>>679
cua-modeでググって
http://qiita.com/yyamamot/items/7efcbfdcccdb5fa45ebe

例えばイベントテーブルとかはこれでザクッと一気に書ける
もちろん個々のwxWindowIDとメソッド定義は書かなくてはいけないが
クラス名とマクロ定義は同じ文字列の繰り返しなのでだいぶ楽になる
682
(1): 2014/08/30(土)13:53 ID:pUv0T+7B(5/5)調 AAS
>>681
あー、そういう風に沢山のイベントを一気に書きたいんじゃなくて、
開発段階で徐々にイベントを追加して行く際に、

1. *.h のクラス内にメンバ関数宣言
2. *.cpp に EVENT MAP
3. *.cpp に メンバ関数定義の本体

の三箇所にコードを書くのが面倒ということなんだわ。
683: 2014/08/30(土)14:33 ID:S/CtHe8u(4/4)調 AAS
>>682
それは自分で作らないと無さげですねえ
684: 2014/08/30(土)19:11 ID:5dlfaubU(1)調 AAS
wxFormBuilderでしかGUIとイベントを設計できない俺には何言ってるのかさっぱりわからんぜよ……
685
(1): 678 2014/08/31(日)15:54 ID:X+I89xFV(1/3)調 AAS
wxAUI のデモ・アプリ wxauitest.exe のサイズは、1,417,216 bytes。
スタンドアロンのアプリで、環境変数からパスを完全に消去しても起動
できた。つまり、ライブラリはDLLを使わずに静的リンクされている。
wxAUIはFloating & Dockingのできる強力なGUI。

>>678 に示した keyboard.exe はキーボードから押されたキーの値を
表示するだけで、上記アプリよりずっとシンプルなのにも関わらず、
1,887,758 bytes と 470,542 bytes も大きい。

理由は不明。
686: 2014/08/31(日)15:56 ID:5rh0udnx(1/2)調 AAS
そんなことしなくても
DLLの依存関係調べるツールあるのに
687
(1): 2014/08/31(日)16:01 ID:5rh0udnx(2/2)調 AAS
ちなみにwxWidgetsで作った一番小さいexe探したら65kbのがあった
688
(1): 678 2014/08/31(日)17:34 ID:X+I89xFV(2/3)調 AAS
Windows実行形式であっても、コンパイラが、MinGW32 と VC++ でサイズに
大幅な違いが出てくるのかな?
1-
あと 272 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s