1 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:49:20 ] クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。 本家 www.wxwidgets.org/ wxWindows日本語プロジェクト wxwindowsjp.sourceforge.jp/ Let's wxWidgets dot-gray.s33.xrea.com/ wxWindowsで始めるC++ GUIプログラミング www.h3.dion.ne.jp/~k5_n/wxwin/ wxWidgets でクロスプラットフォーム GUIアプリを作ろう 0xcc.net/pub/uu-2004-08/
2 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 21:51:28 ] wxWidgets 2.8.8 is out !!! wxwidgets.info/node/49
3 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 23:44:21 ] 退かぬ!! 媚びぬ 省みぬ!!
4 名前:デフォルトの名無しさん mailto:sage [2008/06/28(土) 23:46:50 ] >3 省みるからバグフィクスが出るんじゃまいか とマジレスしてみる そして>1乙
5 名前:デフォルトの名無しさん [2008/06/29(日) 09:11:25 ] 昔、ソース覗いたけど、今ってどうなってんだ
6 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 15:45:28 ] 今でも、ソース覗いたよ
7 名前:デフォルトの名無しさん mailto:sage [2008/06/29(日) 19:48:18 ] wxMSW2.8.7 のwxTE_RICH を指定したwxTextCtrlのインターフェースで、 縦スクロールバーが出るぐらい文字を入力して、適当な位置にキャレットを動かしてEnterを押すと、改行される毎にキャレットがある行がインターフェースの先頭に行ってしまうというバグがあったんだけど、2.8.8でも直ってない・・・ですね。。 wxRichTextCtrlもなんか変なままだし・・泣
8 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 10:54:27 ] どんどんでかくなってくよぅ もっと小さくして下さい
9 名前:デフォルトの名無しさん mailto:sage [2008/06/30(月) 11:33:17 ] >>7 >>改行される毎にキャレットがある行がインターフェースの先頭に行ってしまうというバグ sample の wxMSW widget を実行してみたけど、現象がよくわかりません。 普通に動いている気がするのですが…
10 名前:デフォルトの名無しさん [2008/06/30(月) 23:31:47 ] >2.8.8でも直ってない 報告した?
11 名前:7 mailto:sage [2008/07/01(火) 22:07:46 ] >>9 >>10 すいません自分の勘違いかも?? もうちょっと調べてみます。。
12 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 00:37:56 ] 最近になって本格的にWxWidget触り始めたんだけど サイザーって理解するのに時間かかるな。特にStaticBoxSizer addで追加するオブジェクトを間違えると、即座にレイアウトが崩れて……
13 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 11:06:47 ] >>12 wxGlade あたりでレイアウトしてみて 確認してコーディングしてみるのも いいかもしれませんよ。
14 名前:7 [2008/07/07(月) 12:40:49 ] >>7 なんか、EVT_TEXTイベントのタイミングでwxTextCtrl::SetDefaultStyle()を使うとキャレットの位置がおかしくなる、ということのようです。 また、別件になるのですが、EVT_TEXTのタイミングで入力されたマルチバイト文字列をwxTextCtrl::SetStyle()を使ってスタイル変更しようとすると、なぜかfalseが返ってきてしまうのです・・。(ASCII文字なら成功する) 仕方がないので、テキストコントロールの中の文字列が変更される時のイベントで、EVT_TEXTよりあとに発生するイベントのタイミングでSetStyle()を使いたいのですが・・EVT_TEXTより後に発生するイベントって何かあるでしょうか??探しても見つかりませんでした。 Timer使うとまた色々不都合があるんですよね・・
15 名前:7 [2008/07/07(月) 12:47:02 ] >>キャレットの位置がおかしくなる、ということのようです。 おかしくなることがある、ですね。縦スクロールバーが出ている時に改行すると自分のところではおかしくなりました。 Windows XPです。
16 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 15:31:56 ] バグレポート
17 名前:7 [2008/07/07(月) 18:33:04 ] 英語自信ないっす。。
18 名前:デフォルトの名無しさん mailto:sage [2008/07/07(月) 21:56:39 ] >>14 使っているライブラリオプションは UNICODE でしょうか?
19 名前:7 [2008/07/08(火) 00:24:01 ] >>18 そうです!
20 名前:18 mailto:sage [2008/07/08(火) 13:23:29 ] >>19 調べてみるけど、ちと時間くださいな。 あと、そういう時は再現できる簡単なソースを書いておくと 調べる人が多いかもしれません。
21 名前:18 mailto:sage [2008/07/09(水) 15:51:13 ] >>19 調べてみました。 結論から言いますと Windows の問題で wxWidgets 側でなんとかできる 問題ではないですね。(同じようなコードを MFC で書いてもエラーになる) Microsoft あたりに文句を言えば、いつかは直るかもしれません?
22 名前:7 [2008/07/09(水) 23:24:43 ] >>20 >>21 (多分前スレからお世話になりまくっていると思うのですが・・)本当に何度もご親切にありがとうございます。 もしかしてwxWidgetsの開発に関わっている方だったり・・?違うか。 Windows自体の問題とのことなのですが、すいません、>>14 では質問していることが2つあったのですが、どちらがWindows自体の問題だったのでしょうか?
23 名前:7 [2008/07/09(水) 23:45:39 ] あとすいません、また追加で質問で恐縮なのですが・・IMEの変換状態が変化したときにricheditが送出するEN_IMECHANGEというイベントマスクをwxWidgets側で捕まえたいのですが、 Win32APIが送るイベントマスクをwxWidgets側で拾いたい時はどうすればよいのでしょうか?? IMEの変換状態が変化した時のイベントのようなものは既存のwxWidgetsにはなさそうなので、自分で書き足さなければいけないと思うのですが・・。
24 名前:18 mailto:sage [2008/07/10(木) 10:49:04 ] >>22 残念ながら違います。 こういったライブラリで遊ぶのが好きなだけです:-) で、>>14 の質問の >また、別件になるのですが、EVT_TEXTのタイミングで入力された >マルチバイト文字列をwxTextCtrl::SetStyle()を使ってスタイル変更 >しようとすると、なぜかfalseが返ってきてしまうのです この件は Windows の仕様のようです。(MFC でも同じことが起きます) EVT_TEXT(Windows の EN_CHANGE)で、SetStyle(MFC の CRichEditCtrl::SetSelectionCharFormat 等)でも同じエラーになります。 ですので、現状では Windows の仕様なのでいかんともしがたいかと。 EVT_TEXT(EN_CHANGE)の後に飛んでくるメッセージは特にないようです。
25 名前:18 mailto:sage [2008/07/10(木) 11:53:44 ] >>23 独自のメッセージを持ってくる方法があった気がしたけど きれいさっぱり忘れましたorz 一番手っ取り早い方法は wxTextCtrl::MSWCommand の 継承メンバを作っちゃう方法かな?
26 名前:デフォルトの名無しさん mailto:sage [2008/07/10(木) 12:18:56 ] ていうか 7 さんはそこまで Windows べったりのことをするのなら wxWidgets である必要がない気が...
27 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 01:45:57 ] >>24 >>25 毎回ありがとうございます。 docs.wxwidgets.org/stable/wx_eventhandlingoverview.html#customevents この辺りよんでるんですが・・なかなか書いてあることが理解できません。難しいですね・・ >>26 最近ようやくそう思い始めました汗 しかし、一回手を出してしまった以上他のに乗り換えるのはいやだなと・・ また不具合の話になるんですが、どうも wxTextCtrl::SetStyle() とか GetStyle() を使うと、該当箇所の文字列が一瞬青く反転してしまうようです・・(一瞬選択状態になっている?) これもけっこう痛いです・・
28 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 07:16:25 ] >>27 >しかし、一回手を出してしまった以上他のに乗り換えるのはいやだなと・・ 世の中見切りの付け所ですよ。
29 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 08:56:57 ] 今の時代の見切りは、Winモンリー開発を見切るんであって、 クロスのWxWidgetsに手を出すのは正しい。 他に乗り換える場合でもクロスGUI。
30 名前:18 mailto:sage [2008/07/11(金) 10:53:29 ] >>27 何か理由(納期とか…)が無い限り、楽しみながらやるのがいいかと。 >どうも wxTextCtrl::SetStyle() とか GetStyle() を使うと、 >該当箇所の文字列が一瞬青く反転してしまうようです・・ >(一瞬選択状態になっている?) wxTextCtrl::SetStyle() 内部では、 1 指定範囲を選択 2 EM_SETCHARFORMAT を SCF_SELECTION で SendMessage 3 指定範囲を戻す という動作をしているからです。 EM_HIDESELECTION を SendMessage してやればいいだけなので がんばって本家にレポートしてみるとか。
31 名前:18 mailto:sage [2008/07/11(金) 10:59:25 ] >>27 順番が逆になってしまった。 >docs.wxwidgets.org/stable/wx_eventhandlingoverview.html#customevents >この辺りよんでるんですが・・なかなか書いてあることが理解できません。難しいですね・・ wxEvent 関連を使った方法は私もよくわかりません:-p そっちではなくて、wxTextCtrl を継承したクラスを作って、MSWCommand を 継承しちゃえばいいかな?ってことです。 class myTextCtrl : public wxTextCtrl { public: virtual bool MSWCommand(WXUINT param, WXWORD id) { if ( !wxTextCtrl::MSWCommand( param, id ) ) { switch (param) { case EN_IMECHANGE: 〜 break; default: return false; } } return true; } こんな感じ? やってみたことないからあっているかどうかの自信はないけど。
32 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 20:02:36 ] wxMSW以外でもコンパイル通るのかそれ?
33 名前:デフォルトの名無しさん mailto:sage [2008/07/11(金) 23:12:43 ] >>32 そりゃ当然 #ifdef とかで囲むんだろう
34 名前:18 mailto:sage [2008/07/12(土) 18:50:28 ] >>32 EN_IMECHANGE をキャッチしたいとのことだったので Windows 専用で大丈夫かと思いました。 X や MacOS だと IME 系の処理ってどうやるんでしょうね。
35 名前:27 mailto:sage [2008/07/14(月) 02:20:06 ] 毎度ありがとうございます。。。 >>何か理由(納期とか…)が無い限り、楽しみながらやるのがいいかと 特に納期などはないんですが、なんとしても作りたいものがあってやってるんですがはかどらなくて悶絶してます泣 IMEに入力された文字列のフォントを毎回設定するために渋々win32apiをいじっているのですが、ウィンドウのハンドルを取得するFindWindowW()関数でウィンドウのハンドルがうまく取得できたなくてはまっています。。 (このハンドルがないとIMEにアクセスできないようなのです。) FindWindowW()の第一引数に該当ウィンドウを生成する時に使っているクラスを指定しなければいけないみたいなんですが、 wxTextCtrlとかではだめで、もっと深い階層にあるwin32apiウィンドウ生成クラス?を指定しなければいけないみたいなんですが、それが何なのか分からなくて止まってます。。 >> 2 EM_SETCHARFORMAT を SCF_SELECTION で SendMessage >> がんばって本家にレポートしてみるとか。 これはライブラリがそういう仕様になっているということなんですよね。 これを直すのもまた大変そうですし、直してもちゃんと本家でパッチあててもらって公開してもらわないと使えないんですよね。。 なんかもう作りたいプログラムの完成が果てしなく遠いような気がしてきました。 そもそも楽するためにwxWidgetsっていうフレームワークを使っているのにいつのまにかwin32apiをいじる羽目になっているし・・ なんのためにラッパーを使っているのか分からなくなってきました。 悲鳴に近い書き込みすいません。 Visual C++ に呼ばれている気がします。。。
36 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 07:45:51 ] > なんのためにラッパーを使っているのか分からなくなってきました。 そりゃ根本的に使うものが間違ってるからだろ。 WindowsべったりでWindowsでできることは全部できなきゃダメとか思いながら使 うもんじゃねーよ。
37 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 08:37:19 ] こういうクロスプラットホームので日本語入力周りが細かく操作出来ると思うのが甘いんじゃないかと思います ... 開発者の大多数が英語環境なわけでね。 とにかくあなたのやりたい用途には日本語周りのサポートの厚いフレームワークをつかわないとだめそう。べつに急に Win 32 API までおりる必要はないわけで。 Windows なら .Net とかつかったほうがいいんじゃない? Delphi とかも昔はよかったのかも。
38 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 10:26:13 ] Lazarusもなんか微妙なんだよねぇ。 BorlandがKylixを見捨ててなければ、クロスプラットフォームアプリの 大本命になれたかもしれないのに。
39 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 10:37:25 ] >Windows なら .Net そ・れ・は・ない
40 名前:18 mailto:sage [2008/07/14(月) 10:56:40 ] >>35 wxWidgets の話題から外れるので、軽くだけ。 何をやりたいかよくわからなくて想像だけど、 そういうことをやりたいときは WM_IME_COMPOSITION をとらえて ImmGetContext から HIMC を取得し、Imm* 系の API を使うんじゃ ないかな? wxTextCtrl のようなコントロールを駆使してやるのは難しいと思いますよ。
41 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 12:18:53 ] >>39 37 ですが、見当外れだったらすいません、日曜 Cocoa 屋さんなもので ...
42 名前:35 mailto:sage [2008/07/14(月) 13:16:44 ] レスありがとうございます。 >wxWidgets の話題から外れるので、軽くだけ。 すいません、そうですよね。。ありがとうございます。 >wxTextCtrl のようなコントロールを駆使してやるのは難しいと思いますよ。 やはり・・ >> Windows なら .Net > そ・れ・は・ない いまさらVisual C++ とかはあんま賢くない選択肢なんでしょうか。 > こういうクロスプラットホームので日本語入力周りが細かく操作出来ると思うのが甘いんじゃないかと思います ... 開発者の大多数が英語環境なわけでね。 それに気づくのが遅すぎました泣 QTなんかはどうなんですかね・・日本での実績もあるのでwxWidgetsよりはマルチバイト文字周りも大丈夫そうですが。 結局開発環境で何を採用すればいいのかという導入部での問題にまたぶつかってしまいました。 最初は、これからはマルチプラットフォーム対応じゃないとと思ってwxWidgetsを選んでみたんですが、結局まだほとんどの日本人はWindowsを使っているわけで、まだしばらくはWindowsをほとんどの人が使っていくんじゃないかとも最近思うので、 素直にVisual C++ から入ればよかったのかなとか思い始めてるんですが・・ こういう話題NGだったらスルーしてくださひ。
43 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:19:24 ] >素直にVisual C++ から入ればよかったのかなとか思い始めてるんですが・・ Windowsソフトを作るにしてもVC++はやめといた方が良い。 M$社内でも使われなかった該吉設計MFCを使うか、 ドトネトとC++を混ぜるというそれだけでウンザリ、 といった環境しかない。
44 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 13:55:31 ] >>42 >最初は、これからはマルチプラットフォーム対応じゃないとと思ってwxWidgetsを選んでみたんですが、結局まだほとんどの日本人はWindowsを使っているわけで、まだしばらくはWindowsをほとんどの人が使っていくんじゃないかとも最近思うので、 会社の仕事でソフトを書いてるなら他の人が何を使ってるかは重要だけど、 自分ひとりで使うなら何で組んだって勝手だよね。 wxWidgets がすきならそれをつかえばいいし、プラットフォームべったりでも好きなフレームワークがあればそれを使えばいいんだと思うけども、 どうも 35 さんは日本語入力周りをいじりたいというクロスプラットホームには不向きな題材をやりたいようだから... やっぱやりたいことに即した言語/フレームワークを使うべきだとおもいます。 でもVisual C++ はよくないと思います。C++/CLI は変態で面白い言語だとは思うけど。
45 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:07:06 ] >思ってwxWidgetsを選んでみたんですが この苦難を乗り越えてこそ、 アプリとかのすぐれたデザインパターンを発見できるだろうし、 ソフトウェア資産になると思うんだが。 それが”WxWidgetsを組み込んだ場合の優良なデザインパターン”となるか、 ”質問者の作成するはソフトウェアの要素からWxWidgetsが外される”ことと落ち着くか、 それは自分で決めることだけど。前者も無理じゃないと思うぞ。
46 名前:35 mailto:sage [2008/07/14(月) 14:24:32 ] どもです。 Visual C++ 人気ないですね。。MFCとか.NETが人気ないってことなんでしょうか。 ATL/WTL ってのがVisual C++ で使えるみたいなんですがこれはけっこう評価が良いような?? あとはVisual C# とかですかね。。 >>45 まだ自分はデザインパターンとか見つけられるレベルではない気がします。。
47 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:35:41 ] 別にVC++で問題ないよ。SDKでガシガシ書け。 どうせどんなGUIライブラリ使っても、細かいところはAPI直に触らなきゃならないんだから。
48 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 14:49:18 ] VC++/SDKなら問題無いかも。 それならその中にWxWidgets使っても無問題。 MFCはやめとけ。 1回生成されたダイアログを使ったソースを見てみれば、 ”これ何語?”って感じであきらめることになるだろう。 ドトネトもやめとけ。作るものに限界があるし、そうだと、作っててつまんない。
49 名前:デフォルトの名無しさん mailto:sage [2008/07/14(月) 15:04:36 ] >まだ自分はデザインパターンとか見つけられるレベルではない どっちにせよ、アプリの構造はつねに意識してないとね。 どういう構造が良いのかわかってないと、プログラム修正して良くなったのか悪くなったのかわからんだろ。
50 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 02:39:38 ] 自分か身内だけで使うようなちょっとしたものだと、 C#に.NET3.0↑で書くのが楽すぎる Windows専用になっちゃうんだけどさ ってスレ違いだな
51 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 04:26:43 ] >>46 ,35 以前に少し使った程度だけど、WTLは結構いい感じだったよ。あとwindowsで コード組むなら、やっぱりVC++がいいと思う。単純にwindowsとの相性がいいのと windowsで実行する場合、実行速度が速い。(独特な部分もあるので、注意が必要だけど) 将来移植するかもしれないけど、当分windowsメインなら自分でラッパークラスを作って 移植の時楽になるようにしておくのがいいんじゃないかな。 MFCはやっつけで作るには楽だけど、腰を据えて作る場合はなんか いらいらすることが多くて、自分はあんまり使いやすく感じなかった。 構造覚えるのも労力かかるし、わざわざ使うことないんじゃないかな。 C#(というか.NET)は、細かいところにこだわりを持つ性分なら薦めない。 使いやすいけど、細かいことにこだわると、結局API叩くことになるから。 あとやっぱり、もっさりした感じになりやすいね。 ついでに書くと、Qtはフリー版で作ったものは、ライセンスがGPLになるのと バージョンがあがった時に互換性がなくなった、変なプリプロセッサを通して コンパイルするなどが嫌で、使うのやめたことがある。作り易そうではあるんだけどね。
52 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 08:05:00 ] >>51 で、wxWidgetsはどうなんだ?
53 名前:デフォルトの名無しさん mailto:sage [2008/07/15(火) 20:30:58 ] そういえば、ここはwxのスレだった。 wxは以前に調べた限り、C++でクロスプラットフォームの開発をする場合は 一番妥当なライブラリだと思うよ。 日本語の入力が使えて、継続的に開発されていて、GUIの見た目がOSと 同じようになる。ある程度の実績があり、ライセンス的にもあまり 縛りが強くないってなると、wxしかなかった。 IME周りや日本語フォントなど細かいことをやるには問題があるかもしれないけど。 自分はクロス開発する必要があるものはwxを使って、api叩く必要がある場合は ラッパークラスを作るようにしている。 あと日本語周りを細かく操作したいなら、どうせAPIを使うことになるから、 それが楽になるライブラリを探すよりは、そのあたりのAPIの使い方を 調べたほうが近道だし、応用が利くと思うよ。
54 名前:デフォルトの名無しさん mailto:sage [2008/07/19(土) 05:41:43 ] そうだね
55 名前:デフォルトの名無しさん [2008/07/19(土) 21:07:43 ] ところで、暇つぶしに、wx使ってどこまでできるの挑戦で、こんなのつくってみたんだ。 cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/ugmail/Doutor/src/?sortdir=down
56 名前:デフォルトの名無しさん mailto:sage [2008/07/20(日) 04:59:33 ] ugmail.sourceforge.jp/
57 名前:デフォルトの名無しさん [2008/07/25(金) 16:02:55 ] ほしゅ
58 名前:35 [2008/08/01(金) 15:58:28 ] ご無沙汰です。挫折してしばらく何もしていなかったのですがまた最近やり始めています・・。 結局VC++はIDEの使い方を覚えるのが面倒で、またwxWidgetsに戻ってきてしまいました。 >どうも wxTextCtrl::SetStyle() とか GetStyle() を使うと、 >該当箇所の文字列が一瞬青く反転してしまうようです・・ この問題は、 (void) ::SendMessage(GetHwnd(), EM_HIDESELECTION, 1, 0) ; wxTextCtrl::GetStyle(position, style); (void) ::SendMessage(GetHwnd(), EM_HIDESELECTION, 0, 0) ; こんな感じでGetStyle()をオーバーライドしたら解決しました。win32APIを直書きすればこれぐらいの問題ならば解決できたようです。 今まだ悩んでいるのがEN_IMECHANGEやWM_IME_COMPOSITION を捕捉するところです。 >>31 さんに提示して頂いたように class myTextCtrl : public wxTextCtrl { public: virtual bool MSWCommand(WXUINT param, WXWORD id) { if ( !wxTextCtrl::MSWCommand( param, id ) ) { switch (param) { case EN_IMECHANGE: 〜 break; default: return false; } } return true; } みたいな感じで色々試してみているのですが、このやり方だとどうもうまく捕捉できません。 これらのイベントの捕捉のしかたが分かるかたいらっしゃいましたらご教授頂けると幸いです・・m(_ _)m
59 名前:35 [2008/08/01(金) 16:00:52 ] >>47 >>48 >> 49 >> 50 >> 51 ありがとうございますm(_ _)m お礼がめちゃくちゃ遅くなってすいません。 結局VC++とかWTLじゃなくてwxWidgetsをまだ使ってます。。
60 名前:18 mailto:sage [2008/08/02(土) 16:36:53 ] >>58 あれ?駄目なのかな。 ちとしばらく忙しくなるので、気長に待ってみて…
61 名前:デフォルトの名無しさん [2008/08/02(土) 21:37:47 ] >>58 MSWCommand の先頭で、処理してもだめなのか? wxStyledTextCtrlの場合でやったときは、 WXLRESULT wxStyledTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam) { WXLRESULT ret; switch(nMsg) { case WM_IME_・・・・ //じぶんでつくった処理 break; default: ret = wxControl::MSWWindowProc(nMsg,wParam,lParam); break; } return(ret); } なかんじでできたよ
62 名前:35 [2008/08/04(月) 13:01:51 ] レスありがとうございます。 MSWWindowProc()の方を試してみたら、VM_IME_COMPOSITIONを捕捉することが出来ました!ありがとうございましたm(_ _)m EN_IMECHANGE、VM_IME_CHAR、VM_CHAR はなぜか捕捉出来ず。 いまやりたいことが、「VM_IME_COMPOSITIONのタイミングで、IMEで編集中の文字列のフォントを変更する」ということなのですが、 VM_IME_COMPOSITIONを捕捉できてなんとかなったと思ったのですが、VM_IME_COMPOSITIONのタイミングでwin32APIの ImmSetCompositionFont(hIMC, lf) を使っても、フォントが変更されませんでした・・。 1が返ってきているので関数自体は成功していると思うのですが・・。 例えば、テキストインターフェース上で、太文字で強調表示させた文字列の直後にキャレットを置き、そこでIMEをONにし、キーストロークによって文字を打ち込むと、 直前の強調表示された文字列のフォント(太文字)がIMEのフォントにも継承されてしまうようで、 それをどうにかしたくてVM_IME_COMPOSITIONのタイミングでIMEの編集中の文字列のフォントを強制的にデフォルトのものに変えてしまおうという考えだったのですが・・ アドバイス頂けると幸いです。
63 名前:35 [2008/08/04(月) 13:56:38 ] > wxStyledTextCtrlの場合でやったときは、 wxStyledTextCtrlって、IMEをONにしたときの入力が正常に動かなくなかったですか? 自分の環境では変換待ちの文字列が常に一番上の行に出てしまって、それが嫌でwxStyledTextCtrlを使うのはやめたという経緯がありました。
64 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 20:01:03 ] 「自分の環境」とは?
65 名前:デフォルトの名無しさん [2008/08/05(火) 00:14:39 ] >>63 ああ、IMEの処理は実装されていないから、そうなる。 そもそも、IME関係はOS依存?FEP依存?のようで、wxWidgets に対応するものはない。 Scintilla の場合は、Plat??.cpp でマルチプラットフォームを実現してるのだが、 (wxStyledTextCtrlでは、PlatWX.cpp がそれに該当する) マルチプラットフォーム化する必要のために、IMEの処理を移植できなかったのかと思う。
66 名前:65 [2008/08/05(火) 00:19:11 ] あと、EN_IMECHANGE、VM_IME_CHAR、VM_CHAR の処理はwxWidgets のソースを見たほうがはやいな。 wxWidgets のソースは簡単だから、そっちをあたることをお勧めする。
67 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 13:24:03 ] wxJoystickを使うと、レジストリのHKLM\SYSTEM\.. というのを読みに行って失敗する・・・。 HKLM\ってうちのマシンには見当たらない。またwxJoystickEventがEVT_JOYSTICK_EVENTSで拾えない。 GetNumberJoysticksはなんか値が返ってきているから何かしらJoystickは見えているはずなんだけど。 コンパネのゲームコントローラはちゃんと認識しているのでHWの故障でもない。 さぁどうしよう。 飛ばしてwxMediaで遊ぶか。
68 名前:デフォルトの名無しさん mailto:sage [2008/08/12(火) 20:12:17 ] HKLMってHKEY_LOCAL_MACHINEのことだけど
69 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 19:47:49 ] 何でだろう、EVT_PAINTを登録するとCPUがブン回る・・・ samplesのプログラムはそうならないけど、何が違うのか分からない。 頭悪いな俺。
70 名前:デフォルトの名無しさん mailto:sage [2008/08/21(木) 06:59:56 ] wxPaintDC使ってないだろ
71 名前:69 mailto:sage [2008/08/21(木) 10:01:31 ] wxPaintDC dc( this ); とするべきなところを wxPaintDC dc; と書いていました・・・。 直したら、ちゃんと動きました。 スレ汚ししてすみませんでした。
72 名前:デフォルトの名無しさん [2008/08/23(土) 16:37:06 ] 質問です wxGridはデフォだとマルチセレクト且つダブクリで編集モードになりますが、 シングルセレクトにしてワンクリで編集モードに移行するようにできますか? IDEとかRADのプロパティ表示みたいなことをやりたいんです。 DialogBlocksが多分wxWidgetsで組まれてると思うのであれがそのまま使えればいいんですけど そのまんまのクラスって無いですよね?
73 名前:72 mailto:sage [2008/08/25(月) 22:14:35 ] 探してみたらwxPropertyGridっていうまんまのコンポーネントが見つかりました。 wxCodeに載ってなくても探せば使えるコンポーネントって結構ありますね
74 名前:デフォルトの名無しさん [2008/08/28(木) 17:27:01 ] で、クロス開発する場合、IDEはどれが一番良いの? wxDev-C++を使ってるけどバージョンうpされないorz
75 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:36:46 ] とりあえず、wx-Dev C++ と Code::Blocks は、どちらが良い?
76 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:46:17 ] GUI作成できるのは、 ・wx-Dev C++ ・Code::Blocks ・wxGlade だけでつか?
77 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:40:12 ] >>74 wxDev-C++はHPで近いうちに更新するっていってたよ >>76 そんなあなたに、このページを送ろう ttp://wiki.codeblocks.org/index.php?title=Comparison_of_wxSmith_features
78 名前:74 mailto:sage [2008/08/29(金) 10:07:05 ] >>77 え”、更新ですか!wx-Devは大好きなので嬉しい。 そのページ凄すぎ。 結構1年近くググルでwx系を検索してたんですが3つ4つしか把握できなかったのに、 そのページで全部そろうじゃん。 こんなにいっぱいあるとは。。。 商用のは一旦除いて(商用でもC++ Builder並に良いものなら買うけど、決定打が無さそうなふいんき)、 使ってないやつで良いのがあるかもしれないのでまた調査。
79 名前:61 [2008/08/29(金) 21:03:27 ] >>76 私的には Visualwx ttp://visualwx.altervista.org/indexit.php あとは、wxStudioとか wxstudio.sourceforge.net/
80 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:22:02 ] dialogblocksが挙がってないのは有料だから?
81 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 13:25:58 ] すでに72で挙がってるからですな・・・スマソ。
82 名前:76 mailto:sage [2008/09/01(月) 09:19:29 ] >>79 VisualWxってえらい変わりましたね。 以前はコンパイラ起動できなかったような。
83 名前:デフォルトの名無しさん mailto:sage [2008/09/01(月) 13:19:08 ] どれが良いか投票とか、 使える・使えないレビュー、 きぼんにゅ。
84 名前:デフォルトの名無しさん mailto:sage [2008/09/02(火) 17:15:22 ] どのIDEが好き?
85 名前:デフォルトの名無しさん [2008/09/03(水) 00:19:27 ] まだ、これってIDEやRADがないんだよねー。残念ながら。 俺は今、MinGWのCodeBlocksを入れようと思ってんだけど、 wxmsw28??_core.lib(libwxmsw28??_core.a)や、 wxbase28??.lib(libwxbase28??.a)がないって怒られる んだけど、下のサイトのようにwxWidgetsをビルドしても ライブラリが生成されないんだけど。なんで? python.matrix.jp/apps/code_blocks.html もっと簡単なクロスなIDEはないもんかね?
86 名前:デフォルトの名無しさん mailto:sage [2008/09/03(水) 01:18:15 ] 趣味プログラミングでしかないけれど、wxFormBuilder 3はフォームデザインのみとはいえ使い勝手いいよ。 自分で書くコードと、wxFormBuilderが生成するコードが、完全に分離されるところが好き。 Makefileは手書き、ソースコードエディタはVim。開発は主にLeopardで行い、一回のmakeでWin/Mac用バイナリを生成……という感じ。 IDEって、突然バージョンアップが止まったり、なんだか変なものを導入したのか 不安定&低速になったりとあんまり信用できない感じ。なんていうか、Delphiで懲りた。
87 名前:デフォルトの名無しさん mailto:sage [2008/09/07(日) 00:17:44 ] >>85 そでだけだとよくわからんけど、 debugのバイナリ作ってないのに デバッグビルドしようとして同じようなことになったことはあるな Code::Blocksよりdialogblocksのほうが使い易いと思う タダ版だとカスタムクラスが1つしか登録できないとか RADツールで使えないクラスがあったりするけど その辺は勉強もかねてエディタで乗り越えようとすれば問題なし
88 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 18:17:31 ] wxWidgetsで非矩形ウィンドウや半透明ウィンドウは扱えるのでしょうか。 また扱える場合は関連するメソッドを教えていただけると有り難いです。
89 名前:デフォルトの名無しさん mailto:sage [2008/09/11(木) 22:13:46 ] >>88 リージョンは使えるよ。 半透明ウィンドウは、以前そんな話があったみたいだけど、 Windows以外のプラットフォームで出来ないのもあるみたい なので、実装されなかったみたい。
90 名前:88 mailto:sage [2008/09/11(木) 22:38:14 ] >>89 なるほど。どうもありがとうございます。 対応プラットフォームが多いと実装もやっぱり大変なのでしょうねぇ。
91 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 11:35:27 ] IDEランキング調査スタート!
92 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 12:45:41 ] ,. -‐ ' ´  ̄ `` ' ‐- 、 ,. -─ ‐- 、 / ``' 、 ∠-‐' "´  ̄ ` `'‐- 、 `'‐、 /´ ヽ、 `'‐ 、__ , ‐' (⌒'‐- 、 \ -='´ ='イ ヽ. ヽ / ヽ、=_,‐''´ 、_,ノ ヽ . i 、 ヽ、_, /,. _-,=‐、ゝ' ', .{ ゞ_=、<. ヽ-' ,、r‐;、彡‐==/ニ.ヽ }-‐- 、 / \ ', 、y=;'、 ´ゞ=''_,.´ / F、ヽ ', ./ \ / \ヽ`ゞッ /  ̄ { |´ノ / ∠ \ ,/ `}  ̄〈,. -‐、 ! ヽ/ / `、 `'‐-、ニ、_,./ ! ` '、 ヽ. / `'‐- ..,,j-‐'"´ ヽ. ' ´ ̄` ヽ ∨ . \ '" ,. } ∧ ヽ. ____, ,-‐'" / ,./ ‐ヘ )_,,.ハ <_,. -' \___,,,.. ..,, ´ ト、 | | /´ ``ヽ. _,. -‐'´j ヽ! ィ /´ ト、 /´| i. ヽ! /// _,,,.. ....., 、 |i | | |\ __ ./ / {,. -‐´ __ ` !.} ,-ソ ! ! / Y´ /くン-─/´ _,,.. - / | ,. へ'´ 、 リ ! />-<ヽ. ∠ノ  ̄``'´ / i ‐ 、_ 、_ ヾ ノ !' ´ `/ / !
93 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 15:26:54 ] _ _, - ' ´ ̄ ̄  ̄ ヽー -、_ / `ー 、_ / _ `ヽ / /´ `ヽ, `i / l i ヽ i ヽ、 (_).ノ ヽ | l l | /l /l | ハ /l  ̄ ヽ ', l ヽ. ハ |ヽ| ヽ 、 l ヽ、 l ヽ ', ヽヽ、 _-ヽヽヽヽ、 >_ニ==`ー-、j i 冫、 _v ーテ、 - 'テtァ- ', | / ヽ .,ヽ゚ノ ヽヽ=゚'´ ヽ ! i ! / / ̄ i / ', ー / l ! ヽ ー - - ! / \ \ _ ヽ _ / `ー --'-'- `ー -‐ i ´ `ー'- -'-'-'-'‐'´ | | | ヽ、 _____ノ `ー - -、_ ヘ _, - ' `ー、 / \ , - ‐ ' ´ /  ̄ ̄ ヽ l ヽ 、 _ , - ‐ ' ´ / i y / | / / l / / / / ( ` y ´ / / /
94 名前:デフォルトの名無しさん mailto:sage [2008/09/12(金) 16:09:32 ] Libファイルを作成後に sampleをコンパイルしてみようと思ったんですが 未解決の外部シンボル だらけになってしまいます。 どうもまったくlibファイルを認識していないのか何なのか。 sampleはそのままの状態でコンパイルしてはいけないんでしょうか?
95 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 08:52:45 ] あのさ、こっちだってエスパーじゃないんだから、 自分がどういう環境で何をやってるか相手に判ってもらおうっていう気はないわけ?
96 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 09:46:27 ] 原因を追求する気があるならあんな書き込みはしないだろ。
97 名前:デフォルトの名無しさん mailto:sage [2008/09/13(土) 23:03:26 ] wxwidgetsのストリング関係のクラスは 日本語使える(漢字)?
98 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 00:07:06 ] >>97 使える。Unicode モードと、環境依存エンコーディング決めうちモード(なぜかANSIモードとよばれる)があるよ。
99 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 05:53:11 ] 後者は基本的にユニバイト環境しか考えていない。 たとえばファイルのパス操作など、セパレータが \ かつ文字コードがCP932な 変態環境では問題が生じうる。
100 名前:デフォルトの名無しさん mailto:sage [2008/09/14(日) 12:21:10 ] 94です すいません。8時間ぶっ通しで1つの進展も無く悩みすぎて色々おかしくなってました。 2日寝てようやく冷静になりました。 wxMSWのセットアップを使用して、WindowsXpにxwWidgetsをインストール後 VisualC++2005Expressに、\build\msw\ws.dswを読み込ませ各種libファイルをビルドしました。 この時点でエラーはありません。 その後、サンプルをビルドしてみようと \samplesフォルダにある、samples.dswを読みこんでそのままビルドしてみましたが、 すべてのlib内の関数が「未解決の外部シンボル」と出て認識してもらえませんでした。 試しに、他の\samplesフォルダ内の 各サンプルの.dspファイルを直にVC++2005Expressに読み込んで、同じ様にビルドしてみましたが すべて同じ症状でした。 生成したlibファイルの存在する\lib\vc_libにはリンク設定はしてるようですし、 インクルードディレクトリの設定にも問題があるようには思えませんでした。 sample内の.dspファイルはそのままの状態でコンパイルしてはいけないんでしょうか?