1 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 00:06:30 ] クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。 本家 www.wxwidgets.org/ wxWindows日本語プロジェクト wxwindowsjp.sourceforge.jp/ Let's wxWidgets dot-gray.s33.xrea.com/ (*)準備中(*) www.geocities.co.jp/SiliconValley-Cupertino/8526/ wxWindowsで始めるC++ GUIプログラミング www.h3.dion.ne.jp/~k5_n/wxwin/ wxWidgets でクロスプラットフォーム GUIアプリを作ろう namazu.org/~satoru/pub/uu-2004-08/ dW : Linux : wxWindowsの概要 www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html SunWorld Online:wxWindows――無名だが成熟したGUIツールキット www.idg.co.jp/sw/back/200102/20010219_01_report.html
862 名前:デフォルトの名無しさん mailto:sage [2008/04/21(月) 12:25:27 ] >>839 遅いけどこんなんあった miteidesu.seesaa.net/article/93929180.html
863 名前:デフォルトの名無しさん mailto:sage [2008/04/22(火) 00:21:52 ] >>862 おぉぉぉ。すばらしい。明日試してみます!
864 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 17:03:40 ] Eclipse CDT と MinGW でwxWidgets使ったプロジェクトの開発しているのですが、gdbでデバッグしようとすると、頻繁にエラーが出て落ちます。 同じ症状のかたいらっしゃるでしょうか? wxWidgets と gdbは相性が悪いのだろうか・・
865 名前:デフォルトの名無しさん mailto:sage [2008/04/24(木) 18:08:21 ] Linux上では全然問題ないよー MinGW固有の問題かな?
866 名前:864 mailto:sage [2008/04/25(金) 00:34:38 ] むーそうですか。。ありがとうございます。
867 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 14:41:33 ] docs.wxwidgets.org/2.8.6/wx_wxfileconfig.html#wxfileconfigctor ここを見るとwxFileConfigクラスのインスタンスを宣言する時は、引数にwxInputStreamクラスのオブジェクトが必要なようなのですが、 wxInputStreamクラスのインスタンスはどのように宣言すればいいのでしょうか?? docs.wxwidgets.org/2.6/wx_wxinputstream.html#wxinputstreamctor ここを見ると creates dummy input sream となっていてよく分かりません。 設定ファイルに使うファイルのパスを何かしらの方法で引数のwxImputStreamクラスのオブジェクトの中に入れておかなければいけないと思うのですが・・ wxwindowsjp.sourceforge.jp/docs/html/wx/wx464.htm ここも見てみましたが、探している情報は載っていないように感じました。 どなたか教えて頂けると幸いです。
868 名前:845 mailto:sage [2008/04/25(金) 23:36:24 ] 大量のwxBitmap格納で落ちる事への自己レスです。 私の環境はWin98だったのですが、この場合内部で DIBもしくはDDBを作成する為システムリソースを 食い潰す事が原因のようです。Win9xはリソース上限が 2M程度と聞きますが実際はよく分りません。 Win上でスクリプトからなら大量の画像はwxImageで 管理した方がよさそうです。 wxのソースをみてたらwxImageの処理があんなに 遅い訳がわかります。せめてAlphaの有無で ループを別けてくれれば拡縮とかは少しは速く なりそうなんですが…。
869 名前:デフォルトの名無しさん mailto:sage [2008/04/25(金) 23:58:00 ] まだ Win 98 なのなら、XP 売っているうちに買っておいたほうが良いよ >>868
870 名前:845 mailto:sage [2008/04/26(土) 00:51:40 ] >>869 そう出来ればいいですねぇ… リソース浪費するのは同じなのでWin2000以後も この件に付いては気をつけたほうが良いとも 思います。ソースを追っていませんし管理方法に 詳しくありませんが、wxはDIBとDDBを使い分けてる ようでDDBならVRAMの容量が処理能力に直結する 気がします。
871 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 05:17:33 ] >>867 wxFileInputStreamで開けばいい。
872 名前:デフォルトの名無しさん mailto:sage [2008/04/26(土) 09:32:15 ] >>870 Vista WDDM以降、DDBはDIBみたいに振る舞うので注意。
873 名前:845 mailto:sage [2008/04/26(土) 18:13:24 ] >>872 勉強になりました。 M$の言い分としてはVistaが動かせるようなPCなら 気にする事ではないんでしょうねぇ。
874 名前:867 mailto:sage [2008/04/26(土) 19:59:52 ] >>871 さん ありがとうございます。wxFileInputStreamなんてクラスがあるんですね。 ただ、また疑問点が出てきてしまいました。 www.h3.dion.ne.jp/~k5_n/wxwin/memo/ver0_2.html ここを見て設定ファイル周りのコードを書いていたのですが、 そもそもwxFileConfigのコンストラクタの引数型が docs.wxwidgets.org/2.8.6/wx_wxfileconfig.html#wxfileconfigctor ここに書いてあるものと全然違うことに気付きました。 そもそもアプリケーションの設定ファイル周りの機能を作るにはwxFileConfigクラスを使うので正しいのでしょうか? www.h3.dion.ne.jp/~k5_n/wxwin/memo/ver0_2.html この資料は大分古いようなので・・(自分はwxwidgets2.8.7を使ってます) ちなみにこの資料に書いてある通りに書くと、 wxFileConfigクラスのインスタンスのRead関数は正常に動くのですが、Write関数が正常に動きません・・ コンパイルは成功しているのですが、Write関数で設定ファイルを更新しようとしても何も更新されません。。 どなたかアドバイス頂けると幸いです。
875 名前:デフォルトの名無しさん [2008/04/27(日) 08:11:31 ] MacのwxPythonでwx.MessageDialogのアイコンがどれ選んでも蛇が入ったロケットみたいなアイコンなんですがバグでしょうか?
876 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 10:02:27 ] 仕様です
877 名前:874 mailto:sage [2008/04/28(月) 12:19:09 ] 874です。 wxFileConfig::Write(); が、コンパイルには成功するのに正常に動作しない問題が解決しました。 正常に動かないときは wxFileConfig* m_pConfig ..略.. m_pConfig->Write(wxT("sample"), 10); のように、wxFileConfigのポインタからアロー演算子でWriteメソッドにアクセスしていたのですが、 wxFileConfig m_Config(コンストラクタの引数); m_Config.Write(wxT("sample"), 10); のように、ポインタにせずドット演算子でWriteメソッドにアクセスすると、書き込みに成功しました。 これはwxWidgetsのバグなんでしょうか?? どなたか同じ症状の方はいらっしゃるでしょうか?
878 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 13:15:54 ] ポインタだけで実体作ってなかったとかいうオチは許さんぞ。
879 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 13:16:20 ] >>877 そんなバグは聞いたことがない。 m_pConfigの実体を確保し忘れてるとか、多分そんなのが原因だと思う。
880 名前:874 mailto:sage [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();は普通に動くんですが・・
881 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 15:57:16 ] ちゃんとdeleteしないと書き込まれないんじゃないか?
882 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 16:20:22 ] Flush()しない場合はデストラクタで書き込まれる、とあるな。 両方やってないから書き込まれない。
883 名前:874 mailto:sage [2008/04/28(月) 16:39:36 ] >>881 さん >>882 さん レスありがとうございます。 Write(); のあと Flush(); でいけました!まじありがとうございます! Flushが必要、という情報が見つけられないのですが、よろしかったらソースを教えて頂けないでしょうか?? あと、「両方やってないから書き込まれない」の「両方」とは、Flush(); と、あともう1つは何でしょうか??
884 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 16:45:51 ] >>883 >>882 を読んでそれが何かわからないようならC++を勉強しなおした方がいい
885 名前:デフォルトの名無しさん mailto:sage [2008/04/28(月) 16:48:43 ] >>883 「両方」じゃなくて「どちらも」の間違いだった。どちらかでも行えば書き込まれる。 あと、人に聞くまえにリファレンスを読め。
886 名前:874 mailto:sage [2008/04/28(月) 17:18:22 ] docs.wxwidgets.org/stable/wx_wxconfigbase.html#wxconfigbaseflush の permanently writes all changes (otherwise, they're only written from object's destructor) 部分だったんですね。。 docs.wxwidgets.org/stable/wx_wxconfigbase.html#wxconfigbasewrite こっちのWrite();のリファレンスの方には write the specified value to the config file ってあるので、Write();だけでファイルに書き込めるのだと思っていました。全く分かりませんでした。。 ありがとうございましたm(_ _)m
887 名前:851 mailto:sage [2008/05/02(金) 23:40:36 ] >>852 さん >>853 さん めちゃくちゃ遅くなってすいません・・ レスありがとうございましたm(_ _)m なんか書き込んだと思ったら書き込んでなかった?ようです>< すいませんm(_ _)m
888 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 01:24:28 ] wxPythonの質問なんだけど、ここで大丈夫? 勉強し始めたばかりなんですが、トップフレームにボタンを作って、 このボタンを押すと、別スレッドで重い処理を実行させて、終わったら 「終わりました。」てメッセージボックスを表示させるプログラムを書いてます。 別スレッドのなかでwx.MessageBox("終わりました。","")を実行すると、 Windowsでは普通に表示されてOKボタンでメッセージボックスが閉じますが、 Linux(GTK)だとメッセージボックスが表示されますが、固まってしまいます。 WindowsとLinuxどちらの動作が正常なんでしょうか? (wx.Frameなどを継承していない)別スレッドのクラスからwxを使っていいのでしょうか?
889 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 19:56:05 ] どっちが正常ってか、Windowsで固まらないのはまぐれ docs.wxwidgets.org/stable/wx_threadfunctions.html#wxmutexguienter
890 名前:デフォルトの名無しさん mailto:sage [2008/05/09(金) 20:18:36 ] >>889 ありがとうございます。 やっぱり何も対策を取らないと固まるんですね^^; wx.MessageBox("終わりました。","")の手前にwxMutexGuiEnter()を書いて、 直後にwxMutexGuiLeave()を書いて試しましたが、wxMutexGuiEnter()で 固まってしまいました。たぶんMutexの初期化?が足りないのかもしれません。 wiki.wxpython.org/LongRunningTasks ここを参考にwx.PostEventを使って、Windows&Linuxで思い通りの動作になりました。
891 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 07:22:33 ] windows xp MinGW環境ですが、openGLを使いたいと思い、 config.gccのopenglのオプションを有効にしてgccでコンパイルしました。 openGL用のライブラリがリリース版とデバッグ版の2つできたのですが、 2つともファイルサイズが40kb程度しかありません。 これで正しくライブラリができているのでしょうか?
892 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:11:45 ] wxStringオブジェクトを走査して特定の文字列が何回出てくるか調べたいんですが、それ用の関数ってないですよね??
893 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 12:24:10 ] >>891 GLCanvasってレンダリングコンテキストのハンドリングぐらいしかやってないんじゃないかな。それだけならそんなもんじゃないかなぁ。
894 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:56:39 ] >>892 >それ用の関数ってないですよね?? 質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。 自分が既に調べてみつからなかったんだけど ... ということをアピールして、 しかも、自分って正しいですよね、という雰囲気である。 これでは自分で心を閉ざしているようなものであって、 API レファレンスを読めばみつかる API もみつからない。 というのは別にして、wxString::find(const wxString&,size_t) ではだめなの?
895 名前:デフォルトの名無しさん mailto:sage [2008/05/26(月) 23:59:56 ] なんという紳士
896 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:04:29 ] >>894 の優しさに泣いた!
897 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:28:37 ] >>894 にならほ(ry
898 名前:892 mailto:sage [2008/05/27(火) 02:09:22 ] レスありがとうございます。 >>質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。 >>自分が既に調べてみつからなかったんだけど ... ということをアピールして、 う、こういう聞き方、あまりよろしくないのですかね?? 単純に「ありませんか??」だとググれと言われてしまうし、かと言って毎回なんか質問書き込む度に既に調べて分からなかったので質問しましたってのは正直億劫だったのでこんな感じの聞き方になっていましたが・・ wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね?? でもwxString::Cmpとforとif使ってなんとかなったので、質問したこと自体は解決しました。 >API レファレンスを読めばみつかる API もみつからない。 これはなんでですか?? この質問の仕方だとなんでAPIリファレンスに書いてあるAPIも見つからなくなる、のでしょう? 突っ込まれて反論してるのではなく、どういう意味か分からなかったので単純に教えて頂きたいな、ということです。
899 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:25:57 ] >>898 >毎回なんか質問書き込む度に既に調べて分からなかったので質問しました 答える側になった事を考えれば分かると思うが、これが正解 事前に何を調べて自分としてはどう思っていて何が疑問なのかを丁寧に書く これしか無いよ
900 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:32:59 ] >>898 解決したならいいけどCmp()でどんなコードを書いたの?
901 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 03:13:25 ] >>898 >wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね?? この「ですよね??」という聞きかたが良くないです。 自分はこの API は既に知っているけど ... ということをアピールして、 しかも、自分って正しいですよね、という雰囲気である。 これでは自分で心を閉ざしているようなものであって、 この API が使える API であるということを認識出来ない。 自分はこれまで最初にマッチした部分のインデックスが返ってくるだけだと思っていたんだけれど、 相手が wxString::find を言ったということは、実は二つ目以降も返ってくるんではないか? と謙虚に考えられなくなるわけです。相手に言われたら、 自分を疑って、もういちど自分で API レファレンスを読んでみればわかるはずで、 こうやって小言を言われる必要もなくなるわけです。というのが、 > この質問の仕方だとなんでAPIリファレンスに書いてあるAPIも見つからなくなる、のでしょう? >突っ込まれて反論してるのではなく、どういう意味か分からなかったので単純に教えて頂きたいな、ということです。 への返答です。 僕は自分自身が、「ですよね?」「じゃないんですか?」と言いたくなったら、 まず自分を疑うことにしています。 その言葉を発した時点で、考えるのを放棄しているからです。 というのはいいとして、wxString::find(const wxString&,size_t) とわざわざ オーバーロードしてある引数までかいてあるのは何故だとおもいますか? それはそのバージョンをつかうと、第二変数でどこから調べるかが指定出来るからです。 そうするとそれを繰り返し呼べばいいわけです。 ちなみに find が大文字か小文字かも違います。 docs.wxwidgets.org/2.8.6/wx_wxstring.html#wxstringat をみてください。
902 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 03:24:20 ] ためになる話のような気がするから あとでゆっくり読むぜ
903 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 03:45:34 ] _,,....,,_ _人人人人人人人人人人人人人人人_ -''":::::::::::::`''> ゆっくりしていってね!!! < ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ |::::::;ノ´ ̄\:::::::::::\_,. -‐ァ __ _____ ______ |::::ノ ヽ、ヽr-r'"´ (.__ ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、 _,.!イ_ _,.ヘーァ'二ハ二ヽ、へ,_7 'r ´ ヽ、ン、 ::::::rー''7コ-‐'"´ ; ', `ヽ/`7 ,'==─- -─==', i r-'ァ'"´/ /! ハ ハ ! iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i | !イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ レリイi (ヒ_] ヒ_ン ).| .|、i .|| `! !/レi' (ヒ_] ヒ_ン レ'i ノ !Y!"" ,___, "" 「 !ノ i | ,' ノ !'" ,___, "' i .レ' L.',. ヽ _ン L」 ノ| .| ( ,ハ ヽ _ン 人! | ||ヽ、 ,イ| ||イ| / ,.ヘ,)、 )>,、 _____, ,.イ ハ レ ル` ー--─ ´ルレ レ´
904 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 10:02:58 ] なんか知らんが賢人が降臨したようだな
905 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 13:52:47 ] 賢人って… >>903 のこと?
906 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 17:45:13 ] 当たり前だろ
907 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 19:56:55 ] 馬鹿野郎俺に決まってるだろ
908 名前:892 [2008/05/27(火) 22:50:50 ] レスありがとうございます。 >ちなみに find が大文字か小文字かも違います。 これに気づいてませんでした。C++互換というやつがあったんですね・・。 >相手が wxString::find を言ったということは、実は二つ目以降も返ってくるんではないか? これはもちろん考えてます。が、それでも完全に見逃していました。。 wxString::find(const wxString&,size_t) でいけそうです。ありがとうございます。 が・・ >>それ用の関数ってないですよね?? >質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。 これは分かるんですが・・ >>wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね?? >この「ですよね??」という聞きかたが良くないです。 これはではどう聞けばよかったんでしょう? これ以外に聞きようが無い気がするんですが・・
909 名前:892 [2008/05/27(火) 22:55:44 ] >>900 こんなの書いてました汗 wxString str_wk; int count; wxString source = "なんか色々"; int length = sourceのデータ長 for (int i = 0; i < length; i++){ str_wk = source.Mid(i, 6); if (0 == str_wk.Cmp(wxT("sample"))){ count++; } }
910 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:10:59 ] >>908 ですよね?と聞く前に、wxString のメンバ関数一覧を再確認すればよかったんじゃないかな。たぶん。
911 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 23:47:43 ] >>901 のエントリについては、何か考えさせられた。 ○(調べたけどわかんなかったので)ありませんか? △(調べずに)ありませんか? … (ググれと言われる) ×ないですよね? … (ないんですよ。そうでしょう?(同意求む)的な感じ) って感じなのかな。
912 名前:892 [2008/05/27(火) 23:55:56 ] >>910 再確認して、その上で分からなかった(見逃してた)んです。 なので、言ってしまえば回答に直結するレス頂いてそれでも気づかなかった自分がバカだったってだけの話なのですが汗
913 名前:デフォルトの名無しさん mailto:sage [2008/05/28(水) 00:03:07 ] その人は嫌み言ってるだけだと思うので気にしないでいいと思うよ まあふと疑問がでてドキュメント見たときに、 そのクラスのあんま関係なさそうだけど他のメソッドもついでに 全部勉強しておいてやろうとかいう感じでやってればスキルもあがるんじゃないでしょうか。
914 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:19:55 ] これって、64bit対応してるかな? コンパイラが64bitなら無問題?
915 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 11:55:45 ] すくなくとも wxMac は対応してない。なぜなら GUI が Carbon で、それには 64bit 版がないから。
916 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:15:03 ] え”〜、Carbonは64bitには亡くなるのぉ??? wxCocoaの完成を待つしか無い???
917 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 12:53:48 ] >>916 いまんところの Apple の発表は、 Carbon の GUI 部分は 64 bit にしない、Carbon の非 GUi 部分は 64 bit にする、とのことだけど、まあすぐ気の変わる会社だから誰にも分かりません Qt はもう方針転換して、Cocoa で組みなおしてます。もう Cocoa 64 bit のβ版がでてるはず。 wxMac はメンテナンスはされてるけど、ドキュメントから何から激烈に古いのでこれを機会に wxCocoa を誰か頑張ってくれ。
918 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 13:03:15 ] wxGTKはMacでは動かないの?
919 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 13:10:59 ] wxGTK は OS X 上で X11 を立ちあげて、そのなかで動くというのは可能 Windows でも cygwin とかでX11 サーバをいれとけば wxGTK も動くというのと同じ状況です OS X の WindowServer は X11 ではないので。 まあ X11 は標準でついてくるけど。
920 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 13:49:29 ] 正直 OS X で X11+GTK とか勘弁してくれって感じだ…
921 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 15:31:32 ] Mac で Xアプリが動くってのはオマケだね。 クリップボードさえX専用クリップボードだったり、 Windowsの16ビットアプリケーションより連携悪い。
922 名前:デフォルトの名無しさん [2008/05/30(金) 16:00:05 ] wxStreamToTextRedirectorを使っているんですが、 cout << で、マルチバイト文字が化けて表示されてしまいます。 同じような症状の方、また解決方法を分かる方いらっしゃいましたらご教示いただけると嬉しいです。 ちなみにwxMSWをunicodeモードでインストールして使っています。
923 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 16:03:51 ] 自分の書き込みを何度も読み返すといいよ。
924 名前:デフォルトの名無しさん mailto:sage [2008/05/31(土) 16:12:39 ] Code::Blocksのスレが無いので、ここに書かせてくれ。 Code::Blocksのバグなんだ。興味ない人は無視してくれ。 詳細はチラ裏に書いたので、もし偉い人がいたら、本家にバグ報告してほしい。 ここからチラ裏 日本語のMac OS X上のCode::Blocksで、新規プロジェクトをウィザードで作ろうとすると、「Script compile error」というのが出る。 これは、Code::Blockが、ウィザードを記述してるスクリプト(Squirrel)を読み込むときに、U+005CがU+00A5に変換される(ファイルがShift-JISとして読み込まれる)のが原因。 src/sdk/scriptingmanager.cppの中にある、ScriptingManager::LoadScriptがスクリプトをファイルから読み込む関数っぽいので、その中の、cbReadFileContents(f)をcbReadFileContents(f, wxFONTENCODING_UTF8)に置き換えればいい。 だが、俺は英語ができないし、バグ報告のためのユーザアカウントも持っていないので、せめてここに書くぐらいしかできないorz ここまでチラ裏
925 名前:デフォルトの名無しさん mailto:sage [2008/06/01(日) 10:58:29 ] OS X 上で、外人さんの作ったソフトで、unicode つかってないので、そのバグがでることって多いよね。TeX 用のソフトでそれではまることがしばしば ...
926 名前:デフォルトの名無しさん mailto:sage [2008/06/02(月) 23:48:04 ] >>924 了解
927 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 00:10:51 ] Ubuntu 8.04でwxPythonがシンボル見つからないとかで起動しない。 自分でビルドしようと思ってもコンパイルエラー。swigのバージョンかな? 動かぬなら 動くまで待とう wxPython
928 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 19:47:07 ] 待ってねーでバグレポート送れよ
929 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:20:54 ] 英語がわからないに1票〜
930 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 00:55:38 ] >>928 いや、本家フォーラムではもう話題になってる。日本で話題になって無いからチラ裏してみただけ。
931 名前:デフォルトの名無しさん [2008/06/04(水) 00:57:50 ] なぁ、このフレームワークって人気ないの?
932 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 02:16:47 ] >>931 ん?採用してるプロダクトも多いし コミュニティも活発じゃん。 なんでそんな事を思うのかい?
933 名前:デフォルトの名無しさん [2008/06/04(水) 09:00:21 ] 採用しているプロダクトも少ないし コミュニティも活発じゃないからだろうきっと。
934 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 10:01:18 ] Qtに負けてる?
935 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 12:26:07 ] >>934 Photoshop Elements、Opera、Google Earth、SkypeなんかがQtだね。 確かにちょっとよさそうだし、有料なんでサポートもしっかりしてそうだけど wxWidgetsをすでに使ってるんだったら乗り換えるほどではないかな・・
936 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 12:27:18 ] あ、そう。 じゃあ乗り換えるのやめる。
937 名前:デフォルトの名無しさん [2008/06/04(水) 18:08:03 ] wxStringに格納されている改行文字を数えるために、for文などと組み合わせて if(string::npos != mml.find(wxT("\n"), i ,len)){ line_count++; } のように書いてみたのですが、改行文字じゃないところまでマッチしてしまいます。 正しい書き方分かる方いらっしゃいましたら教えて頂けると嬉しいです。 環境はWindows wxMSW2.8.7 文字コードはunicodeです。
938 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 20:03:39 ] sizerだったかな? いまいちこの辺の理解ができない。
939 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 22:02:11 ] >>937 i はどうやって更新してるの ???
940 名前:937 [2008/06/04(水) 22:27:08 ] >>939 分かりにくくてすいません。 lenはずっと固定1で、 iは1ループで1ずつ加算していく感じです。 単純に一文字ずつ調べていくように書きました。 あとmmlってのがwxStringオブジェクトです。。
941 名前:デフォルトの名無しさん mailto:sage [2008/06/04(水) 23:39:29 ] 阿呆か。第三引数は、この場合第一引数の長さの指定だろう。 www.cplusplus.com/reference/string/string/find.html そもそも、findメソッド使いながら一文字ずつ調べようという発想が阿呆過ぎる。
942 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 00:08:18 ] >>940 find は、i 文字目から探しはじめて、はじめにみつかった文字列を返す、ので、 i を1 ずつ加算していくとそりゃおかしくなるでしょうよ
943 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 02:45:11 ] #include <iostream> #include <string> using namespace std; int main(void) { string src = "aaaa\nbbb\nc\n\nddddd\n"; string::size_type pos = 0; size_t count = 0; while ((pos = src.find("\n", pos)) != string::npos) { pos++; count++; } cout << count << endl; return 0; }
944 名前:937 [2008/06/06(金) 14:26:46 ] iを1ずつ加算していくのは他にちょっと事情があったからなのですが・・説明不足でした。 レスありがとうございました。解決しましたm(_ _)m
945 名前:デフォルトの名無しさん [2008/06/06(金) 15:05:22 ] wxRichTextCtrl を使ってみたんですが、マルチバイト文字をテキストコントロールのインターフェースに入力すると、なんか補完ウィンドウ?みたいのが出ます。 これを出ないようにしたいのですが、どうすればいいでしょうか。 リファレンス見ても分かりませんでした。
946 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 15:30:06 ] MacOSX 10.6でCarbon廃止されたら、wxMacもなくなるのかなあ。
947 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 23:39:26 ] 10.6で廃止は早すぎるだろう? そのうちなくなるかもしれないが、俺達にはwxCocoaがある! 未だまともに動かないwxCococaがっ
948 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:19:47 ] 誰も 32bit Carbon を廃止はしないだろう、そんなことしたら MS Office が動かなくなる
949 名前:デフォルトの名無しさん mailto:sage [2008/06/07(土) 00:25:23 ] MS Office以前にAppleがSnow LepardまでにOS Xの付属アプリを 全部 Cocoa ベースに置き換えられるとは到底思えないんだよなぁ…
950 名前:デフォルトの名無しさん [2008/06/08(日) 18:42:06 ] >>945 です。 補完ウィンドウが出る、というか、日本語を打つと、書いた文字がスペースキーを押すと漢字変換が出来る状態になりますが、 その状態の文字が、文字を打った場所ではなく、なぜかテキストコントロールのインターフェースの一番上の行に毎回表示されてしまう、という現象のようです。(それを補完をウィンドウ?と455で言っていました。) wxTextCtrlだと普通に打ったマルチバイト文字がその行に表示されるのですが・・wxRichTextCtrlだとなぜかこうなってしまいます。 解決方法見つからず困っています。どなたかアドバイスいただけると幸いです。
951 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:19:46 ] >>950 wx のソースコードのバグを取って開発に貢献してください。
952 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:52:47 ] バグというか実装されていない機能の中身おくったけどさ、 半年ぐらいしてパッチ当てるよーってメール着たんだが、さらに半年経っても当たる様子無い。 仕方ないんで、ソース取り出してクラス名変えて使ってるよ。
953 名前:デフォルトの名無しさん mailto:sage [2008/06/08(日) 23:52:54 ] 自己解決しました
954 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:08:10 ] 自己解決したときはどう解決したかかいておいてください あとで同じことにはまる人もいると思うので。
955 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 00:34:26 ] 自分のした質問じゃないのに「自己解決しました」とだけ書いて去っていく荒らしもいるから注意な。
956 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 03:26:30 ] 自己完結しました
957 名前:945 [2008/06/09(月) 11:31:24 ] 解決してません。 やはり自分もwxWidgets自体のバグなのかなと思うのでソースをいじってみることを考えているのですが、 スペースキーで漢字変換できる状態(うまい表現の仕方あったら教えてください・・)の文章の表示位置がおかしい、というのは、wxWidgetsとIMEの連携部分で何かおかしくなっている、ということなのでしょうか。 wxTextCtrlなら正常に動く感じなので、textctrl.hとrichtextctrl.hを比べてみたりしているのですが、どの辺りを見ればいいのか・・
958 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 18:00:33 ] >>957 気になったので調べてみた。 どうやら wxRichTextCtrl は独自の処理を行っていて riched32.dll などを使っていないようだ。 wxTextCtrl に wxTE_RICH(2) などを付加して作成すると riched32(20).dll を使う仕組みになっているっぽい。
959 名前:957 [2008/06/09(月) 19:22:43 ] 貴重な情報ありがとうございます! ドキュメントを色々読み直していたのですが、もしかしたら自分のやりたいことがwxTextCtrlでもできるかもしれないような記述を見つけたので、 wxTextCtrlをもうちょっといじってみようかと丁度思っていたところでした。 自分のやりたいことというのが、プログラマ向けのエディタによくある予約語の強調表示なのですが、 wxwindowsjp.sourceforge.jp/docs/html/wx/wx381.htm ここに、 「例えば、1つ1つの文字に色やフォントを指定することも可能である (ただし、Windows下では、スタイルをサポートするためにwxTE_RICHスタイルが要求されることに注意すること)。」 のように書いてあります。 さらにその下に text->SetDefaultStyle(wxTextAttr(*wxRED)); text->AppendText("Red text\n"); text->SetDefaultStyle(wxTextAttr(wxNullColour, *wxLIGHT_GREY)); text->AppendText("Red on grey text\n"); のようなソースが示されていて、なんとなく感じは分かるのですが、 これだとインタフェースに文字を打ち込む際、特定の文字を打ち込んだ時リアルタイムに強調表示するようにできるのかどうか (もちろんその文字を一部消したら、強調表示をリアルタイムで解除するようにもできるかどうか)分かりません。wxTextCtrlでこのようなことは出来るのでしょうか??質問ばかりですいません。
960 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 22:20:00 ] wxWidgets 一般の話をしているのか、wxMSW の話をしているのか区別をしてくれ ...
961 名前:957 [2008/06/09(月) 23:15:37 ] 今はWindowsで開発しているのでwxMSWですが、 wxTextCtrlで強調表示機能実現できるかどうかってプラットフォームに依るのでしょうか?? wxTE_RICHはMSWでしか使えなくて、それ使わないと無理なので他のプラットフォームでは自動的にwxTextCtrlでは実現不可、ってことでしょうか。
962 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 11:19:56 ] >>961 wxTE_RICH は wxMSW 専用。ほかの環境では意味をなさない。 (リッチエディットコントロールを使う指定だから) >>959 入力した文字列をリアルタイムに強調表示したいのであれば、 OnChar(wxKeyEvent &) あたりを使えばいいんじゃないかな。やってみないとわからないけど。
963 名前:デフォルトの名無しさん mailto:sage [2008/06/10(火) 11:25:22 ] >>961 ちょっと説明不足だったけど、強調表示などは wxTE_RICH を指定しなくても wxTextCtrl::SetStyle() と wxTextAttr を使えば、実現できるんじゃないかな。
964 名前:957 [2008/06/11(水) 00:01:42 ] wxTextCtrl::SetStyle wxwindowsjp.sourceforge.jp/docs/html/wx/wx381.htm#wxtextctrlsetstyle 「選択された部分の」スタイルを変更する。 この部分見逃していました。。 OnChar()ってのはMSW専用なんでしょうか。 msw/textctrl.h には書かれていますが普通のtextctrl.hには無いみたいです。 univ/textctrl.hってのにもありますが、univってのは何用なのか・・ でもとりあえずEVT_KEY_DOWNキーイベント用のハンドラをSetStyle()使って書けば実現できる気がしてきました。 ご丁寧に何度もありがとうございましたm(_ _)m
965 名前:デフォルトの名無しさん mailto:sage [2008/06/11(水) 10:46:47 ] >>964 univ ってのは、たぶん Universal Version のこと。 Windows の例で言えば、Windows のコントロールを使わず、 全部自前で処理するようにすること。 いろいろなプラットフォームで共通した動作をするようになる。
966 名前:957 [2008/06/18(水) 18:21:31 ] なるほど、ありがとうございます。 返信遅れてすいません。 EVT_KEY_DOWN とか EVT_CHARとか使って強調表示機能っぽいものが出来始めたのですが、一つ分からないことが出てきました。 EVT_CHARは、ASCII文字の入力のタイミングは拾えるようなのですが、どうも全角文字の入力タイミングは拾えないみたいなんです。 全角文字でも強調表示したい単語があるので、全角文字が一字書き込まれる毎にそのタイミングを拾って、そのイベントが終了したらwxProcessEventでキャレット周辺の文字列を取得して、所定の文字列が含まれていたら強調表示〜みたいなことがしたいのですが、 そもそも全角文字入力の際に発生しているイベントはなんなのでしょう??
967 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 21:37:04 ] >>966 2度EVT_KEY_DOWNが飛んできませんか? 内部で捨てていない限り2度飛んでくるので、 それを漢字1文字分にすればいいと思います。
968 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:14:50 ] >>966 キー毎に強調表示するんでなくて、タイマーで1秒ごとに処理するとか ...