【GUI】wxWidgets(旧wxWindows) その3【サイザー】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/09/09(土) 00:06:30本家
http://www.wxwidgets.org/
wxWindows日本語プロジェクト
http://wxwindowsjp.sourceforge.jp/
Let's wxWidgets
http://dot-gray.s33.xrea.com/
(*)準備中(*)
http://www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
http://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
http://www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
http://www.idg.co.jp/sw/back/200102/20010219_01_report.html
0798デフォルトの名無しさん
2008/04/04(金) 18:27:39あんまり回答こないYO!
0799デフォルトの名無しさん
2008/04/04(金) 18:33:29wxWidget の問題なのか、C++なのか、XCode なのかとかさ。
0800デフォルトの名無しさん
2008/04/04(金) 18:37:47XCode使ってます。
逆に言うと、全く皆目見当つかなくて、切り分けできないので質問なげてます。
切り分け出来たら、あとはリファレンスとか何とか手に入れて全パターン試すだけですもんね。
ライブラリの構築(--disable-sharedですか?)の失敗なのか、
プロジェクトのmakeのコマンドラインが悪いのか。。。
0801795
2008/04/04(金) 18:48:380802デフォルトの名無しさん
2008/04/04(金) 18:58:07wx-config --static=yes --libs
で出てくるオプション指定するとどうかな
使ってる共有ライブラリを特定するには
otool -L バイナリファイル名
で出てくる
0803794
2008/04/04(金) 19:07:00795さんうらやますぃ
0804795
2008/04/04(金) 19:15:39>wx-config --static=yes --libs
「他のリンクフラグ」に入れましたが、ダメみたいです。(入れ方が悪いのかも。いろいろ試してみます。)
>otool -L バイナリファイル名
/System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
/System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 18.0.0)
/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
/System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 11.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.3)
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 63.0.0)
/System/Library/PrivateFrameworks/ZeroLink.framework/Versions/A/ZeroLink (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
こんな感じです。多杉orz
0805795
2008/04/04(金) 19:36:51>ライブラリ検索パス
>フレームワーク検索パス
が空文字でした。
これが問題なのかな?
0806795
2008/04/04(金) 19:47:29プロジェクトのメンバーにライブラリファイル
>mac-ansi-release-static-2.8
がちゃんと入っていました。
逆に、
>*.a
ファイルまで入ってるため、ダイナミックリンクになっちゃうのかな?
0807795
2008/04/04(金) 19:58:03リリースビルドを行うと、
>/usr/bin/ld: can't locate file for: -lwx_base_carbon-2.8
というエラーになりましたorz
0808デフォルトの名無しさん
2008/04/04(金) 22:57:30もっと図太くならないと。バンバンageながら、質問やら状況を795並みにするんだ。
恥ずかしくなんか無い!!
0809転載せざるをえない
2008/04/04(金) 23:05:241. ハードウェア、OSのバージョン等には一字一句触れない。
2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。
3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。
目の前で生じている現象をそのまま具体的に書くなどもっての外。
事実より俺様の脳内解釈を優先すべし。
4. 独り言文体で必勝。
「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」
5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。
6. もう試したことを得意げに指摘してくる奴には、厳しく対応。
「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」
"どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。
7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。
「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」
示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので
絶対に避ける。
8. 情報は小出しに。
「エスパーきぼんぬ」 補足
上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。
そのような悪い質問に対して答えられるのは,
質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ,
という意味であって,決して,高度な技術を持つユーザに対する尊称ではない。
まちがっても「エスパーの方,回答お願いします」
なんて痛い質問するな。つうか氏ね。
0810デフォルトの名無しさん
2008/04/04(金) 23:11:06をオプションに入れるんじゃなくて、これを実行して出てくるオプションを入れてくれ
というか一体どうやってビルドできるところまで設定したのよ
0811デフォルトの名無しさん
2008/04/04(金) 23:20:44794がかわいそうすぎる
0812794
2008/04/04(金) 23:26:42ありがとうございます。
神経細いわけではないと思うんですが笑、
状況を詳しく書こうと思っても、エラーが出るとかじゃないですしOSどうこうってわけでもなく、単純に使い方が分からないってだけなのでこれ以上説明できることが何もないのです・・。
wxFormbuilder使えば、wxFormbuilder上で既存のウィジェットを継承したクラスを作成できると思っているのですが、そもそもそれが間違っているのでしょうか??
ていうか809は俺のこと言ってるんですかね?汗
0813809
2008/04/05(土) 02:55:06そういや開いてから3時間ぐらい放置してたわ
…それだけだと何なので、
http://wiki.wxformbuilder.org/Tutorials/UsingSubclass
こういうことではないの?
0814デフォルトの名無しさん
2008/04/05(土) 09:25:00wxFBではクラスを作ることはできないので、自分で作るしかない。
ただ、作ったクラスを使うことはできる。適当にコントロールを置いて、プロパティのところに、includeするヘッダとクラス名を書けば
そのクラスを使うようにはなるが、コンストラクタへの引数やスタイルなどのプロパティは置いたコントロールに依存するので、paneあたりを
継承すれば、wxWindowあたりを継承したコントロールなどにも対応できる。
MS VC++のMFCのようなものではなくて、リソースファイルを作るぐらいに考えるといいのかな。
ウィンドウやダイアログごとに別ファイルにしたいなら、作者に要望を出すとか、ソース公開されてるから自分で変えるとか・・・
0815794
2008/04/05(土) 13:54:14> 813 さん
そのページも見たのですが、どうもサブクラスに使う名前とヘッダーファイルを指定できるだけのような感じがして、求めているものじゃない感じでした。
> 814 さん
>>wxFBではクラスを作ることはできないので、自分で作るしかない。
>>MS VC++のMFCのようなものではなくて、リソースファイルを作るぐらいに考えるといいのかな。
やっぱりそういうものだったのですか。
情報ありがとうございました。
逆に、継承クラスを書いたり、クラス別にファイルを吐き出してくれたりするwx関連のRADツールみたいなものはないのでしょうか??
0816デフォルトの名無しさん
2008/04/07(月) 19:23:00自分でコードを書いて作ったコントロールを
wxFormBuilder上でフォームに貼ることならできるみたい。
http://wiki.wxformbuilder.org/Tutorials/CreatingCustomWidgets
これだけ調べて出てこないということは、
wxでは、コントロールはコードで書く必要があるのではないかと。
0817デフォルトの名無しさん
2008/04/07(月) 23:58:12wxFormbuilder か wxDev C++ っていうのが一番よく見かけるような気がしたのでどちらかにしようかと思っているのですが、それぞれどういった特徴があるんでしょうか??
なんか上のやりとり見ているとの実際使ってみても何ができて何ができないのかすぐに分からなそうな気がしたので、詳しい方に教えてもらう方が早いかと思いました。
よろしかったらどなたかご教示ください。
0818デフォルトの名無しさん
2008/04/08(火) 19:05:350819デフォルトの名無しさん
2008/04/09(水) 12:50:10ただし Borland/CodeGear C++ Builder 用のアドインだけど。
0820デフォルトの名無しさん
2008/04/09(水) 13:11:03それ使って上での話?
C++Builderなら使ってるんだけど、
wxWidgetsは心機一転、別のIDE(wx-dev)にしちゃったおorz
0821デフォルトの名無しさん
2008/04/09(水) 13:50:41いや、使ってない。
Web 上の資料を見て「RAD じゃん!」と思ったので。
0822デフォルトの名無しさん
2008/04/09(水) 13:57:350823795
2008/04/09(水) 13:59:07有り難うございます。出力されました。
-L/MyDev/wxMac-2.8.7/lib -framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime
/MyDev/wxMac-2.8.7/lib/libwx_mac_richtext-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_aui-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_xrc-2.8.a
/MyDev/wxMac-2.8.7/lib/libwx_mac_qa-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_html-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_adv-2.8.a
/MyDev/wxMac-2.8.7/lib/libwx_mac_core-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_base_carbon_xml-2.8.a
/MyDev/wxMac-2.8.7/lib/libwx_base_carbon_net-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_base_carbon-2.8.a
-framework WebKit -lwxregex-2.8 -lwxexpat-2.8 -lwxtiff-2.8 -lwxjpeg-2.8 -lwxpng-2.8 -lz -lpthread -liconv
>というか一体どうやってビルドできるところまで設定したのよ
XCodeにFinderからてきとーにD&Dしました。
0825デフォルトの名無しさん
2008/04/09(水) 19:05:59頼むから、内容を細切れにして、いろんなスレでマルチで聞くのはやめてくれ。
誘導元か、関連するレスのリンクを貼ってくれないと状況が理解できない。
そんなんだと、根本的な問題の原因を見抜けなくてドツボにはまるかもよ。
0826デフォルトの名無しさん
2008/04/09(水) 20:14:280827デフォルトの名無しさん
2008/04/09(水) 21:35:35俺はRubyな人だけどXRCedが一番使いやすいと思ったわ
0828デフォルトの名無しさん
2008/04/10(木) 07:55:350829デフォルトの名無しさん
2008/04/10(木) 21:00:420830デフォルトの名無しさん
2008/04/10(木) 21:18:140831デフォルトの名無しさん
2008/04/11(金) 17:21:30簡単なGUIハローワールド程度のプログラムならコンパイルできる状態なのですが、
普通に g++ sample1.cpp sample2.cpp `wx-config --cppflags --libs`
とした時に、リンク時に、
undefined reference to `wxWindow::RegisterHotKey(int, int, int)'
や
undefined reference to `wxWindow::UnregisterHotKey(int)'
などのエラーが出るソースがあります。(コンパイルには成功しているみたいです。)
ググってみたのですが、情報が少なく解決できていません。(英語苦手というのもあります汗)
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLJ,GGLJ:2006-39,GGLJ:ja&q=undefined+reference+to+%60wxWindow%3a%3aRegisterHotKey%28int%2c+int%2c+int%29%27
解決方法分かる方いらっしゃいましたら、教えていただけると幸いです。
0832デフォルトの名無しさん
2008/04/11(金) 17:37:29上記のソースは1つのLinux環境と2つのWindows home 環境で試したのですが、Linux環境ではリンクにも成功してビルドできるのですが、Windows Home 環境では両方ともリンクに失敗します。
なので、WindowsにインストールされているwxMSWで設定がおかしいところがあるのかなと思うのですが・・
0833831
2008/04/11(金) 18:54:27wx-config --libs で使うライブラリがmsys の /usr/lib
になければいけなかったのですが、なぜだか/local/lib にインストールされていたせいでした。
/usr/lib にコピーするだけで解決しました。
wxWidgetsインストール時のバグだったんでしょうか。。
0834デフォルトの名無しさん
2008/04/11(金) 20:31:28wxGlade は、次の2点が理由で好きではないのです。
1. 自分の書いたコードと自動生成されたコードがまざるのが不安
2. Output Path に指定したパスが保存したファイル(*.wxg)に入ってしまう。
特に2番は、複数マシンで開発をしているときに困ります。
0835デフォルトの名無しさん
2008/04/11(金) 20:41:34>wx-config --libs で使うライブラリがmsys の /usr/lib
>になければいけなかったのですが、なぜだか/local/lib にインストールされていたせいでした。
prefix指定しなかったのならデフォルトで /usr/local/lib にインストールされる。それが普通。
あと別に /usr/lib になければいけないなんてことはなくて
コンパイル時に -L/usr/local/lib つければいいだけ。
wx以前にgccの使い方の話なんでその辺勉強してみるといいかも。
0836デフォルトの名無しさん
2008/04/12(土) 00:57:03>1. 自分の書いたコードと自動生成されたコードがまざるのが不安
C++で使ってるけど,wxGladeの吐く.cpp, .hとは別のファイルにそれから
派生したクラスを定義して,実装は派生クラスに書いて,wxGladeの吐く
コードとはほぼ完全に分離できている。
>2. Output Path に指定したパスが保存したファイル(*.wxg)に入ってしまう。
.wxgからの相対パスで指定すればOKかと。
0837デフォルトの名無しさん
2008/04/12(土) 05:51:46wx-config って、その -L とかを自動で指定してくれるスクリプトのはずなんだよ。
それが必要なパスを吐かないなら、設定に問題がある。
インストールがうまくいかなかったんじゃないかな。
0838デフォルトの名無しさん
2008/04/12(土) 10:58:54自分は Python 形式で書き出しているので、
書き出されたファイルの一部に手を加える必要があります。
(最低でも ID 宣言とか)
相対パスで指定できるのは知らなかったです。
試してみます。
0839デフォルトの名無しさん
2008/04/12(土) 21:18:32ど素人なのすが、Windowsではwx-config は msys上でしか使えませんか?
eclipse上で指定したいのですが無理ですか?
0840デフォルトの名無しさん
2008/04/13(日) 11:54:53@c:\msys\1.0\bin\sh.exe --login -c "wx-config %*"
こんな感じでwx-config.batとか作るといいかもしれない
eclipseでバッチファイルをそのままオプションに指定できるのかどうかはわからないが
0841デフォルトの名無しさん
2008/04/13(日) 18:02:18のですがwxImageの画像データを直接取得する
方法はありませんか。GetData,SetDataでは
コピーしか渡らないようでうまく行きません。
PIL,Pygameによる画像変形は転送がネックに
なり高速になりませんでした。
PyOpenGLでは画像を直接取得できそうなのですが
画像が大きくなる(2048*2048)とリソースで
問題が出るようで試していません。
御教示お願いします
0842デフォルトの名無しさん
2008/04/13(日) 18:43:25wxImageのGetDataならピクセルデータを直接得られるはずだよ。
少なくとも、自分のところではそうなってる
0843841
2008/04/14(月) 01:39:36Python上で出来ました?
言葉が足りなかったので補足しますと、
wxImageの画像アドレスを知りたいのです。
ctypesでGetDataから渡された文字列を
強制的に書き換えても画像に反映されないので
コピーが渡されているようです。
高速化するにはDLLから直接書き換えるしか手が
なさそうなのですが、やっぱり無理
かなぁ。メニューのフォントサイズ変えるため
MenuItem.SetFontしたら落ちるし、前途多難…
0844デフォルトの名無しさん
2008/04/14(月) 03:11:03wx.ImageのGetDataBufferはダメだった?
0845843
2008/04/14(月) 17:22:28御回答有難うございます。
GetDataBufferってあったんですね。_core.py見なおしたら
見つかりました。返却値はbufferオブジェクトですね。
str()はありますがアドレスは隠蔽されてるみたいです。
Pythonからのアクセスはかなり快適で面白いオブジェクト
でしたが…残念。
答えていただけそうなのでもう1件お尋ねします。
wxBitmapを大量に格納しようとするとすぐ落ちて
しまいます。wxImageでは問題無いのでシステムリソースに
格納してるのかとも思っているのですが、その
限界を知る方法がよく分りません。御存知の方が
いましたら御教示お願いします。
0846デフォルトの名無しさん
2008/04/14(月) 19:52:08DLL 側で画像描画をできないだろうか…と
ちょっと思ったり。
ファイルからの Bitmap の読み込みも DLL 側でやる感じで。
0847843
2008/04/14(月) 22:50:17bufferオブジェクトってインタラクティブな状態で
見ると実体アドレスが出てる。bufferオブジェク構造体から
アドレスを拾えるみたいです。ctypesで直接書き込んで
確認できました。pyrex使えばなんとかなる…かも
教えていただき有難うございました。
>>846
ちょっと似たことをPILのImageWin.Dibでやってみました。
描画はPILからwxでwxのDCにPILからpasteする方法です。
結果はクリッピングがとても面倒で実用になりません
でした。pythonオブジェクトはpyrexで簡単に
拾えるかもしれませんが私の能力では実現は厳しそうです。
0848デフォルトの名無しさん
2008/04/15(火) 19:07:29ソースの文字コードがUTF-8だったので、UbuntuではwxWidgetsの文字コードがデフォルトでUTF-8になっていて、WindowsではUTF-8ではない(多分S-JIS?)ということだと思うのですが、結局Windowsでは文字コードは何で開発するのがいいんでしょうか?
どういう観点から考えて決めればいいのか分からないので、ご助言頂けると幸いです。
0849デフォルトの名無しさん
2008/04/15(火) 22:09:40wxWidgets をインスコする際に UTF-8 モードか ANSI モード(すなわち日本語だと shift jis モード)か選択出来るので、
クロスプラットホームのために wxWidgets をつかってるなら使うプラットホームでそれを同じにしておいたほうがいいです。
どっちにするかですが、これからの時代は何も考えず UTF-8 にしておくのがよいと思います。単に業界の趨勢なので。
0850848
2008/04/16(水) 00:01:26やはりUTF-8ですか。
,/configure のときに --enable-unicode でいいのですよね。
レスありがとうございましたm(_ _)m
0851850
2008/04/18(金) 12:54:56./configure --enable-unicode
でmake し直したのですが、
やはりUTF-8のソースをビルドするとインターフェース部分のマルチバイト文字が化けてしまいます。
どうすればUTF-8のソースを文字化けせずにビルドできるようになるでしょうか?
Windows Home
wxWidgets 2.8.7 です。
どなたか教えていただけると幸いです。
0852デフォルトの名無しさん
2008/04/18(金) 17:47:58VCならBOM有りの場合にはshift jisに変換後にコンパイルしてくれる。当然、埋め込んだ文字列はMBCSのShift_JISになる。
そこで、Shift_JIS->UTF-8への変換をプログラムでやる必要がでてくる。
もう一つの方法は全て英語で書きASCIIにして、.po/.moファイルを作成しi18nにより日本語を表示する。
この場合全てasciiなので、UTF-8とShift_JISは同じものとなるので、特に問題は生じない。
0853デフォルトの名無しさん
2008/04/18(金) 23:37:55そもそもマルチバイト文字列をソースコードに書き込むのは
ポータビリティー上良くないということを認識しましょう。
コンパイラによって扱いが変わってくるので。
将来誰かが非日本語版のを作る場合とかも考えて、
(オープンソースなら誰か勝手にやるだろうし、会社でやってても
中韓国語版をつくることになるかもしれない)
ソースは ascii にして、wx の国際化機能をつかってやるのが吉。
ちょっと手間でも、いま払っておいた手間が後で
格段に仕事を節約することになります
0854843
2008/04/19(土) 01:58:58言われた意味がよくわかりました。ConvertToBitmapが
滅茶苦茶遅い!本気でImageからDCに直接描き込もうか
とも考えましたが、別の解決策があったので止めました。
でもScaleやRotateの出力先くらい指定できた方が
扱い良さそう。
実験としてwxPython用のコンボリュ−ション行列と
YUV操作関数作ったけど…誰も要りませんよね
0855デフォルトの名無しさん
2008/04/19(土) 03:49:33将来的にもソースは出せないと思います。
ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。
0856854
2008/04/19(土) 05:03:13直接wxImageをPythonからいじるノウハウについて
言ってるだけですよ。swig通してオブジェクトを
いじれれば質問もせずに済んだんですけど
0857デフォルトの名無しさん
2008/04/19(土) 14:34:240858854
2008/04/19(土) 23:09:46wxImageからDCに直接描画するwxPythonライブラリも
作ったけど御忠告に従います。有難うございました。
0859デフォルトの名無しさん
2008/04/20(日) 12:27:47いや、>>3 のコピペは「作ったのに公開しない人」を皮肉ったもので
悩まずどんどん公開すべきという意味だと思います。
0860デフォルトの名無しさん
2008/04/20(日) 12:32:530861デフォルトの名無しさん
2008/04/20(日) 21:21:39664 名前:デフォルトの名無しさん [sage]: 2006/01/09(月) 04:46:55
wxWidgetsのwxScintilla(wxStyledTextCtrl)に手を加えているのですが
意見をもらえないのでしょうか?
http://www.geocities.jp/full_sarcasm/testedit.html
開発途中のWindows版バイナリです。
車輪の再発明をしても仕方がありませんし、公開に値するしろものでもありませんので
将来的にもソースは出せないと思います。
ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。
0862デフォルトの名無しさん
2008/04/21(月) 12:25:27遅いけどこんなんあった
http://miteidesu.seesaa.net/article/93929180.html
0863デフォルトの名無しさん
2008/04/22(火) 00:21:52おぉぉぉ。すばらしい。明日試してみます!
0864デフォルトの名無しさん
2008/04/24(木) 17:03:40同じ症状のかたいらっしゃるでしょうか?
wxWidgets と gdbは相性が悪いのだろうか・・
0865デフォルトの名無しさん
2008/04/24(木) 18:08:21MinGW固有の問題かな?
0866864
2008/04/25(金) 00:34:380867デフォルトの名無しさん
2008/04/25(金) 14:41:33ここを見るとwxFileConfigクラスのインスタンスを宣言する時は、引数にwxInputStreamクラスのオブジェクトが必要なようなのですが、
wxInputStreamクラスのインスタンスはどのように宣言すればいいのでしょうか??
http://docs.wxwidgets.org/2.6/wx_wxinputstream.html#wxinputstreamctor
ここを見ると creates dummy input sream となっていてよく分かりません。
設定ファイルに使うファイルのパスを何かしらの方法で引数のwxImputStreamクラスのオブジェクトの中に入れておかなければいけないと思うのですが・・
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx464.htm
ここも見てみましたが、探している情報は載っていないように感じました。
どなたか教えて頂けると幸いです。
0868845
2008/04/25(金) 23:36:24私の環境はWin98だったのですが、この場合内部で
DIBもしくはDDBを作成する為システムリソースを
食い潰す事が原因のようです。Win9xはリソース上限が
2M程度と聞きますが実際はよく分りません。
Win上でスクリプトからなら大量の画像はwxImageで
管理した方がよさそうです。
wxのソースをみてたらwxImageの処理があんなに
遅い訳がわかります。せめてAlphaの有無で
ループを別けてくれれば拡縮とかは少しは速く
なりそうなんですが…。
0869デフォルトの名無しさん
2008/04/25(金) 23:58:000870845
2008/04/26(土) 00:51:40そう出来ればいいですねぇ…
リソース浪費するのは同じなのでWin2000以後も
この件に付いては気をつけたほうが良いとも
思います。ソースを追っていませんし管理方法に
詳しくありませんが、wxはDIBとDDBを使い分けてる
ようでDDBならVRAMの容量が処理能力に直結する
気がします。
0871デフォルトの名無しさん
2008/04/26(土) 05:17:33wxFileInputStreamで開けばいい。
0872デフォルトの名無しさん
2008/04/26(土) 09:32:15Vista WDDM以降、DDBはDIBみたいに振る舞うので注意。
0874867
2008/04/26(土) 19:59:52ありがとうございます。wxFileInputStreamなんてクラスがあるんですね。
ただ、また疑問点が出てきてしまいました。
http://www.h3.dion.ne.jp/~k5_n/wxwin/memo/ver0_2.html
ここを見て設定ファイル周りのコードを書いていたのですが、
そもそもwxFileConfigのコンストラクタの引数型が
http://docs.wxwidgets.org/2.8.6/wx_wxfileconfig.html#wxfileconfigctor
ここに書いてあるものと全然違うことに気付きました。
そもそもアプリケーションの設定ファイル周りの機能を作るにはwxFileConfigクラスを使うので正しいのでしょうか?
http://www.h3.dion.ne.jp/~k5_n/wxwin/memo/ver0_2.html
この資料は大分古いようなので・・(自分はwxwidgets2.8.7を使ってます)
ちなみにこの資料に書いてある通りに書くと、
wxFileConfigクラスのインスタンスのRead関数は正常に動くのですが、Write関数が正常に動きません・・
コンパイルは成功しているのですが、Write関数で設定ファイルを更新しようとしても何も更新されません。。
どなたかアドバイス頂けると幸いです。
0875デフォルトの名無しさん
2008/04/27(日) 08:11:310876デフォルトの名無しさん
2008/04/27(日) 10:02:270877874
2008/04/28(月) 12:19:09wxFileConfig::Write(); が、コンパイルには成功するのに正常に動作しない問題が解決しました。
正常に動かないときは
wxFileConfig* m_pConfig
..略..
m_pConfig->Write(wxT("sample"), 10);
のように、wxFileConfigのポインタからアロー演算子でWriteメソッドにアクセスしていたのですが、
wxFileConfig m_Config(コンストラクタの引数);
m_Config.Write(wxT("sample"), 10);
のように、ポインタにせずドット演算子でWriteメソッドにアクセスすると、書き込みに成功しました。
これはwxWidgetsのバグなんでしょうか??
どなたか同じ症状の方はいらっしゃるでしょうか?
0878デフォルトの名無しさん
2008/04/28(月) 13:15:540879デフォルトの名無しさん
2008/04/28(月) 13:16:20そんなバグは聞いたことがない。
m_pConfigの実体を確保し忘れてるとか、多分そんなのが原因だと思う。
0880874
2008/04/28(月) 15:38:11#include "wx/wx.h"
#include "wx/config.h"
#include "wx/fileconf.h"
wxString config_file = wxGetCwd();
#if defined(__WXMSW__)
config_file += "\\";
#else
config_file += '/';
#endif
config_file += APP_CONFIG_FILE; // APP_CONFIG_FILEはdefineマクロ
wxFileConfig* m_pConfig = new wxFileConfig(
wxEmptyString,
wxEmptyString,
config_file,
wxEmptyString,
wxCONFIG_USE_LOCAL_FILE);
int dt = 10;
m_pConfig->Write(wxT("sample"), long(dt));
newで実体確保できてますよね??(おそるおそる)
これをビルドしようとするとコンパイルもリンクもできるんですが、
m_pConfig->Write(wxT("sample"), long(dt));
の部分を実行しても何も起きないんです。
Read();は普通に動くんですが・・
0881デフォルトの名無しさん
2008/04/28(月) 15:57:160882デフォルトの名無しさん
2008/04/28(月) 16:20:22両方やってないから書き込まれない。
0883874
2008/04/28(月) 16:39:36>>882さん
レスありがとうございます。
Write(); のあと Flush(); でいけました!まじありがとうございます!
Flushが必要、という情報が見つけられないのですが、よろしかったらソースを教えて頂けないでしょうか??
あと、「両方やってないから書き込まれない」の「両方」とは、Flush(); と、あともう1つは何でしょうか??
0884デフォルトの名無しさん
2008/04/28(月) 16:45:51>>882 を読んでそれが何かわからないようならC++を勉強しなおした方がいい
0885デフォルトの名無しさん
2008/04/28(月) 16:48:43「両方」じゃなくて「どちらも」の間違いだった。どちらかでも行えば書き込まれる。
あと、人に聞くまえにリファレンスを読め。
0886874
2008/04/28(月) 17:18:22の
permanently writes all changes (otherwise, they're only written from object's destructor)
部分だったんですね。。
http://docs.wxwidgets.org/stable/wx_wxconfigbase.html#wxconfigbasewrite
こっちのWrite();のリファレンスの方には
write the specified value to the config file
ってあるので、Write();だけでファイルに書き込めるのだと思っていました。全く分かりませんでした。。
ありがとうございましたm(_ _)m
0887851
2008/05/02(金) 23:40:36>>853 さん
めちゃくちゃ遅くなってすいません・・
レスありがとうございましたm(_ _)m
なんか書き込んだと思ったら書き込んでなかった?ようです><
すいませんm(_ _)m
0888デフォルトの名無しさん
2008/05/06(火) 01:24:28勉強し始めたばかりなんですが、トップフレームにボタンを作って、
このボタンを押すと、別スレッドで重い処理を実行させて、終わったら
「終わりました。」てメッセージボックスを表示させるプログラムを書いてます。
別スレッドのなかでwx.MessageBox("終わりました。","")を実行すると、
Windowsでは普通に表示されてOKボタンでメッセージボックスが閉じますが、
Linux(GTK)だとメッセージボックスが表示されますが、固まってしまいます。
WindowsとLinuxどちらの動作が正常なんでしょうか?
(wx.Frameなどを継承していない)別スレッドのクラスからwxを使っていいのでしょうか?
0889デフォルトの名無しさん
2008/05/06(火) 19:56:05http://docs.wxwidgets.org/stable/wx_threadfunctions.html#wxmutexguienter
0890デフォルトの名無しさん
2008/05/09(金) 20:18:36ありがとうございます。
やっぱり何も対策を取らないと固まるんですね^^;
wx.MessageBox("終わりました。","")の手前にwxMutexGuiEnter()を書いて、
直後にwxMutexGuiLeave()を書いて試しましたが、wxMutexGuiEnter()で
固まってしまいました。たぶんMutexの初期化?が足りないのかもしれません。
http://wiki.wxpython.org/LongRunningTasks
ここを参考にwx.PostEventを使って、Windows&Linuxで思い通りの動作になりました。
0891デフォルトの名無しさん
2008/05/11(日) 07:22:33config.gccのopenglのオプションを有効にしてgccでコンパイルしました。
openGL用のライブラリがリリース版とデバッグ版の2つできたのですが、
2つともファイルサイズが40kb程度しかありません。
これで正しくライブラリができているのでしょうか?
0892デフォルトの名無しさん
2008/05/26(月) 12:11:450893デフォルトの名無しさん
2008/05/26(月) 12:24:10GLCanvasってレンダリングコンテキストのハンドリングぐらいしかやってないんじゃないかな。それだけならそんなもんじゃないかなぁ。
0894デフォルトの名無しさん
2008/05/26(月) 23:56:39>それ用の関数ってないですよね??
質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。
自分が既に調べてみつからなかったんだけど ... ということをアピールして、
しかも、自分って正しいですよね、という雰囲気である。
これでは自分で心を閉ざしているようなものであって、
API レファレンスを読めばみつかる API もみつからない。
というのは別にして、wxString::find(const wxString&,size_t) ではだめなの?
0895デフォルトの名無しさん
2008/05/26(月) 23:59:560896デフォルトの名無しさん
2008/05/27(火) 00:04:290897デフォルトの名無しさん
2008/05/27(火) 00:28:370898892
2008/05/27(火) 02:09:22>>質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。
>>自分が既に調べてみつからなかったんだけど ... ということをアピールして、
う、こういう聞き方、あまりよろしくないのですかね??
単純に「ありませんか??」だとググれと言われてしまうし、かと言って毎回なんか質問書き込む度に既に調べて分からなかったので質問しましたってのは正直億劫だったのでこんな感じの聞き方になっていましたが・・
wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね??
でもwxString::Cmpとforとif使ってなんとかなったので、質問したこと自体は解決しました。
>API レファレンスを読めばみつかる API もみつからない。
これはなんでですか??
この質問の仕方だとなんでAPIリファレンスに書いてあるAPIも見つからなくなる、のでしょう?
突っ込まれて反論してるのではなく、どういう意味か分からなかったので単純に教えて頂きたいな、ということです。
■ このスレッドは過去ログ倉庫に格納されています