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
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秒ごとに処理するとか ...