【GUI】wxWidgets(旧wxWindows) その5【サイザー】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/04/09(金) 15:12:36本家
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/
0154デフォルトの名無しさん
2011/01/30(日) 16:14:400156デフォルトの名無しさん
2011/02/05(土) 22:36:59ttp://wx.ibaku.net/changelog/
連日どんどん更新されてるけど音沙汰ない?
0157デフォルトの名無しさん
2011/02/11(金) 06:24:010158デフォルトの名無しさん
2011/02/11(金) 23:54:180159デフォルトの名無しさん
2011/02/13(日) 21:55:320160デフォルトの名無しさん
2011/02/18(金) 08:33:59EVT_LEFT_UP EVT_LEFT_DCLICK が同時に来るみたいなのですが
EVT_LEFT_DCLICK だけ受け取るにはどうすれば良いでしょうか?
0161デフォルトの名無しさん
2011/02/18(金) 20:45:41wxMouseEventのLeftDClickで判別すればいいんじゃないの?
0162デフォルトの名無しさん
2011/02/18(金) 21:35:20MSIMEならちゃんと表示された
0163デフォルトの名無しさん
2011/02/18(金) 22:05:32ありがとうございます
試してみましたが
結局 EVT_LEFT_DCLICK に bind された handler 内では LeftDClick なのですが
同時に EVT_LEFT_UP に bind された handler も呼ばれてしまっていて
そっちでは LeftDClick じゃないとみなされるので区別出来ないんです ><
0164デフォルトの名無しさん
2011/02/27(日) 19:42:45.69としたとき wxFrame を delete しないようですが
勝手に GC してくれるんでしょうか?
SetTopWindow(frame);
を実行したときとしないときでは違いますか?
0165デフォルトの名無しさん
2011/02/27(日) 20:07:52.060166デフォルトの名無しさん
2011/02/28(月) 14:53:53.44wxWidgetsでは自分で解放すると返って二重解放になる。
ttp://www.wxwidgets.org/docs/faqcmn.htm
FAQに書いてあるから今後はよく読もうな。
0167デフォルトの名無しさん
2011/03/04(金) 16:28:05.88wxStringで与えられたあるパス名がフルパスか相対パスかをwxWidgetsのクラス
(例えばwxFileName等)を使って判断出来ますか?
0168デフォルトの名無しさん
2011/03/04(金) 20:23:10.51wxFileNameにIsAbsoluteというのがあるけども。
それすら調べられないようだとwxに限らずプログラミングは厳しいと思う。
0169デフォルトの名無しさん
2011/03/04(金) 20:25:20.16wxWidgets(wxstd.moの日本語版, ja.po)をお使いの皆様へ
ttp://suzumizaki.blog6.fc2.com/blog-entry-207.html
0170デフォルトの名無しさん
2011/03/04(金) 20:34:43.27こっちも読んでおくといいよ。
二重開放以外にもdeleteがまずい理由があるようだから。
ttp://docs.wxwidgets.org/trunk/overview_windowdeletion.html
0171デフォルトの名無しさん
2011/03/04(金) 21:31:47.32出来ました!!
ありがとうございました!!!
0172デフォルトの名無しさん
2011/03/07(月) 03:32:17.98SetItem - GetItemText とか
SetItemText - GetItem とか
なんか変な対応してるみたいなんですけど
こんなもんなんですか?
他にも IsIconized とか IsShown とか
ドキュメント通りじゃなくて
めちゃくちゃな感じがするんですが
設計者ってパラノイア?
0173デフォルトの名無しさん
2011/03/07(月) 04:30:33.22つ ttp://wiki.wxwidgets.org/WxListCtrl
Get the String Contents of a "cell" in a LC_REPORT wxListCtrl
0174デフォルトの名無しさん
2011/03/07(月) 07:16:25.58出来ました!!
ありがとうございました!!!
0175デフォルトの名無しさん
2011/03/07(月) 11:00:32.39wxWidgetsにはMD5やSHAを計算してくれる関数はありますか?
0176デフォルトの名無しさん
2011/03/07(月) 11:32:42.630177デフォルトの名無しさん
2011/03/07(月) 22:35:46.50176じゃないけど、MD5単品ならこういうのとか。
ttp://www.koders.com/cpp/fid80078010DEFC2265E917FE6436718F0AE038CBE6.aspx
0178デフォルトの名無しさん
2011/03/08(火) 09:26:30.33ありがとうございます
とりあえず別のMD5ライブラリが見つかったのでそちらで間に合わせたのですが
ライセンスの問題とか考えると教えて頂いたもので置き換えた方が良いかも知れません
余力があったら後でご報告します
0179デフォルトの名無しさん
2011/03/09(水) 04:31:11.460180デフォルトの名無しさん
2011/03/09(水) 04:46:40.120181デフォルトの名無しさん
2011/03/09(水) 05:29:32.87出来ました!!
ありがとうございました!!!
0182デフォルトの名無しさん
2011/03/09(水) 17:04:06.53変換出来ない文字が含まれているかどうかのチェック方法について質問です。
UTF8 の文字列を SJIS に変換しようとしています。
static wxString wxString::FromUTF8(const char *s);
の注意書きに、
Note that this method assumes that s is a valid UTF-8 sequence
and doesn't do any validation in release builds,
it's validity is only checked in debug builds.
というのがありまして、
実際に HTTP 経由で取得したデータ (UTF8 であることは確認済み) に
「〜」の上下反対の文字 (SJIS に変換出来ないコード) などが入っていると、
wxString utf8_data;
wxStringOutputStream ostream(&utf8_data);
httpStream->Read(ostream);
wxString sjis_data = wxString::FromUTF8(utf8_data.c_str());
なコードで変換しようとすると
sjis_data の中身が空っぽになってしまいます。
リリースビルドなので無視された結果だと思いますが、
wxWidgets 自身に事前にチェックするための関数などはありますか?
utf8_data には確かに UTF8 のデータが入っています。
問題を起こす文字が含まれていないときは正常に動作するようです。
OS は Windows で wxWidgets は ANSI 版のを使っています。
0183デフォルトの名無しさん
2011/03/09(水) 17:16:21.870184デフォルトの名無しさん
2011/03/09(水) 20:02:39.82wxStringOperations::IsValidUtf8String
0185デフォルトの名無しさん
2011/03/10(木) 08:17:32.00ありがとうございます。
今レス見たばかりなのでまだ試していませんが、
http://docs.wxwidgets.org/trunk/annotated.html
を見ても wxStringOperations は見当たらず
ネームスペースかとも思うのですが、
こういったものはどうやって見つければ良いものですか?
0186デフォルトの名無しさん
2011/03/10(木) 08:25:43.01wxString::FromUTF8Unchecked
0187デフォルトの名無しさん
2011/03/10(木) 08:27:16.48http://trac.wxwidgets.org/wiki/DebugRelease
0188デフォルトの名無しさん
2011/03/10(木) 08:34:44.59ありがとうございます。
しかしそれは Valid じゃない UTF8 データが渡されたときの
動作は undefined だと書かれていますね。
結局事前に調べないといけないことにかわりないようです。
>>187
ありがとうございます。
中身を読んでも良く判りませんでした。
どういう意味でしょうか?
0189デフォルトの名無しさん
2011/03/10(木) 08:38:29.58「〜」301C(E3809C)
はValidじゃないのか?
0190デフォルトの名無しさん
2011/03/10(木) 09:19:31.75cp932に変換出来るかどうかってことなんだよな
そうなるとスレ違いかもな
0191デフォルトの名無しさん
2011/03/10(木) 13:58:57.41俺もアプリ作った事あるけど、S-JISに変換する部分だけはWideCharToMultiByte関数を呼ぶようにしたよ
0192デフォルトの名無しさん
2011/03/10(木) 16:16:13.99残念ながら使えませんでした。
0193デフォルトの名無しさん
2011/03/10(木) 16:24:05.27wxUSE_UNICODE_UTF8 を定義してないと使えないよ
つ ttp://docs.wxwidgets.org/trunk/overview_string.html
0194デフォルトの名無しさん
2011/03/10(木) 22:06:44.16wxString sjis_data = wxString::FromUTF8(utf8_data.c_str());
のところで例外出して死ぬパターンと sjis_data が空になるパターン
それからちゃんと成功するパターンとがありました。
結局アクセスしていたサイトに広告が入っていて、
時間帯によって内容が変わるようなのですが、
どうも本体は UTF8 なのに広告部分だけ SJIS とか、
お粗末なサイトだったのが混乱した原因の一つでした。
0195デフォルトの名無しさん
2011/04/19(火) 00:00:08.700196デフォルトの名無しさん
2011/05/25(水) 00:30:08.010197デフォルトの名無しさん
2011/07/02(土) 23:25:00.75- winpcapのpcap.hはwxWidgetsのヘッダファイルのあとにincludeする必要がある
- pcap.h内部でwinsock2.hを呼んでいる
- winsock2.hはwindows.hの前にincludeする必要がある
- wxWidgetsのヘッダは、物によっては内部でwindows.hを呼んでいる
というデッドロック
#include <winsock2.h>
#include <wx/msw/winundef.h>
#include <wx/wx.h>
#include <pcap.h>
こんな感じでwinsock2.h呼んだあとにwx/msw/winundef.hを呼んでやれば解決する
0198デフォルトの名無しさん
2011/07/16(土) 23:02:41.640199デフォルトの名無しさん
2011/07/17(日) 01:18:11.680200デフォルトの名無しさん
2011/07/17(日) 22:48:55.640201デフォルトの名無しさん
2011/07/17(日) 23:28:11.010202デフォルトの名無しさん
2011/07/17(日) 23:40:23.130203デフォルトの名無しさん
2011/07/17(日) 23:43:54.730204デフォルトの名無しさん
2011/07/18(月) 05:50:22.060205デフォルトの名無しさん
2011/07/28(木) 23:53:32.75ボタンやテキストボックスを表示できる?
0206デフォルトの名無しさん
2011/07/29(金) 04:32:53.10wxListBoxそのままでは無理。
テキストボックスだけでいいならwxEditableListBox使った方が早い。
それ以外でちょっとだけコントロールを付け足したいだけなら、
wxListBox継承してるwxCheckListBoxのソースが参考になると思う。
画像管理ソフトみたいなサムネリストが欲しいならwxThumbnailCtrl
って非公式コントロールが楽(古いので2.9系では若干修正が必要)。
ttp://wxwidgets.blogspot.com/2011/02/markup-in-control-labels.html
で紹介されてるマークアップがwxListBoxにも適用されると見た目を
いじるだけならすごく楽になるんだろうけどねぇ。
0207デフォルトの名無しさん
2011/07/29(金) 07:16:29.38ありがと
0208デフォルトの名無しさん
2011/08/11(木) 06:56:31.32するとして、既に起動しているTestAppがあれば、そのTestAppにパスを引き
渡して自分は死ぬ(多重起動しない)、という動作をしたいです。
Winの場合、EnumWindowsでトップレベルウィンドウでTestAppを探し、
WM_COPYDATAをSendMessageで投げMSWWindowProcで受ける、
という方法を採っていますが、この辺のニーズは常にあるだろうし、
もっと楽なやり方があるんじゃないかと思ってます。
こういう方法の方が楽、とかありましたら教えてください。
と
0209デフォルトの名無しさん
2011/08/11(木) 10:26:43.620210208
2011/08/11(木) 20:27:39.52コメントありがとう。
でもMutexだと多重起動のチェックには使えるけど、
「既に起動している別プロセスへ任意のデータを引き渡す」
って処理には使えなく無いですか?
0211デフォルトの名無しさん
2011/08/12(金) 00:44:19.62・共有メモリ
・TCP/IP
・DDE/OLE/ActiveX
・ウィンドウメッセージ
好きなの使えばいいよ。普通は都合のいい方法を使って自分で作る。
wxならメッセージが一番楽だろう。
0212デフォルトの名無しさん
2011/08/12(金) 01:46:19.300213デフォルトの名無しさん
2011/08/12(金) 12:39:56.45元のをポップアップさせてあとのを閉じれば渡す必要なくね?
0214デフォルトの名無しさん
2011/08/12(金) 12:42:49.43いっそ多重起動もdir lockでやっとけ。
0215デフォルトの名無しさん
2011/08/12(金) 17:59:34.09ttp://docs.wxwidgets.org/2.9.2/classwx_mutex.html
0216デフォルトの名無しさん
2011/08/12(金) 18:09:42.10ttp://docs.wxwidgets.org/2.9.2/classwx_single_instance_checker.html
0217208
2011/08/12(金) 21:25:55.39誤解を生んで申し訳ないんだけど、多重起動の禁止だけじゃなくて、
データを引き渡すってところまでがやりたいことなんです。
>>211
・メモリマップファイル
・共有メモリ
公式ドキュメントだけ読んで無いと思っていたんですが、
改めて調べたら5年前にパッチとして提出されてました。
「理由は言わないけど却下」と問答無用でRejectされてましたが、
普通に使えました(なんで却下されたんだろう……)
・TCP/IP
ちょっと大掛かりですが、確かにこれだとwxWidgetsのクラスのみで
クロスプラットフォームにいけますね。
・DDE/OLE/ActiveX
MSが意図しているアプリ間通信にはこれを使うべきなんですかね。
クロスプラットフォームからはかけ離れますが。
0218208
2011/08/12(金) 22:02:35.23はい。最初に書いたとおり、これは把握済です。
ただ、全トップレベルウィンドウを調べるwxWidgetsの関数って
無いですよね?(MS側のAPIはあるけど)
>>213
・起動済アプリを殺して自分が前面に出る
タスクバーに収納されていたり表に出ていたり、というアプリにしているので、
起動済のアプリのそれらの状態を把握するのにちょっと手間がかかりますね。
表示状態のコピーが不要なら確かに比較的手っ取り早いですが。
>>214
・作業ファイルにデータ書き込み&排他制御
大量のデータ通信をアプリ間でやるわけじゃないので、
手っ取り早く汎用性も高くwxWidgetsだけで完結しますね。
しかもクロスプラットフォームで安定している。なるほど。
皆さん色々な案の提示、どうもありがとうございました。
0219デフォルトの名無しさん
2011/09/02(金) 20:17:08.41両者の比較を書いているサイトや記事などありましたら教えてください。
0220デフォルトの名無しさん
2011/09/02(金) 20:28:54.93wxWidgetsのススメ
http://up-cat.net/wxWidgets%A4%CE%A5%B9%A5%B9%A5%E1.html
0221デフォルトの名無しさん
2011/09/02(金) 23:04:35.910222デフォルトの名無しさん
2011/09/02(金) 23:29:46.37スタティックライブラリはできたけど、DLL版は全然ビルドできないわ、サンプルはデバッグ
ライブラリ用になってるからいちいち直さないといけない&直しても同じリソースがどうたら
でビルドできんし、Qtにいくわ
0223デフォルトの名無しさん
2011/09/03(土) 00:34:44.800224デフォルトの名無しさん
2011/09/03(土) 01:05:50.35結局添付されていたVC2008用のプロジェクトファイルがうんこで、VC6用の奴を変換して
ビルドしたらうまくいきましたわ
サンプルも同じでVC6用の奴を変換してビルドすると正常にビルドできました
悪口いってすまん、けどビルドできないVC2008用プロジェクトファイルって罠じゃないのか
0225デフォルトの名無しさん
2011/09/03(土) 10:36:44.010226デフォルトの名無しさん
2011/09/03(土) 11:45:57.63ので、そうしてました。
お騒がせして申し訳ないついでに実は開発版の2.9.2をビルドしようとしてたみたいで、俺死にたい...
というより氏ね>俺
0227デフォルトの名無しさん
2011/09/03(土) 12:10:03.39gccの方がすんなり行くんじゃないかなぁ。
0228デフォルトの名無しさん
2011/09/03(土) 18:49:10.70たまたまVC入ってたからVCでやってたけど、MinGの方が捗るの?
0229デフォルトの名無しさん
2011/09/03(土) 20:59:18.77VCのことは知らないけどMinGWだと普通に2.9.2コンパイルできたし
コーディングの効率を考えるとVCのオートコンプリート機能が使えたら楽かもしれんが、たぶん出来んだろうしな
0230デフォルトの名無しさん
2011/09/03(土) 21:56:21.73VCでいい。
0231デフォルトの名無しさん
2011/09/04(日) 17:11:05.31悩んでた、.aで正しいのにwww
アホすぎる俺
しかしwxWidgetsいいね、コントロールは揃ってるし、ドッキングもできる、開発版にすればリボンもどきも
使えるし、wxFormBuilder使えばGUIで画面組み立てられるし、とりあえず満足できる環境だし
0232デフォルトの名無しさん
2011/09/04(日) 19:07:07.57VC++2008でビルドしたサンプルauidemo.exeは6073KB、MinGWでは9761KB、stripかけて6645KBだった
どちらもデバッグなしのリリース版なんだけど、MinGWの方がでかくなるのね
Dumpbinで依存DLL調べてみたら、VC++2008の方は標準DLLのみでVCランタイム依存もなし
かたやMinGWはやり方が悪いのだろうけどlibgcc_s_dw2-1.dll、libstdc++-6.dllに依存してた
VC++2008の方が優秀な気がする
0233デフォルトの名無しさん
2011/09/04(日) 19:22:45.46MSYS上から、
g++ -static -o test.exe test.cpp `wx-config --cxxflags` `wx-config --libs`
こうかな?
-staticオプションつければOKのはず。
以下、wxをビルドしたときの設定。MinGW-w64でもいけました。
./configure --with-opengl --enable-ipv6 --disable-shared --disable-monolithic --enable-unicode --enable-official_build --disable-threads --prefix=/mingw
0234デフォルトの名無しさん
2011/09/04(日) 19:51:43.280235デフォルトの名無しさん
2011/09/04(日) 19:52:42.860236デフォルトの名無しさん
2011/09/04(日) 21:11:45.91アホな俺にわざわざありがとう!
もう1回試してみます!
0237デフォルトの名無しさん
2011/09/04(日) 22:39:22.73なるほど人によるなあ。
俺なら「わざわざVC使わんでも、MinGでいい」って発想になるわ。
0238デフォルトの名無しさん
2011/09/04(日) 23:30:54.03ライブラリも作成し直し、サンプルもビルドし直しましたがサイズは6621KBでした
あとDLL依存はとれないのですね
0239デフォルトの名無しさん
2011/09/05(月) 00:04:36.25同意。
UNIX文化的には、gccが「標準」でVCは「非標準」って認識だからなぁ。
自分で何か書く時とか、「自分はgccしか使わないけど、Win使いのためにVCもサポートしてやるか」ってレベル。
0240デフォルトの名無しさん
2011/09/05(月) 00:32:26.75何がデフォで何がわざわざなのかが違うってことで。
で、wxそのものがUNIX文化なんだよな。
0241デフォルトの名無しさん
2011/09/05(月) 12:01:41.27サンプルはそのままビルドするとDLL依存になるとおもう。
cd samples
make "LDFLAGS = -static"
こんな感じでいかかでしょ。
0242デフォルトの名無しさん
2011/09/05(月) 19:03:01.60いや、自分でmakeファイルに-static直書きしたけど駄目でした
まぁ、なんか勘違いしてるか頭がアホなんて理解できてないだけでしょう
とりあえずVCでも問題ないのでVCでやります、いろいろありがとうございました
0243デフォルトの名無しさん
2011/09/05(月) 19:16:34.99がんがれ。
ただ、オープンソース系のライブラリを今後使っていくんなら
いずれにしてもgcc系の流儀とかも覚えておいた方がいいと思うよ。
0244デフォルトの名無しさん
2011/09/06(火) 00:10:08.28pushd build\msw
nmake -f makefile.vc BUILD=debug UNICODE=1 USE_GDIPLUS=1 SHARED=1 RUNTIME_LIBS=dynamic
popd
こんな感じでいいんじゃね
あと2.9.2はstableじゃないけどいいの?
0245デフォルトの名無しさん
2011/09/10(土) 20:25:18.76http://www.dotup.org/uploda/www.dotup.org2004935.jpg
こういうよくある(名前、種類、ディレクトリ、サイズ)みたいなのを
表示したいんですがヴィジェットは何を使ったらいいでしょうか?
できれば画像のように名前のところの矢印みたいなのを付けたいのと
項目の順番をD&Dで入れ替えたり表示、非表示をポップアップメニューで行いたいです。
項目にはDBのカラムを割り当てたいと思っています。
0246デフォルトの名無しさん
2011/09/10(土) 20:38:38.06なんでいつも質問した後は簡単に見つかるんだろう…
0247デフォルトの名無しさん
2011/09/10(土) 23:30:44.520248デフォルトの名無しさん
2011/09/11(日) 23:37:25.340249デフォルトの名無しさん
2011/09/20(火) 23:30:06.13これ使って書いたプログラムってソースコード開示する必要あるの?
教えてエロい人!!
0250デフォルトの名無しさん
2011/09/22(木) 08:11:29.040251デフォルトの名無しさん
2011/09/22(木) 12:00:14.060252デフォルトの名無しさん
2011/09/22(木) 18:59:22.32ところで組み込み用のwxWidgetsとかないんだろうか。
■ このスレッドは過去ログ倉庫に格納されています