【GUI】wxWidgets(旧wxWindows) その5【サイザー】

2010/04/09(金) 15:12:36
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。

本家
 ttp://www.wxwidgets.org/
wxWindows日本語プロジェクト
 ttp://wxwindowsjp.sourceforge.jp/
Cross-Platform Programming with wxWidgets
 ttp://wxwidgets.info/
Let's wxWidgets
 ttp://dot-gray.s33.xrea.com/
wxWindowsで始めるC++ GUIプログラミング
 ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
 ttp://0xcc.net/pub/uu-2004-08/

前スレ
【GUI】wxWidgets(旧wxWindows) その4【サイザー】
http://pc12.2ch.net/test/read.cgi/tech/1214657360/
2012/11/22(木) 21:38:02.68
>>505
はいはいワロス
2012/11/22(木) 23:26:03.48
>>506
ひでー
2013/01/10(木) 03:31:25.47
>>492
何度も言うよ
残さず言うよ
だろ
>>493
中途半端なつっこみするなら黙ってろよムズムズする
509デフォルトの名無しさん
垢版 |
2013/01/10(木) 07:36:12.49
何度でも言うよ
欠かさず言うよ
GTKは糞
2013/01/10(木) 16:50:22.28
マイナーGUIスレを見たけど、以前はFOXが人気だったんだね
まだ息してるのかな
2013/01/10(木) 16:53:16.15
今はもう、QtかWxWidgetsの二択にしか見えない。気のせい?
2013/01/11(金) 08:37:58.62
FortranプログラムのGUIシェルをwxWidgetsで作ろうとsampleのexecを改造しているけれどよくわからない。
いい本ないでしょうか。
最近wxPythonの本が出ましたがパイプまでは書いていないので…
513デフォルトの名無しさん
垢版 |
2013/01/11(金) 09:01:20.21
eNprdGhEhnH6XMi8RgcFfQj71L1t6+FS
Cvr6jXc0G/c3BgLhfriwvl5No4NejUJz
LpIZQVwwPY0OQOkaBSBnDlRujgKYC4ZQ
ZfoKYGVzkkEcDYX4xjnxmo0OzXUKU/L6
1jadbDo7bfP0uVwwA8FqG4MgjH01YAMa
A7kgNND1LQtgroC6Kb4xDiyr1BiAAjP1
9JpzFQBRXmeP
2013/01/13(日) 12:10:17.65
64bit版MinGWでwxWidgetsコンパイルしてるけど
作ったバイナリが起動すらしないので死にそう
2013/01/14(月) 01:59:27.93
コンパイルできた
64bitネイティブアプリや、どや
2013/01/15(火) 01:35:39.03
windows7を使用しています。

ttp://wiki.wxwidgets.org/Beech:Using_common_dialogs
を参考に拡張子が、csvとtxtのファイル名のみを取得しようとしています。

wxDir::GetAllFiles(dir , &filename ,wxT("*.txt"));
wxDir::GetAllFiles(dir , &filename ,wxT("*.csv"));
filespecが一つのときは指定拡張子のみ取得できます。

wxDir::GetAllFiles(dir , &filename ,wxT("*.csv;*.txt"));
2個指定すると何も取得されません。

指定方法が悪いと思うのですが、どのようにすればいいのでしょうか?
教えてください。
2013/01/15(火) 06:14:19.90
http://trac.wxwidgets.org/ticket/4420
518デフォルトの名無しさん
垢版 |
2013/01/15(火) 06:31:29.95
分からないならレスしないでください
2013/01/15(火) 17:15:14.30
>>517
レスありがとう。
一つしかサポートされないのですね。

