【GUI】wxWidgets(旧wxWindows) その4【サイザー】
- 1 :デフォルトの名無しさん:2008/06/28(土) 21:49:20
- クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。
本家
http://www.wxwidgets.org/
wxWindows日本語プロジェクト
http://wxwindowsjp.sourceforge.jp/
Let's wxWidgets
http://dot-gray.s33.xrea.com/
wxWindowsで始めるC++ GUIプログラミング
http://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://0xcc.net/pub/uu-2004-08/
- 38 :デフォルトの名無しさん:2008/07/14(月) 10:26:13
- Lazarusもなんか微妙なんだよねぇ。
BorlandがKylixを見捨ててなければ、クロスプラットフォームアプリの
大本命になれたかもしれないのに。
- 39 :デフォルトの名無しさん:2008/07/14(月) 10:37:25
- >Windows なら .Net
そ・れ・は・ない
- 40 :18:2008/07/14(月) 10:56:40
- >>35
wxWidgets の話題から外れるので、軽くだけ。
何をやりたいかよくわからなくて想像だけど、
そういうことをやりたいときは WM_IME_COMPOSITION をとらえて
ImmGetContext から HIMC を取得し、Imm* 系の API を使うんじゃ
ないかな?
wxTextCtrl のようなコントロールを駆使してやるのは難しいと思いますよ。
- 41 :デフォルトの名無しさん:2008/07/14(月) 12:18:53
- >>39
37 ですが、見当外れだったらすいません、日曜 Cocoa 屋さんなもので ...
- 42 :35:2008/07/14(月) 13:16:44
- レスありがとうございます。
>wxWidgets の話題から外れるので、軽くだけ。
すいません、そうですよね。。ありがとうございます。
>wxTextCtrl のようなコントロールを駆使してやるのは難しいと思いますよ。
やはり・・
>> Windows なら .Net
> そ・れ・は・ない
いまさらVisual C++ とかはあんま賢くない選択肢なんでしょうか。
> こういうクロスプラットホームので日本語入力周りが細かく操作出来ると思うのが甘いんじゃないかと思います ... 開発者の大多数が英語環境なわけでね。
それに気づくのが遅すぎました泣
QTなんかはどうなんですかね・・日本での実績もあるのでwxWidgetsよりはマルチバイト文字周りも大丈夫そうですが。
結局開発環境で何を採用すればいいのかという導入部での問題にまたぶつかってしまいました。
最初は、これからはマルチプラットフォーム対応じゃないとと思ってwxWidgetsを選んでみたんですが、結局まだほとんどの日本人はWindowsを使っているわけで、まだしばらくはWindowsをほとんどの人が使っていくんじゃないかとも最近思うので、
素直にVisual C++ から入ればよかったのかなとか思い始めてるんですが・・
こういう話題NGだったらスルーしてくださひ。
- 43 :デフォルトの名無しさん:2008/07/14(月) 13:19:24
- >素直にVisual C++ から入ればよかったのかなとか思い始めてるんですが・・
Windowsソフトを作るにしてもVC++はやめといた方が良い。
M$社内でも使われなかった該吉設計MFCを使うか、
ドトネトとC++を混ぜるというそれだけでウンザリ、
といった環境しかない。
- 44 :デフォルトの名無しさん:2008/07/14(月) 13:55:31
- >>42
>最初は、これからはマルチプラットフォーム対応じゃないとと思ってwxWidgetsを選んでみたんですが、結局まだほとんどの日本人はWindowsを使っているわけで、まだしばらくはWindowsをほとんどの人が使っていくんじゃないかとも最近思うので、
会社の仕事でソフトを書いてるなら他の人が何を使ってるかは重要だけど、
自分ひとりで使うなら何で組んだって勝手だよね。
wxWidgets がすきならそれをつかえばいいし、プラットフォームべったりでも好きなフレームワークがあればそれを使えばいいんだと思うけども、
どうも 35 さんは日本語入力周りをいじりたいというクロスプラットホームには不向きな題材をやりたいようだから...
やっぱやりたいことに即した言語/フレームワークを使うべきだとおもいます。
でもVisual C++ はよくないと思います。C++/CLI は変態で面白い言語だとは思うけど。
- 45 :デフォルトの名無しさん:2008/07/14(月) 14:07:06
- >思ってwxWidgetsを選んでみたんですが
この苦難を乗り越えてこそ、
アプリとかのすぐれたデザインパターンを発見できるだろうし、
ソフトウェア資産になると思うんだが。
それが”WxWidgetsを組み込んだ場合の優良なデザインパターン”となるか、
”質問者の作成するはソフトウェアの要素からWxWidgetsが外される”ことと落ち着くか、
それは自分で決めることだけど。前者も無理じゃないと思うぞ。
- 46 :35:2008/07/14(月) 14:24:32
- どもです。
Visual C++ 人気ないですね。。MFCとか.NETが人気ないってことなんでしょうか。
ATL/WTL ってのがVisual C++ で使えるみたいなんですがこれはけっこう評価が良いような??
あとはVisual C# とかですかね。。
>>45
まだ自分はデザインパターンとか見つけられるレベルではない気がします。。
- 47 :デフォルトの名無しさん:2008/07/14(月) 14:35:41
- 別にVC++で問題ないよ。SDKでガシガシ書け。
どうせどんなGUIライブラリ使っても、細かいところはAPI直に触らなきゃならないんだから。
- 48 :デフォルトの名無しさん:2008/07/14(月) 14:49:18
- VC++/SDKなら問題無いかも。
それならその中にWxWidgets使っても無問題。
MFCはやめとけ。
1回生成されたダイアログを使ったソースを見てみれば、
”これ何語?”って感じであきらめることになるだろう。
ドトネトもやめとけ。作るものに限界があるし、そうだと、作っててつまんない。
- 49 :デフォルトの名無しさん:2008/07/14(月) 15:04:36
- >まだ自分はデザインパターンとか見つけられるレベルではない
どっちにせよ、アプリの構造はつねに意識してないとね。
どういう構造が良いのかわかってないと、プログラム修正して良くなったのか悪くなったのかわからんだろ。
- 50 :デフォルトの名無しさん:2008/07/15(火) 02:39:38
- 自分か身内だけで使うようなちょっとしたものだと、
C#に.NET3.0↑で書くのが楽すぎる
Windows専用になっちゃうんだけどさ
ってスレ違いだな
- 51 :デフォルトの名無しさん:2008/07/15(火) 04:26:43
- >>46,35
以前に少し使った程度だけど、WTLは結構いい感じだったよ。あとwindowsで
コード組むなら、やっぱりVC++がいいと思う。単純にwindowsとの相性がいいのと
windowsで実行する場合、実行速度が速い。(独特な部分もあるので、注意が必要だけど)
将来移植するかもしれないけど、当分windowsメインなら自分でラッパークラスを作って
移植の時楽になるようにしておくのがいいんじゃないかな。
MFCはやっつけで作るには楽だけど、腰を据えて作る場合はなんか
いらいらすることが多くて、自分はあんまり使いやすく感じなかった。
構造覚えるのも労力かかるし、わざわざ使うことないんじゃないかな。
C#(というか.NET)は、細かいところにこだわりを持つ性分なら薦めない。
使いやすいけど、細かいことにこだわると、結局API叩くことになるから。
あとやっぱり、もっさりした感じになりやすいね。
ついでに書くと、Qtはフリー版で作ったものは、ライセンスがGPLになるのと
バージョンがあがった時に互換性がなくなった、変なプリプロセッサを通して
コンパイルするなどが嫌で、使うのやめたことがある。作り易そうではあるんだけどね。
- 52 :デフォルトの名無しさん:2008/07/15(火) 08:05:00
- >>51
で、wxWidgetsはどうなんだ?
- 53 :デフォルトの名無しさん:2008/07/15(火) 20:30:58
- そういえば、ここはwxのスレだった。
wxは以前に調べた限り、C++でクロスプラットフォームの開発をする場合は
一番妥当なライブラリだと思うよ。
日本語の入力が使えて、継続的に開発されていて、GUIの見た目がOSと
同じようになる。ある程度の実績があり、ライセンス的にもあまり
縛りが強くないってなると、wxしかなかった。
IME周りや日本語フォントなど細かいことをやるには問題があるかもしれないけど。
自分はクロス開発する必要があるものはwxを使って、api叩く必要がある場合は
ラッパークラスを作るようにしている。
あと日本語周りを細かく操作したいなら、どうせAPIを使うことになるから、
それが楽になるライブラリを探すよりは、そのあたりのAPIの使い方を
調べたほうが近道だし、応用が利くと思うよ。
- 54 :デフォルトの名無しさん:2008/07/19(土) 05:41:43
- そうだね
- 55 :デフォルトの名無しさん:2008/07/19(土) 21:07:43
- ところで、暇つぶしに、wx使ってどこまでできるの挑戦で、こんなのつくってみたんだ。
http://cvs.sourceforge.jp/cgi-bin/viewcvs.cgi/ugmail/Doutor/src/?sortdir=down
- 56 :デフォルトの名無しさん:2008/07/20(日) 04:59:33
- http://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: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 :デフォルトの名無しさん: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 :デフォルトの名無しさん:2008/08/12(火) 13:24:03
- wxJoystickを使うと、レジストリのHKLM\SYSTEM\.. というのを読みに行って失敗する・・・。
HKLM\ってうちのマシンには見当たらない。またwxJoystickEventがEVT_JOYSTICK_EVENTSで拾えない。
GetNumberJoysticksはなんか値が返ってきているから何かしらJoystickは見えているはずなんだけど。
コンパネのゲームコントローラはちゃんと認識しているのでHWの故障でもない。
さぁどうしよう。
飛ばしてwxMediaで遊ぶか。
- 68 :デフォルトの名無しさん:2008/08/12(火) 20:12:17
- HKLMってHKEY_LOCAL_MACHINEのことだけど
- 69 :デフォルトの名無しさん:2008/08/20(水) 19:47:49
- 何でだろう、EVT_PAINTを登録するとCPUがブン回る・・・
samplesのプログラムはそうならないけど、何が違うのか分からない。
頭悪いな俺。
- 70 :デフォルトの名無しさん:2008/08/21(木) 06:59:56
- wxPaintDC使ってないだろ
- 71 :69: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:2008/08/25(月) 22:14:35
- 探してみたらwxPropertyGridっていうまんまのコンポーネントが見つかりました。
wxCodeに載ってなくても探せば使えるコンポーネントって結構ありますね
- 74 :デフォルトの名無しさん:2008/08/28(木) 17:27:01
- で、クロス開発する場合、IDEはどれが一番良いの?
wxDev-C++を使ってるけどバージョンうpされないorz
- 75 :デフォルトの名無しさん:2008/08/28(木) 17:36:46
- とりあえず、wx-Dev C++ と Code::Blocks は、どちらが良い?
- 76 :デフォルトの名無しさん:2008/08/28(木) 18:46:17
- GUI作成できるのは、
・wx-Dev C++
・Code::Blocks
・wxGlade
だけでつか?
- 77 :デフォルトの名無しさん:2008/08/28(木) 22:40:12
- >>74
wxDev-C++はHPで近いうちに更新するっていってたよ
>>76
そんなあなたに、このページを送ろう
ttp://wiki.codeblocks.org/index.php?title=Comparison_of_wxSmith_features
- 78 :74: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とか
http://wxstudio.sourceforge.net/
- 80 :デフォルトの名無しさん:2008/08/30(土) 13:22:02
- dialogblocksが挙がってないのは有料だから?
- 81 :デフォルトの名無しさん:2008/08/30(土) 13:25:58
- すでに72で挙がってるからですな・・・スマソ。
- 82 :76:2008/09/01(月) 09:19:29
- >>79
VisualWxってえらい変わりましたね。
以前はコンパイラ起動できなかったような。
- 83 :デフォルトの名無しさん:2008/09/01(月) 13:19:08
- どれが良いか投票とか、
使える・使えないレビュー、
きぼんにゅ。
- 84 :デフォルトの名無しさん: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をビルドしても
ライブラリが生成されないんだけど。なんで?
http://python.matrix.jp/apps/code_blocks.html
もっと簡単なクロスなIDEはないもんかね?
- 86 :デフォルトの名無しさん:2008/09/03(水) 01:18:15
- 趣味プログラミングでしかないけれど、wxFormBuilder 3はフォームデザインのみとはいえ使い勝手いいよ。
自分で書くコードと、wxFormBuilderが生成するコードが、完全に分離されるところが好き。
Makefileは手書き、ソースコードエディタはVim。開発は主にLeopardで行い、一回のmakeでWin/Mac用バイナリを生成……という感じ。
IDEって、突然バージョンアップが止まったり、なんだか変なものを導入したのか
不安定&低速になったりとあんまり信用できない感じ。なんていうか、Delphiで懲りた。
- 87 :デフォルトの名無しさん:2008/09/07(日) 00:17:44
- >>85
そでだけだとよくわからんけど、
debugのバイナリ作ってないのに
デバッグビルドしようとして同じようなことになったことはあるな
Code::Blocksよりdialogblocksのほうが使い易いと思う
タダ版だとカスタムクラスが1つしか登録できないとか
RADツールで使えないクラスがあったりするけど
その辺は勉強もかねてエディタで乗り越えようとすれば問題なし
31 KB
[ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]
取りに行ったけどなかった。次は一時間後に取りに行くです。新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver 05.0.7.3 2008/07/26
FOX ★ DSO(Dynamic Shared Object)