1 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 15:12:36 .net] クロスプラットフォーム 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【サイザー】 pc12.2ch.net/test/read.cgi/tech/1214657360/
101 名前:デフォルトの名無しさん [2010/11/24(水) 19:51:50 .net] そうか
102 名前:デフォルトの名無しさん mailto:sage [2010/11/25(木) 23:22:37 .net] もう誰か作ってるだろと探したけど wxOnigurumaとか無かった。残念。
103 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 07:32:10 .net] 詳しい方ちょっと教えて下さい…。 ちょっと前からxchmというヘルプビューアを日本語表示できるようにしているのですが、 ShiftJIS->Unicodeの変換がうまくいきません。 一応wxString、wxMBConv、wxCSConv、wxEncodingConverterのリファレンスと ヘッダにある関数の組み合わせは一通り試したつもりですが、変換されるはずが 変換されなかったり、Initに失敗したりと散々です。 結局g_convert関数(GLibのiconvラッパー)で逃げましたが、wxWidgetで 書かれているソースに突如異物混入みたいで非常に美しくありません。 動作はしたので後は趣味の問題ですが、なんとかならないでしょうか? 環境はDebian、wxWidgets 2.6.7.1です。
104 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 21:51:03 .net] 2.9のドザーな俺にはアドバイスはできんが、 この辺で問題視されてる「wxMBConv はいくつかのサブクラスを持っていて、 こいつらはことごとく wchar_t の内部表現が UCS であることを仮定してる。」 あたりが原因じゃないのか? ttp://diary.imou.to/~AoiMoe/2004.09/middle.html#2004.09.13
105 名前:デフォルトの名無しさん mailto:sage [2010/11/26(金) 23:29:00 .net] >>104 早速感謝。 あー、そのページ、自分も見ました。 今ネット上にある日本語ページの中では一番内容が濃そうでしたね。 wxWidgetsが文字コード回りで大分無茶をしてるらしいことだけは判りました。 実際、文字コード変換には一旦wchar_t型を経由しないとならんのですけど、 charのSJIS->MB2WC->WC2MB とかやると、SJISでもUTF8でもない謎コードになっちゃうんですよね。 ちなみに、前スレでもWin使いの方が全く同じ趣旨の質問されてましたけど、 結局やはりWinAPIでなんとかしたらしいですね。 やっぱり無理ですかねぇ…。
106 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 00:43:27 .net] wchar_t の中身がUCS前提なのはこの場合問題じゃないだろ… >>104 の言っているUnicodeって、具体的に何?wxはUnicodeビルドで、wxStringにしたいの? SJISからwxStringにしたいのなら、 wxString s(sjis_string, wxCSConv('cp932')); を試した? コード出さないで質問しても、エスパーじゃない限り回答できないよ。
107 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 02:06:26 .net] >>106 あ、書き忘れてましたね、すいません。 入力はマルチバイト(char)のShiftJIS、欲しい出力はマルチバイト(char)のUTF-8で、 wxはDebian etchのものなのでUnicodeビルドです。 上のコードはもちろん試しました。 で、そこからどうすればchar型のUTF-8が得られるのか、もしくは別の方法を使うべき なのかで悩んでいるのが現状です。 ちなみに、成功例はこちら #include <glib.h> char *utf8_str = g_convert(sjis_str, -1, "utf-8", "cp932", NULL, NULL, NULL); で、これと同等のことをwxで行うにはどう書けばいいか?という質問です。 (この前後にwxベースのコードとやりとりするための処理が入るのですが、それが また汚いので、できれば回避したいです…)
108 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 08:39:35 .net] 言い訳はいいから問題起こしてる例のコードだせよ
109 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 11:28:57 .net] >>108 えー、失敗コードはもう全部消しちゃったんですよね…。 てか、ここまでの説明で判る方は判るし、判らん方はそこまででしょう。 この場合、頑張って失敗コード再現しても結果は後者だと思うので、No thank you.
110 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 11:41:57 .net] エスパーのかたのみお答えください
111 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 13:14:50 .net] 便乗して質問してもいいかな? wxMBConvとwxCSConvの違いって何? ヘルプ見てもよくわからん…
112 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 13:26:57 .net] >>111 wxMBConv は、変換系の抽象クラス。 wxCSConv は wxMBConv を継承した具象クラスで、 >>106 みたいに任意のエンコーディングとの変換を行う。 wxMBConvUTF8 も wxMBConv を継承した具象クラスで、 UTF-8との変換を行う。
113 名前:111 mailto:sage [2010/11/27(土) 13:34:03 .net] >>112 なるほど。ありがとう。
114 名前:107 mailto:sage [2010/11/27(土) 15:03:23 .net] ja.pastebin.ca/2003497 少なくともUbuntu 10.10では、wxCSConvでちゃんとcp932からUTF-8への変換ができたよ。 Debian etch とか古すぎて使う気にならないけど。
115 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 17:00:22 .net] >>114 多謝!! こっちでも試してみましたけど、できた!?ばかな!? 記憶を頼りに前回のコードと比較してみたら、違いが判りました。 OK: wxCSConv(wxT("cp932")) NG: wxCSConv(wxFONTENCODING_CP932) …こいつら違う意味なのかよ!? ちなみに、後者だとSJISでもUTF-8でもないデータになりました。 で、wxWidgetsのソースを読んでみました。 wxCSConv::wxCSConv(const wxChar *charset) { ... m_encoding = wxFontMapperBase::GetEncodingFromName(charset); } wxCSConv::wxCSConv(wxFontEncoding encoding) { ... m_encoding = encoding; } で、wxFontMapperBase::GetEncodingFromName(wxT("cp932"))は87でした。 wxFontEncodingはenumなので、じゃあ87はなにかというと、 wx/fontenc.h: wxFONTENCODING_MAX, // highest enumerated encoding value うん、意味が判らないんですが、これってwx使ってる方からしたら常識だったりしますか? それと間違えてました、使ってるのはetchでなくlennyでした、スイマセン。
116 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 17:17:40 .net] C++ の勉強からやり直せ
117 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 17:40:21 .net] xchmのコード変更完了! おかげさまで変更箇所が50行が4行になり、かなりすっきりしました。 相談に乗って頂いた方、大変有難うございました。
118 名前:107 mailto:sage [2010/11/27(土) 18:21:41 .net] fmapbaseの中にwxFONTMAP_CP932のエンコーディング名として最初にWINDOWS-932という 文字列が登録されていて、iconv にはこの名前のエイリアスが登録されていないから iconv に 失敗する、、、んだけど、iconv_open に失敗したらWINDOWS-932の次のCP932が利用されるように 見える。なのに失敗してる。 深追いはしてないからどこでコケてるのか判らないけど、とりあえず wxCSConv にはエンコーディング名を 直接渡したほうが、その名前が直接 iconv に渡るから落とし穴が少なそう。
119 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 18:27:01 .net] なるほど。ありがとう。
120 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 18:41:10 .net] >>118 あー、そういうことでしたか、なるほど。 感謝!
121 名前:106=114=118 mailto:sage [2010/11/27(土) 20:54:49 .net] 名前を間違えて107にしてしまった。 >>117 xchm の修正って、本家にフィードバックする予定ありますか? Linuxでもchmファイル読めたら便利そう。
122 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 22:36:15 .net] >>121 フィードバックの予定は特に無いです。 というか本家、まだ生きてるんだろうか? Ad-hocだけど、ここにパッチ貼っときます。 これでコンテンツと索引がちゃんと日本語で表示されるようになります。 検索の日本語対応は、ぱっと見かなり難しそうだったので保留中です。 むしろ誰かやって下さい…。 ちなみに、Linuxでchm読むだけでしたら他にもいくつかビューアがあるようですよ。 ご参考まで。
123 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 22:37:06 .net] +diff -urN xchm-1.17.orig/src/bitfiddle.inl xchm-1.17/src/bitfiddle.inl +--- xchm-1.17.orig/src/bitfiddle.inl 2010-11-27 17:21:37.000000000 +0900 ++++ xchm-1.17/src/bitfiddle.inl 2010-11-27 18:00:13.000000000 +0900 +@@ -194,10 +194,10 @@ + return wxEmptyString; + + if(enc != wxFONTENCODING_SYSTEM) { +- wxCSConv convFrom(wxFONTENCODING_ISO8859_1); +- wxCSConv convTo(enc); +- +- return wxString(input.mb_str(convFrom), convTo); ++ if (enc == wxFONTENCODING_CP932) ++ return wxString(input.To8BitData(), wxCSConv(wxT("cp932"))); ++ else ++ return wxString(input.To8BitData(), wxCSConv(enc)); + } + + return input;
124 名前:デフォルトの名無しさん mailto:sage [2010/11/27(土) 22:39:25 .net] +diff -urN xchm-1.17.orig/src/chmfile.cpp xchm-1.17/src/chmfile.cpp +--- xchm-1.17.orig/src/chmfile.cpp 2010-11-27 17:21:37.000000000 +0900 ++++ xchm-1.17/src/chmfile.cpp 2010-11-27 19:35:02.000000000 +0900 +@@ -1056,10 +1056,8 @@ + #endif + topic = CURRENT_CHAR_STRING(combuf); + #if wxUSE_UNICODE +- else { +- wxCSConv cv(_enc); +- topic = wxString((const char *)combuf, cv); +- } ++ else ++ topic = translateEncoding(CURRENT_CHAR_STRING(combuf), _enc); + #endif + } +
125 名前:デフォルトの名無しさん mailto:sage [2010/12/01(水) 16:15:11 .net] wxPythonでとあるチャットのクライアントを作っているのですが wx.(Rich)TextCtrlでは打ち消し線は使えないのでしょうか?
126 名前:デフォルトの名無しさん mailto:sage [2010/12/03(金) 00:13:26 .net] >>125 wxFONTFLAG_STRIKETHROUGHを指定したフォントを適用してやるとかで できるんじゃない?
127 名前:デフォルトの名無しさん mailto:sage [2010/12/04(土) 15:45:14 .net] ありがとうございます。 font = wx.FFont(8, wx.DEFAULT, wx.FONTFLAG_STRIKETHROUGH) self.target.SetFont(font) FONTFLAG_STRIKETHROUGHを指定してみたのですが、打ち消し線が表示されません。
128 名前:デフォルトの名無しさん mailto:sage [2010/12/05(日) 00:26:59 .net] wxWidgets2.8.xに実装されているウィジェットの表示サンプル一覧とかないですかね? サンプルを実行してみないとどのように表示されるのか判らないのはかなり不便・・・('A`)
129 名前:デフォルトの名無しさん [2010/12/05(日) 02:32:55 .net] demosも一緒にインストール汁
130 名前:デフォルトの名無しさん mailto:sage [2010/12/06(月) 23:39:23 .net] >>127 ttp://trac.wxwidgets.org/ticket/9907 打ち消し線が有効化されるパッチ。 ただし2.9。
131 名前:デフォルトの名無しさん mailto:sage [2010/12/25(土) 00:41:50 .net] >>130 遅れましたが、ありがとうございます。 wxWidgets用のパッチのようなのですが、 wxPythonに適用させる方法がわかりません・・・
132 名前:デフォルトの名無しさん mailto:sage [2011/01/01(土) 17:37:18 .net] Androidに対応してくれないかなぁ・・・
133 名前:デフォルトの名無しさん mailto:sage [2011/01/02(日) 03:08:38 .net] AndroidやiPhoneもそうだけど、Mac対応(wxCocoa)もしっかりして欲しい。 このままじゃ何時まで経っても64bit化出来ない。 やっぱり企業の後ろ盾がないプロジェクトはきついかもね。
134 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 01:11:15 .net] Qtは人気あるのに、こっちは盛り上がらないね。
135 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 01:25:48 .net] QtはLGPLがヤダ
136 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 01:32:35 .net] >>134 枯れてるからね
137 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 14:18:26 .net] ほとんど同じ時期じゃね? wx Initial release 1992 Qt Initial release 1992; 19 years ago wxの敗因は、やっぱ製品として売り出してないからじゃね?
138 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 20:08:32 .net] Android => Java, Google gtk,Mono => Suse, Microsoft Qt => Nokia, Google, Intel wxwidget => ???
139 名前:デフォルトの名無しさん mailto:sage [2011/01/15(土) 20:12:46 .net] 何の矢印だよ、それ。
140 名前:デフォルトの名無しさん mailto:sage [2011/01/18(火) 00:04:15 .net] wxRubyノート - ListCtrl を使ってサムネイル一覧を表示してみる - Alone Like a Rhinoceros Horn ttp://d.hatena.ne.jp/h1mesuke/20100427/p1 のコードを動かしたいのですが日本語パスが使える状態で動かせません Ruby 1.8.7+wxRuby 2.0.1 動作するけど日本語を含むパスが認識しない (Ruby 1.8.xがUTF-8のパスを処理出来ないためっぽい S-JISだと今度はwxRubyがパスを認識出来ない) Ruby 1.9.2+wxRuby 2.0.1 Ruby 1.9.1+wxRuby 2.0.1(mingw32-ruby-1.9.1-wxruby-2.0.1-setup.exe) Ruby 1.9.1+wxRuby 2.0.0(mingw32-ruby-1.9.1-wxruby-2.0.0-setup.exe) RubyはUTF-8のパスを処理出来るけど >@thumb_list.clear_all のところで固まる 日本語パスが使える状態で動作させる方法があったら教えてください よろしくお願いします
141 名前:デフォルトの名無しさん [2011/01/18(火) 06:48:23 .net] つ ttp://codepad.org/SaG84FKe
142 名前:140 mailto:sage [2011/01/23(日) 01:33:16 .net] レスありがとう。ってPython!?Σ(゚Д゚) わざわざ書き直してくれたのに申し訳ないけどRubyでコーディングしたいので・・・ とりあえずいじり回していたら思いついた案 1.Ruby 1.8系を使用。wxImage::load_streamを使う ファイルの自動判別が出来ない 2.Ruby 1.8系を使用。Rubyのファイルパスを扱うメソッドをUTF-8に対応するように再定義 数が多くコーディング量が多い。デバッグも大変 3.RubyでwxPythonを使う まだ実験していない。動いたとしても関連ライブラリのサイズがでかくなりそう? どれもイマイチだ(´・ω・`)
143 名前:デフォルトの名無しさん mailto:sage [2011/01/23(日) 03:01:42 .net] Ruby知らんけど、単に文字コード変換するんじゃダメなの?
144 名前:デフォルトの名無しさん mailto:sage [2011/01/23(日) 17:59:40 .net] コントロールに画像使うとリソース食うから サムネにはお勧めできない
145 名前:デフォルトの名無しさん mailto:sage [2011/01/23(日) 19:23:43 .net] GUIやるならPythonの方が良いと思うけどなぁ。 Windowsと日本語はもちろんだけど、>>140 のBlog見てるとスレッド周りにも 問題あるみたいだし。
146 名前:デフォルトの名無しさん mailto:sage [2011/01/23(日) 20:59:01 .net] >サムネイルを作成する間ウィンドウがブロックしないよう、サムネイルの作成は別スレッドで行っている。 >(ただし、サンプルということで、排他制御は一切やっていない) > >イベントループのあるメインスレッドからのスレッド切り替えが円滑に行われるよう、 >メインスレッドではタイマーを使って定期的に Thread.pass している。 > > Wx::Timer.every(100) do > Thread.pass > end > >これが必要になる理由については次のエントリでやる予定。 謎のコード
147 名前:141 mailto:あきらめたら終わり満足してしまっても終わり sage [2011/01/23(日) 21:11:49 .net] >>142 べつに謝らんでもええよ 漏れは困ってへんから
148 名前:デフォルトの名無しさん mailto:sage [2011/01/23(日) 21:38:27 .net] >>146 ttp://d.hatena.ne.jp/h1mesuke/20100508/p1 ここのコメ欄の方が怖いぞ。
149 名前:デフォルトの名無しさん mailto:sage [2011/01/24(月) 05:23:51 .net] Ruby使ってないから気にしない
150 名前:デフォルトの名無しさん mailto:sage [2011/01/27(木) 23:54:02 .net] wxWidgetsでアニメ(not 動画ファイル。MNG or 連番PNGを想定)を表示したいのですが 単に表示されている画像をインターバルで書き換えていく方法だとフリッカーが出てしまいます 再描画と画像の書き換えの同期が取れていないためだと思いますが同期させる方法が判りません 何か良い方法があったら教えてください。よろしくお願いします
151 名前:デフォルトの名無しさん mailto:sage [2011/01/28(金) 01:18:19 .net] ソース貼れ
152 名前:デフォルトの名無しさん mailto:sage [2011/01/28(金) 23:04:25 .net] >>150 wxBufferedPaintDC使え。
153 名前:150 mailto:sage [2011/01/30(日) 00:53:07 .net] レスthx >>152 なるほどそう言うのがあるのか。試してみます
154 名前:デフォルトの名無しさん mailto:sage [2011/01/30(日) 16:14:40 .net] 2.9.1が出てから音沙汰無いな
155 名前:150 mailto:sage [2011/01/31(月) 00:06:45 .net] >>152 フリッカーを無くせました。ありがとうございました
156 名前:デフォルトの名無しさん mailto:sage [2011/02/05(土) 22:36:59 .net] >>154 ttp://wx.ibaku.net/changelog/ 連日どんどん更新されてるけど音沙汰ない?
157 名前:デフォルトの名無しさん mailto:sage [2011/02/11(金) 06:24:01 .net] 前スレがやっと埋まったぽい。埋めた人お疲れさま。
158 名前:デフォルトの名無しさん mailto:sage [2011/02/11(金) 23:54:18 .net] つうか次スレ立てるの早過ぎだろ
159 名前:デフォルトの名無しさん mailto:sage [2011/02/13(日) 21:55:32 .net] このライブラリタダ?
160 名前:デフォルトの名無しさん mailto:sage [2011/02/18(金) 08:33:59 .net] EVT_LEFT_DCLICK で bind して処理しようとすると EVT_LEFT_UP EVT_LEFT_DCLICK が同時に来るみたいなのですが EVT_LEFT_DCLICK だけ受け取るにはどうすれば良いでしょうか?
161 名前:デフォルトの名無しさん mailto:sage [2011/02/18(金) 20:45:41 .net] >>160 wxMouseEventのLeftDClickで判別すればいいんじゃないの?
162 名前:デフォルトの名無しさん mailto:sage [2011/02/18(金) 21:35:20 .net] GoogleIME使ってるんだが、TextCtrlで未変換文字列とか変換候補とかが表示されないのは仕様か? MSIMEならちゃんと表示された
163 名前:デフォルトの名無しさん mailto:sage [2011/02/18(金) 22:05:32 .net] >>162 ありがとうございます 試してみましたが 結局 EVT_LEFT_DCLICK に bind された handler 内では LeftDClick なのですが 同時に EVT_LEFT_UP に bind された handler も呼ばれてしまっていて そっちでは LeftDClick じゃないとみなされるので区別出来ないんです ><
164 名前:デフォルトの名無しさん [2011/02/27(日) 19:42:45.69 .net] wxApp の OnInit で wxFrame *frame = new wxFrame(hogehoge); としたとき wxFrame を delete しないようですが 勝手に GC してくれるんでしょうか? SetTopWindow(frame); を実行したときとしないときでは違いますか?
165 名前:デフォルトの名無しさん mailto:sage [2011/02/27(日) 20:07:52.06 .net] メモリ以外の資源の解放をGC任せにする男の人って
166 名前:デフォルトの名無しさん mailto:sage [2011/02/28(月) 14:53:53.44 .net] >>164 wxWidgetsでは自分で解放すると返って二重解放になる。 ttp://www.wxwidgets.org/docs/faqcmn.htm FAQに書いてあるから今後はよく読もうな。
167 名前:デフォルトの名無しさん mailto:sage [2011/03/04(金) 16:28:05.88 .net] 主にwindowsで使っていますがlinuxでも同じソースで動くようにしたいです wxStringで与えられたあるパス名がフルパスか相対パスかをwxWidgetsのクラス (例えばwxFileName等)を使って判断出来ますか?
168 名前:デフォルトの名無しさん mailto:sage [2011/03/04(金) 20:23:10.51 .net] >>167 wxFileNameにIsAbsoluteというのがあるけども。 それすら調べられないようだとwxに限らずプログラミングは厳しいと思う。
169 名前:デフォルトの名無しさん mailto:sage [2011/03/04(金) 20:25:20.16 .net] ポインタ置いときますね。皆さん先刻ご存知かもしれませんが。 wxWidgets(wxstd.moの日本語版, ja.po)をお使いの皆様へ ttp://suzumizaki.blog6.fc2.com/blog-entry-207.html
170 名前:デフォルトの名無しさん mailto:sage [2011/03/04(金) 20:34:43.27 .net] >>164 こっちも読んでおくといいよ。 二重開放以外にもdeleteがまずい理由があるようだから。 ttp://docs.wxwidgets.org/trunk/overview_windowdeletion.html
171 名前:デフォルトの名無しさん mailto:sage [2011/03/04(金) 21:31:47.32 .net] >>168 出来ました!! ありがとうございました!!!
172 名前:デフォルトの名無しさん mailto:sage [2011/03/07(月) 03:32:17.98 .net] wxListCtrl の SetItem - GetItemText とか SetItemText - GetItem とか なんか変な対応してるみたいなんですけど こんなもんなんですか? 他にも IsIconized とか IsShown とか ドキュメント通りじゃなくて めちゃくちゃな感じがするんですが 設計者ってパラノイア?
173 名前:デフォルトの名無しさん mailto:sage [2011/03/07(月) 04:30:33.22 .net] 馬鹿には無理 つ ttp://wiki.wxwidgets.org/WxListCtrl Get the String Contents of a "cell" in a LC_REPORT wxListCtrl
174 名前:デフォルトの名無しさん mailto:sage [2011/03/07(月) 07:16:25.58 .net] >>173 出来ました!! ありがとうございました!!!
175 名前:デフォルトの名無しさん mailto:sage [2011/03/07(月) 11:00:32.39 .net] 質問です wxWidgetsにはMD5やSHAを計算してくれる関数はありますか?
176 名前:デフォルトの名無しさん mailto:sage [2011/03/07(月) 11:32:42.63 .net] つttp://wxwidgets-hash-md5.fyxm.net/
177 名前:デフォルトの名無しさん mailto:sage [2011/03/07(月) 22:35:46.50 .net] >>175 176じゃないけど、MD5単品ならこういうのとか。 ttp://www.koders.com/cpp/fid80078010DEFC2265E917FE6436718F0AE038CBE6.aspx
178 名前:デフォルトの名無しさん mailto:sage [2011/03/08(火) 09:26:30.33 .net] >>178 ありがとうございます とりあえず別のMD5ライブラリが見つかったのでそちらで間に合わせたのですが ライセンスの問題とか考えると教えて頂いたもので置き換えた方が良いかも知れません 余力があったら後でご報告します
179 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 04:31:11.46 .net] wxHTTP::GetResponse が 200 とか 403 とかじゃなくて 0 を返すんですけどバグですか?
180 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 04:46:40.12 .net] つ ttp://wiki.wxwidgets.org/WxHTTP
181 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 05:29:32.87 .net] >>180 出来ました!! ありがとうございました!!!
182 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 17:04:06.53 .net] 文字コードの変換というか 変換出来ない文字が含まれているかどうかのチェック方法について質問です。 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 版のを使っています。
183 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 17:16:21.87 .net] むしろUTF-8のまま扱うかUNICODEにしてしまった方が良いのでは?
184 名前:デフォルトの名無しさん mailto:sage [2011/03/09(水) 20:02:39.82 .net] >>182 wxStringOperations::IsValidUtf8String
185 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:17:32.00 .net] >>184 ありがとうございます。 今レス見たばかりなのでまだ試していませんが、 docs.wxwidgets.org/trunk/annotated.html を見ても wxStringOperations は見当たらず ネームスペースかとも思うのですが、 こういったものはどうやって見つければ良いものですか?
186 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:25:43.01 .net] >>182 wxString::FromUTF8Unchecked
187 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:27:16.48 .net] >>185 trac.wxwidgets.org/wiki/DebugRelease
188 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:34:44.59 .net] >>186 ありがとうございます。 しかしそれは Valid じゃない UTF8 データが渡されたときの 動作は undefined だと書かれていますね。 結局事前に調べないといけないことにかわりないようです。 >>187 ありがとうございます。 中身を読んでも良く判りませんでした。 どういう意味でしょうか?
189 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 08:38:29.58 .net] ん? 「〜」301C(E3809C) はValidじゃないのか?
190 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 09:19:31.75 .net] 問題なのはUTF-8として正しいかどうかじゃなくて cp932に変換出来るかどうかってことなんだよな そうなるとスレ違いかもな
191 名前:デフォルトの名無しさん [2011/03/10(木) 13:58:57.41 .net] wxWidgetsって、けっこうS-JISの処理が弱いので、そこの部分だけはネイティブの処理にしたほうがいいかも 俺もアプリ作った事あるけど、S-JISに変換する部分だけはWideCharToMultiByte関数を呼ぶようにしたよ
192 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 16:16:13.99 .net] >>184 残念ながら使えませんでした。
193 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 16:24:05.27 .net] >>192 wxUSE_UNICODE_UTF8 を定義してないと使えないよ つ ttp://docs.wxwidgets.org/trunk/overview_string.html
194 名前:デフォルトの名無しさん mailto:sage [2011/03/10(木) 22:06:44.16 .net] みなさん色々とありがとうございます。 wxString sjis_data = wxString::FromUTF8(utf8_data.c_str()); のところで例外出して死ぬパターンと sjis_data が空になるパターン それからちゃんと成功するパターンとがありました。 結局アクセスしていたサイトに広告が入っていて、 時間帯によって内容が変わるようなのですが、 どうも本体は UTF8 なのに広告部分だけ SJIS とか、 お粗末なサイトだったのが混乱した原因の一つでした。
195 名前:デフォルトの名無しさん mailto:sage [2011/04/19(火) 00:00:08.70 .net] 3.0マダー(AA略)
196 名前:デフォルトの名無しさん mailto:sage [2011/05/25(水) 00:30:08.01 .net] サイザーage
197 名前:デフォルトの名無しさん mailto:sage [2011/07/02(土) 23:25:00.75 .net] wxWidgetsとWinPcapをあわせて使おうとしてハマってたのが解決したのでカキコ - 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を呼んでやれば解決する
198 名前:デフォルトの名無しさん [2011/07/16(土) 23:02:41.64 .net] GUI の配置は XML で定義出来るのが一番良いなあ
199 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 01:18:11.68 .net] それ何てXUL
200 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 22:48:55.64 .net] wxだってXRCがあるじゃまいか。
201 名前:デフォルトの名無しさん mailto:sage [2011/07/17(日) 23:28:11.01 .net] 誰も無いとは言ってないぞ