ありがとうございました。
2013/01/16(水) 15:50:20.31
なんで
ttp://wiki.wxwidgets.org/Beech:Using_common_dialogs
を参考にすると
wxDir::GetAllFiles(dir , &filename ,wxT("*.csv;*.txt"));
が出てくるんだろ
基地外か
2013/01/16(水) 23:31:49.99
wxWidgetsを使おうとしてる時点でオカシイのだ(・∀・)
2013/01/17(木) 18:18:55.83
童貞乙
2013/01/19(土) 07:42:35.24
この道はいつか来た道♪ああ そうだよあかしやの花が咲いてる
2013/01/20(日) 02:49:05.26
windowsで変な抽象レイヤなんて触るなら、c#使った方がマシ
2013/01/21(月) 20:07:51.79
wxRubyでWindowsのイベントを捕まえたいのですがどのようにすれば出来ますか?
C++なんかだとMSWWindowProcをオーバーライドすることで出来るみたいですが
wxRubyには見あたらないような・・・
526デフォルトの名無しさん
垢版 |
2013/01/21(月) 23:44:55.73
Ruby を Windows で使う人って()
2013/01/21(月) 23:59:56.58
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://toro.2ch.net/test/read.cgi/tech/1155031689/
2013/01/23(水) 01:57:17.09
>>521
MFCを直に触りたくないとき、他に候補なんてある?
2013/01/23(水) 04:51:35.91
Qt
2013/01/23(水) 07:01:30.47
CLX, GTK+, Qt, Tk, FLTK, FOX

C言語/C++ベースおよびマルチ言語ベース
ウィジェット・ツールキット - Wikipedia
2013/01/23(水) 07:03:10.89
Agar
CEGUI
GLUI
Juce
Ultimate++
Visual Component Framework (VCF)
YAAF
2013/01/30(水) 12:24:11.63
MFCならWindowsのみで動けばいいんだろ

WTL
OWLNext
2013/01/31(木) 05:40:10.73
このひとまた変な本出してるな
ttp://www.amazon.co.jp/dp/4877832890/
このひとの他の本酷かったから買うつもり無いけど
2013/02/28(木) 14:11:47.04
またバグを発見してしまった

http://docs.wxwidgets.org/stable/wx_wxinputstream.html#wxinputstreamlastread

wxInputStream::LastRead
size_t LastRead() const

LastReadをlinuxで使うと常に0で返ってくる。
6年前に修正されてるはずだけどbranchに入ってないからバグったまんまですかVZさん。。。
2013/02/28(木) 14:13:49.27
チケットは以下

http://trac.wxwidgets.org/changeset/44485
2013/02/28(木) 14:15:06.81
そうか、 2.8のブランチには入ってるけど2.9には反映されてないのか、どちらにせよだめぽ
2013/03/01(金) 00:54:34.59
wxInputStreamなんて使わんから
2013/03/01(金) 01:16:17.90
馬鹿には無理
2013/03/01(金) 08:18:29.29
wxWidgets は正規表現とか、
文字コードの変換がいまいち信用出来ないので、
window のフレームワークだけに使って、
基本的なロジックは boost とかで済ますのが正解。
540デフォルトの名無しさん
垢版 |
2013/03/16(土) 15:59:13.75
wxwidgetsのListCtrlのカラムに直接描画したいんだけどどうしたらいい?
具体的には、ダウンローダなどによくあるようなダウンロード状況を表す
横棒のグラフに%が表示されてるような奴なんだけど
2013/03/16(土) 16:03:03.35
馬鹿には無理
2013/03/31(日) 11:08:01.89
ググったら>>64がヒットした。
x64のgcc4.7以降でソースからコンパイルすると途中でcc1plusが止まった
x64のvc9じゃ止まらない。更新途絶えてるから修正期待するのは無理か
2013/03/31(日) 13:02:54.41
>>64
>>542

共有ライブラリもしくはモノリシックライブラリをビルドする場合、公式のMinGWだとメモリを使い果たしてしまう
TDM-GCCに切り替えた上で CXXFLAGS='-fno-keep-inline-dllexport' を付けて configure実行するよろし

これはwxWidegts側のバグと言うよりもMinGWのバグだ
2013/04/01(月) 01:17:29.35
>>543
あらゆるオプションくっつけてもダメだった
FLTKはvcでもgccでも問題なかったんだけどな、これgccじゃなくてmingw側の問題なのか
2013/04/01(月) 01:21:48.05
wxWidgetsってVisualStudio2012で動く?
2013/04/01(月) 05:07:51.79
>>545
普通にVS2012でビルドして使ってるよ
2013/04/01(月) 07:42:14.94
昨晩発見、mingw-w64-dgnってトコのパッチ当てたらx64MinGWでもビルド出来た。
gccはTDM4.7.1、時間が無いのでconfigureのオプションくっつけて無いけど一発で通った

具体的には、textentry.cppの#include <shlguid.h>を削除するだけ
548デフォルトの名無しさん
垢版 |
2013/04/04(木) 14:07:26.83
ハードディスクのMBR領域をバックアップしたいんだけど
どうやってプログラム書いたらいいかな

Linuxのときは/dev/sdaを開いて読むだけだったけど
Windowsとコード一緒にできない
2013/04/04(木) 14:19:00.69
共通の方法は無いかって話?
2013/04/04(木) 15:10:10.41
dd.exe のソース見ると良い
2013/04/04(木) 15:49:15.97
そうするわ
でもパスカルわかんねーんだよな・・・
2013/04/04(木) 16:02:05.02
wxWidgets 関係の話?
2013/04/09(火) 09:13:04.65
wxPythonなんですがベジエ曲線を書くにはどうすれば良いですか?
2013/04/09(火) 18:52:10.99
描画系クラスならwxDC使えばいいんじゃないかなあ
http://docs.wxwidgets.org/2.8/wx_wxdc.html
2013/04/10(水) 11:56:17.56
出来ました
ありがとうございました
http://docs.wxwidgets.org/2.8/wx_wxgraphicspath.html#wxgraphicspathaddcurvetopoint
556デフォルトの名無しさん
垢版 |
2013/06/24(月) 15:12:38.36
Latest Development Release: 2.9.4
Current Stable Release: 2.8.12
Previous Stable Release: 2.6.4
http://www.codeproject.com/Articles/11515/Introduction-to-wxWidgets
2013/06/26(水) 18:58:08.93
Mac OSX LionだとwxWidgets 2.8 がビルドできない・・・
wxWidgets 2.9ビルドするとダイナミックリンクライブラリが一部作成されない・・・
Mac PortのwxWidgets-devをダウンロード するのが一番良さげ

あとMac OSXでpthreadをバイナリにリンクさせたらいきなり実行ファイルが落ちやがる
罠多すぎだろあのOS
2013/06/26(水) 19:01:52.04
ttp://www.HackInt0sH.org/
2013/07/17(水) NY:AN:NY.AN
wxWidgets-2.9.5では>>429で言ってたバグが直ってるぞ、やったぜ
560デフォルトの名無しさん
垢版 |
2013/08/24(土) NY:AN:NY.AN
wxってlispで使えますか?
2013/08/24(土) NY:AN:NY.AN
馬鹿Lisperには無理
2013/08/24(土) NY:AN:NY.AN
lispなんて使ってかっこつけやがって
563デフォルトの名無しさん
垢版 |
2013/08/30(金) NY:AN:NY.AN
みなさんお世話になりました
明日で2ch終了らしいので
今のうちに最後のご挨拶をしておきます
2013/08/31(土) NY:AN:NY.AN
wxWidgetsのコミッタのVadim ZeitlinがC++11でwxWidgets書いてるぞ

wxWidgets and C++ 11
http://wxwidgets.blogspot.com/2013/08/wxwidgets-and-c-11.html
565デフォルトの名無しさん
垢版 |
2013/08/31(土) NY:AN:NY.AN
時既におすし
566デフォルトの名無しさん
垢版 |
2013/09/06(金) 17:26:06.71
http://chrome.blogspot.jp/2013/09/a-new-breed-of-chrome-apps.html
http://itpro.nikkeibp.co.jp/article/NEWS/20130906/502868/
http://news.mynavi.jp/news/2013/09/06/057/
http://internet.watch.impress.co.jp/docs/news/20130906_614308.html
2013/09/06(金) 23:08:20.72
>>566
昔から何度も提唱されてるブラウザによる全てのGUIの描画ですか
Googleは達成できるか
2013/09/11(水) 00:44:38.34
Firefoxって知ってる?
2013/09/20(金) 22:19:19.81
mozillaに出来なくともgoogleになら出来る
570デフォルトの名無しさん
垢版 |
2013/10/10(木) 10:11:38.40
wcSVG
571デフォルトの名無しさん
垢版 |
2013/10/16(水) 23:19:09.83
3.0.0-RC1
2013/10/17(木) 08:33:10.45
wxD
573デフォルトの名無しさん
垢版 |
2013/10/17(木) 12:18:17.29
>>572
どうしてるんだろうな
そのプロジェクト...
574デフォルトの名無しさん
垢版 |
2013/10/20(日) 16:58:10.15
wxTcl
2013/11/05(火) 22:48:07.34
3もRC2まで行ってるし、次は今月中に正式版出るかな
576デフォルトの名無しさん
垢版 |
2013/11/05(火) 23:10:06.75
出たとしたらLinuxのパッケージにwx-3.0が出て使えるようになる
楽しみ
577デフォルトの名無しさん
垢版 |
2013/11/13(水) 21:36:52.45
3.0.0キテタ━━ヾ(゚∀゚)ノ━━!!
2013/11/14(木) 22:26:30.66
おいおい3.0だぞ?出たんだぞ?なんでこんなに盛り上がんないんだよ…
2013/11/14(木) 23:36:17.18
メインの機能追加がUnicode対応だからなぁ
今までも別に日本語使えなかったわけではないし
580デフォルトの名無しさん
垢版 |
2013/11/14(木) 23:52:35.30
何言ってだこいつ
unicodeは前から使えてるっての

所感
・Mac向けビルドの安定化
・wxwebviewが全ポートで使える
→ ネットワーク接続して、html, Javascriptの解釈可能に
・aui系のバグ修正と見た目の品質向上
・c++11, clang対応
・その他即死系のバグ修正

間違ってたらすまん
とりあえず2.9で出てたバグは直ってるはず
581デフォルトの名無しさん
垢版 |
2013/11/15(金) 00:03:58.47
あと>>364で出てたUTF-8以外の文字列からの変換とかどうなったんだろ
うまく変換できてるなら嬉しいけど

その他にもクラスは2.8の時より増加してるよね
2013/11/15(金) 00:55:39.31
MinGW gcc + wxWidgets 2.8.12で作っていたプログラムを3.0.0で作り直したら、
ウィンドウリサイズ時のwxStaticText、wxCheckBox、wxListBoxのフリッカーが見るに耐えんレベルになった。
かと言ってSetDoubleBufferを使うとリサイズがモタつく上に、何故かwxRadioBoxの枠線が消えるんだよなー。
仕方ない、一つ一つwxEVT_ERASE_BACKGROUNDを潰す作業を初めるか…。
2013/11/15(金) 03:59:07.98
gcc4.8で動くなら使う
x86_64-w64-mingw32じゃ、2.9はとうとうビルドさえ無理だった
2013/11/15(金) 04:14:31.91
4.8だとやっぱりcc1plusが停止した、しかも2.9と同じファイル
公式から落としてきたライブラリ使ってもリンクに失敗
4.7ならライブラリのビルドもリンクも問題なし
2013/11/15(金) 05:11:08.20
あ、やっぱ出来た
パラレル無しでビルドするか>>543
CXXFLAGS='-fno-keep-inline-dllexport'
をつけると大丈夫みたい、後者だと1度止まるけど再ビルドすれば通るしサンプルもビルド出来た
2013/11/15(金) 06:44:39.98
連投失礼、>>584-585は見なかった事にしてね
当方の環境、win7 64bit msys上からビルド、gccは4.9、静的リンクでビルド

configureにCXXFLAGS="-fno-keep-inline-dllexport"をつけてもevent.cppで止まる
その時あらためてmake CXXFLAGS="-fno-keep-inline-dllexport"としてビルドすると通る

gcc4.8だと2.9はビルドでこけるしリンクも失敗するってのは国内外でよく見かけたし、実際俺も
あきらめてたけど…ひょっとして2.9もこの方法で通ったのかなあ。

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

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

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

環境は wxPython 2.8-msw-unicode です。
よろしくお願いします。
2013/12/28(土) 17:54:40.37
>>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(); // 右クリックイベントを定義しておく
}
598596
垢版 |
2013/12/29(日) 12:00:00.67
>>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 系のイベントは関連付けられないのでしょうか?
2013/12/29(日) 12:26:46.93
>>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.
2013/12/29(日) 12:34:09.46
いや、ちょっと違うか
メニューの右クリックイベントは掴めるけど
その時呼び元のメニューの項目が消えるといってるのか

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

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

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

また何かありましたらよろしくお願いします。
2014/02/26(水) 17:32:22.79
サンプルが多すぎて逆にわからないのですが、
ランタイム時にGUIパーツを生成消滅させることって可能ですよね?
例えばユーザが読み込んだファイルによってボタンの数を変化させるなど
2014/02/26(水) 17:48:08.47
マジレスすると
出来ますよ
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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