トップページtech
981コメント348KB

【GUI】wxWidgets(旧wxWindows) その3【サイザー】

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2006/09/09(土) 00:06:30
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。

本家
 http://www.wxwidgets.org/
wxWindows日本語プロジェクト
 http://wxwindowsjp.sourceforge.jp/
Let's wxWidgets
http://dot-gray.s33.xrea.com/
(*)準備中(*)
http://www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
http://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
 http://www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
 http://www.idg.co.jp/sw/back/200102/20010219_01_report.html
0269デフォルトの名無しさん2007/04/10(火) 21:01:12
新着で100もレスついてるから何かと思えば…
02702612007/04/10(火) 21:07:58
馬鹿は一匹出てくると立て続けに何十匹も出てくるからな。
スレが無駄に伸びる伸びる。
0271デフォルトの名無しさん2007/04/10(火) 21:10:27
>>266,>>268,>>270
お、俺がもう一人居る。あんたが >>261 だとすると、俺は誰だw
何にせよ >>261 の書き込みは破壊力抜群だったみたいで何より。
>>262 には悪い事したけど、まともな人はもう居ないと思ってた。

>>265
あんたプログラマだったの?
プログラマは平日昼間から 2ch やれて羨ましいなあ。
エンコーディング情報は環境変数からとって来るから良いんだよ。
あんたが思ってる様なカオスの世界では無いよ。
02722712007/04/10(火) 21:13:42
話を簡単にまとめると、エンコーディングが静的に決まっているのが
NTFS や HFS+(どちらも UTF-16) で、行儀の良いアプリであれば
そのエンコーディングに従って文字列を格納してくれる。勿論、zip
の例の様に、人間にとって valid な文字列を生成出来ない場合も
あるし、ファイル名が ASCII である事を前提に書かれたプログラム
も存在している。
一方で、エンコーディングが環境に合わせて変わるのが UNIX 方式。
ファイルシステムの数も扱うロケールの数も沢山あるし、OS 自体も
色んな種類があるので入力には寛容に作られている。行儀の良い
アプリならロケールを見てきちんとデータを変換してくれる。勿論
入力が ASCII のみを想定している様なプログラムもあって、8 bit
clean じゃないコマンドも残っていたりする。

どちらの方式でも言えるのは、人間にとって valid じゃない文字列を
生成するのは簡単だという事。valid じゃない文字列を生成する
プログラムが良いか悪いかは別として、そういうプログラムが存在する
事は間違いない。だとすると、エンコーディングを決め打ちして満足
しているのは抜けてるんじゃないかなあというのが俺の意見。

Windows な人が共感出来るかどうかは別として、論理としては理解
出来るように書いているつもりだけど、どうよ?
0273デフォルトの名無しさん2007/04/10(火) 21:52:01
>>271
> エンコーディング情報は環境変数からとって来るから良いんだよ
環境変数はユーザ毎、プロセス毎、それどころかプロセス実行中にも
変化し得る揮発性のデータでしょ。実際、
$ LANG=C man foo
のように、一時的にLANGを変えてコマンドを実行するようなことは
日常茶飯事のはずだ。

環境変数が指し示すのはあくまで「プロセスの実行環境」であって、
「ファイル名が何でエンコードされているか」ではない。それらは
全く別のものなのに、一体それでなぜ「良いんだよ」と言えるのか。

・ファイル名のエンコーディング方式が固定化されているか
・ファイル名のメタデータとしてエンコーディング方式が取得/設定できるか

以外に正しい解は無いよ。そんなこと、分かりきってるだろうに。
0274デフォルトの名無しさん2007/04/10(火) 21:57:11
>>272
> 論理としては理解出来るように書いているつもりだけど、どうよ?

あなたがUnix方式の穴/不備に故意に目を瞑っていることだけはよく理解できる。
そして、「完璧な方式など無い」と主張することで、そこから目をそらさせようと
しているわけだ。

1. エンコーディング固定化方式
2. エンコーディングが可変で、形式をメタデータとして保持する方式
を比較するなら分かる。
どちらにも得失はあるが、「まともな」やり方だ。
Unixはそのいずれでもない。可変で、形式情報が失われてしまう。
Zipと同じだよ。
02752712007/04/10(火) 21:57:12
>>273
ファイル名が何でエンコードされてるかは重要じゃない。
ファイル名のバイト列をどの文字コードで解釈したいと
ユーザが指定しているかが分かれば良い。

エンコードを決め打ちしても当然例外は発生するんだから
正しい解なんて存在しないんだよ。それに気付ければオケ。
0276デフォルトの名無しさん2007/04/10(火) 21:59:53
もうちょっと論理的に頼むわ。
馬鹿でもいいから、限界まで頑張って。
02772712007/04/10(火) 22:00:13
>>274
>完璧な方式など無い

まさにその通り。それを認識する事が重要だよ。
そうすればもっと色んな考えに寛容になれるよ。
0278デフォルトの名無しさん2007/04/10(火) 22:01:44
Windows方式は完璧ではないよ。無論。誰もそんなことは主張していない。
Unix方式よりずっとマシだ、といっているだけだ。
0279デフォルトの名無しさん2007/04/10(火) 22:01:47
>>276
お前は >>261 なんだろ...
自分の役割を忘れるな
0280デフォルトの名無しさん2007/04/10(火) 22:03:58
>>275
>ファイル名が何でエンコードされてるかは重要じゃない。
>ファイル名のバイト列をどの文字コードで解釈したいと
>ユーザが指定しているかが分かれば良い。

環境変数という荒くて大雑把な手段では、実際に個々のファイル単位に
エンコーディングを指定することは出来ないし、インタラクティブな
プログラムばかりではない。
問題が大きいのに相変わらず故意に目をつぶりまくっているな。
0281デフォルトの名無しさん2007/04/10(火) 22:05:43
>>278
それなら君は Windows ユーザじゃないってことだ。
0282デフォルトの名無しさん2007/04/10(火) 22:06:57
>>281
キミ、面白すぎ
Windowsマンセー、欠陥など一切認めないって信者以外はWindows使っちゃ
いけないのネ
0283デフォルトの名無しさん2007/04/10(火) 22:09:28
>>282
物事を面白がれるのはいいことだと思うよ。

現実と架空の区別さえついていれば。
0284デフォルトの名無しさん2007/04/10(火) 22:10:06
マルチバイト文字の2byte目の引き起こす下らない問題に
煩わされてきた日本人であるならば、
名前なんてただのバイト列でいいよ、エンコーディングなんてどうでもいいよ、
なんてことは言えない筈だぞ。

UnixとCの時代遅れな設計がいかに多くの下らない「日本語対応パッチ」のような
adhocな生産物を意味出してきたことか。
0285デフォルトの名無しさん2007/04/10(火) 22:18:40
>>278
悪いけど俺にはとてもそうは思えないし、エンコード決め打ちなんて
俺の基準からすると作法がなっていない。
0286デフォルトの名無しさん2007/04/10(火) 22:19:53
>>284
いいからしばらく黙ってろって。襤褸が出まくってる。
0287デフォルトの名無しさん2007/04/10(火) 22:25:18
>>285
> エンコード決め打ちなんて俺の基準からすると作法がなっていない。
そういう「気分」「好み」でしか語れないのか?
技術者なら、Unix方式に比べてどういう具体的な問題・欠陥があるか語れよ。
0288デフォルトの名無しさん2007/04/10(火) 22:27:47
>>287
散々書いたじゃん。今まで何読んでたの?
鬱陶しいから横から煽るのは止めてくれ。
あと >>284 みたいな見当違いの事書くのも勘弁な。
0289デフォルトの名無しさん2007/04/10(火) 22:29:16
>>288
> 散々書いたじゃん
「Windowsも完璧ではない、Windowsも同じ」以上のことは書いてない気が
するが?
0290デフォルトの名無しさん2007/04/10(火) 22:32:23
今ある環境を*肯定*して最大公約数的なものを
提供するのがwxWidgetsだと思うのだが。

OS批評がしたいならOS板に行ってくれないかな。
0291デフォルトの名無しさん2007/04/10(火) 22:39:22
>>284はそんなに見当違いか?

テキストとバイナリを区別せずただのバイト列として扱うのが
伝統的なUnixおよびCの文化だ。
実際にはそうした愚直で単純なやり方ではマルチバイトテキストを
扱う上で大きな問題を引き起こす。
無論UnixおよびCでそうでないプログラムを書くことは可能だが、
それに対するサポートレベルがWindowsに比べて非常に低い。

Windowsはテキストを明確に区別する。ほぼ全てのテキストを受け渡しする
APIには、Ansi版とUnicode版が存在し、APIユーザ=プログラマは、
自分のプログラムに適したストラテジーによってそれらを使い分けることが出来る。
Ansi版を使う場合はUnixのロケールモデルに近くなり、それらの切り替えは容易だ。
正しくWindowsの作法に従って書かれたプログラムなら、OSに渡るテキストは
全てUTF-16だ。
そうした世界では、もともとm17n対応であり、SJISの2byte目が引き起こす
伝統的な下らない問題とも無縁だ。
ファイルシステム内のファイル名も一貫しており、どんなコードページで
実行していようが全てのファイルを正しく扱える。
テキストを意識し、テキストを正しく扱っているから出来ることだ。

Unixは「何でもあり」と一見自由のようなことを言っていて、
実際にはエラーを起こしがちで問題の多い解でしかないわけだ。
ちょうど行毎にエンコード形式の異なるテキストファイルのように。
0292デフォルトの名無しさん2007/04/10(火) 22:41:05
>>291
ガンガレ
もっとガンガレ
0293デフォルトの名無しさん2007/04/10(火) 22:59:47
>>289
書いて無くても書いたんだよ!
0294デフォルトの名無しさん2007/04/10(火) 23:01:57
案外ここ住人いたんだなあ
なんだかうれしいよ
0295デフォルトの名無しさん2007/04/10(火) 23:24:59
ここまで俺の自演
0296デフォルトの名無しさん2007/04/10(火) 23:31:07
いやいや、オレオレ
0297デフォルトの名無しさん2007/04/10(火) 23:40:31
VC++ 2005 express edision(無料のやつ)

wx_dll.dswをコンパイルすると
MessageBox@16が見つからないとかいうエラーが出てdllが生成されないんだけど
なんじゃこりゃ
0298デフォルトの名無しさん2007/04/11(水) 00:27:41
普通の質問になると黙るのがワロス
0299デフォルトの名無しさん2007/04/11(水) 01:16:44
ダメ文字と半端バイト、エンディアン、改行の扱いで問題なければ別にどうでも良いよ
……Windows&SJIS/UTF-16が苦手にするところだなぁ。WindowsもUTF-8(N)にならんかね?
0300デフォルトの名無しさん2007/04/11(水) 01:22:32
>297
ちゃんとWindowsの開発環境整えてる?Platform SDKとか。
0301デフォルトの名無しさん2007/04/11(水) 01:28:18
>>300
libがなかったらそれ以前にlibが無いってエラーが出るからね
その辺はちゃんとやってる
wx.dswのほういわゆる静的リンクは問題なくコンパイルできる
DLLのほうがだめ
0302デフォルトの名無しさん2007/04/11(水) 07:49:05
>>299
どこでも UTF-16 は負の遺産と化してるね
0303デフォルトの名無しさん2007/04/11(水) 12:00:37
Javaも.NETもTclもICUもUTF-16だけどな。
ファイルやネットワークで使用するデータ交換形式としては無論UTF-8が
望ましいが、マルチバイト処理を必要とするから、内部コードとして
使うにはUTF-32のほうがいいよ。
UTF-16はまぁ中途半端の観は否めないが、内部コードとして使っている分には
それほど大きな不満はないな。

内部コードとしてのUTF-8の問題は、マルチバイト処理を必要とするだけでなく、
全部char*になってしまうということ。これは一見単純で良いようだが、
Unicodeデータかどうかの識別がつきにくく、プログラミング言語の
オーバーロード機能なども利用しにくくなってしまう。
0304デフォルトの名無しさん2007/04/11(水) 13:04:20
>>303
内部コードにUTF使うか?
エンディアン無視してUCSそのままだろ。
0305デフォルトの名無しさん2007/04/11(水) 16:58:30
>>303
エンコーディングの問題とプログラミング言語の問題も分離できないくせに
偉そうなフリしてて笑えるw
0306デフォルトの名無しさん2007/04/11(水) 17:35:01
ここは何のスレ?
0307デフォルトの名無しさん2007/04/12(木) 19:06:05
ねぇ、2.6.3のサンプルでpenguinサンプルをビルドして動かしてみたんだけど、
ウィンドウを閉じようとしたら「ハンドルされていないエラーが発生しました」とかいうエラーが
出てしまう。他のOpenGL使うサンプルもみんなそうなんだけど、これってwxWidgetsのバグ?
03083072007/04/13(金) 14:14:50
>>307
原因がわかったぽい。
NVIDIAの提供しているデバッグ用ドライバだとエラーになるっぽい。
通常のGeForceドライバだとエラーにならなかった。

まさかドライバで動作が違うとはね。
0309デフォルトの名無しさん2007/04/13(金) 21:16:38
wxPythonで使ってるんだけど、いわゆるショートカットキー(ホットキー)って
どうやって実装するの?
wxAcceleratorKeyはメニュー用のようだし、wxKeyEventはフォーカスされた
ウィンドウにしかトリガーしない。
リファレンスにもそれっぽい方法は見当たらなかったのだけど。
0310デフォルトの名無しさん2007/04/13(金) 21:24:15
メニューのファイル(F)の"Alt+F"みたいなの?
それだったら"ファイル(&F)"でできるけど。
0311デフォルトの名無しさん2007/04/13(金) 21:50:37
>>310
いや、違うだろ。
グローバルホットキーのことでしょ?
OS依存度高そうだな。
03123072007/04/13(金) 22:01:38
>>308
と思ったら、普通のGLUTアプリでもこけた。
こりゃwxWidgetsとは全然関係のない話で、単にドライバの仕様な予感。
スマンカッタ・・・。
03133092007/04/13(金) 22:18:52
>>311
それもだけど、当面はアプリケーションごとのCtrl+Zで取り消し、みたいなやつ。
wxMenu.Appendでitem="Undo\tCtrl+Z"とすればできるけど
これだとメニューを出せない場合に困るし、どうしたらよいものかと。
0314デフォルトの名無しさん2007/04/16(月) 16:11:20
質問です。
条件によってUIを機能しない(ボタンだったら表示が薄くなって押せなくなる)ように
するにはどうすれば良いのでしょうか。
wxWidgetsのサンプルではEVT_UPDATE_UIというイベントを使っているようですが、
真似して試してみたところ上手く行きません。
0315デフォルトの名無しさん2007/04/16(月) 16:31:43
Disable()
0316デフォルトの名無しさん2007/04/20(金) 16:19:35
ttp://www.averdevelopment.com/python/wxAGG.html
面白いの見つけた(windows限定みたいだし余り魅力的ではないかも…)
でも
dc = AggDC(wx.PaintDC(self))
b = aggBrush(self.dc.GetBrush())
p = aggPen(self.dc.GetPen())
みたいに使用するのは簡潔でいいと思うけど

def aggBrush(wxBrush):
def aggPen(wxPen):
を使うたびにどこかで定義しないといけないとか、これなら
素直にGDI+を使ったほうが良いかなという気もしないでもない。

というか日本語資料が一件しかないしな…
0317デフォルトの名無しさん2007/04/22(日) 13:01:11
そんなもん使うことあるか?
ゲーム作るんならどにみちバッファ直接書いたほうが早いぞ
DirectXより早いぞ
0318デフォルトの名無しさん2007/05/05(土) 02:07:54

誰か、コレを和訳してないかな?

Cross-Platform GUI Programming with wxWidgets
0319デフォルトの名無しさん2007/05/05(土) 06:39:51
wxWidgetsによるプラットホーム非依存なグラフィカルユーザインターフェイスプログラミング

してみたけど。
0320デフォルトの名無しさん2007/05/05(土) 11:16:14
ああ流石に寒いかなと思ってやらなかったのに…
0321デフォルトの名無しさん2007/05/05(土) 22:59:17
だれか、これで2chブラウザつくらないのかな?
0322デフォルトの名無しさん2007/05/06(日) 01:33:23
メリットは?
0323デフォルトの名無しさん2007/05/06(日) 01:41:18
弱酸性です。
0324デフォルトの名無しさん2007/05/06(日) 02:00:32
>メリット

ネタになるだろ?

だれかやって味噌〜
0325デフォルトの名無しさん2007/05/06(日) 02:25:38
C#の方が簡単だよ
0326デフォルトの名無しさん2007/05/06(日) 02:48:26
>>324
ネタと言うか宣伝だわな
0327デフォルトの名無しさん2007/05/06(日) 06:59:32
そんなあふれたもん作ってもしょうがないぽ
0328デフォルトの名無しさん2007/05/06(日) 09:40:40
あふれた?
0329デフォルトの名無しさん2007/05/06(日) 15:18:54
wxPythonなら Monarchってブラウザがあったらしい
ttp://monarch.sourceforge.jp/
0330デフォルトの名無しさん2007/05/06(日) 18:26:03
輝けジャンケル(Woo! Ohowo!!)空高く(Owo!!)
技と力と心が通う ザビタン(hehe!!)
         イビル(hehe!!)ガブラ(Woo!Ohooho!!)
うなれジャンケル! アクサイザー3!!
0331デフォルトの名無しさん2007/05/06(日) 19:42:18
なんやねん
0332デフォルトの名無しさん2007/05/06(日) 20:14:11
これの代わりになるものをみんなで作ろう!!
0333デフォルトの名無しさん2007/05/06(日) 20:16:53
おちつけ!!!!
0334デフォルトの名無しさん2007/05/06(日) 20:25:59
行く道ひとつ Ohowo!! ただひとつ
これが われらの 生きる道

アクサイザー!(Zanzan zazan!) アクサイザー!(Zanzan zazan!)
アクサイザー3!!
0335デフォルトの名無しさん2007/05/06(日) 21:27:25
これって、あまり人気がないのか?
0336デフォルトの名無しさん2007/05/10(木) 03:49:37
wxSocketBase::Callbackが2.8で完全に削除されてるけど
コマンドアプリでイベント処理する場合にはどうすれば?
自作クラスにイベントハンドラを作る方法ってあるの?

ちなみにプログラムの特性上スレッドは却下、同期処理も却下
0337デフォルトの名無しさん2007/05/10(木) 04:31:27
EVT_SOCKET(id, func)
0338デフォルトの名無しさん2007/05/10(木) 05:09:20
自己解決した

ふふり
0339デフォルトの名無しさん2007/05/11(金) 20:01:03
みんなもっと使おうぜ!!
便利なんだから(?)
0340デフォルトの名無しさん2007/05/11(金) 22:58:07
wxDateTimeについて

システムの時刻とアプリケーションの時刻を独立して管理したいんだけど
wxDateSpanとwxTimeSpanをwxDateTime::Nowに加算すればいいわけですね
問題はアプリケーションで管理すべき時刻とシステム時刻の差の計算はどうすればいいの?
wxDateSpanとwxTimeSpanを2個のwxDateTimeの差から計算するには?
0341デフォルトの名無しさん2007/05/11(金) 23:24:29
あ、自己解決w
0342デフォルトの名無しさん2007/05/12(土) 16:44:23
これ、人気ないですか?
0343デフォルトの名無しさん2007/05/12(土) 20:18:49
どうしてそう思うの?
0344デフォルトの名無しさん2007/05/12(土) 21:01:48
まだ何も思ってないのでは
0345デフォルトの名無しさん2007/05/12(土) 21:53:13
中身が人気無いというより

コンパイルに数時間かかるし
ドキュメントはほとんど英語しかないし
容量が1G以上いくし
内部構造まで解析できないとバグと仕様の区別が付けられないから不安定だし

まあようするに厨房には無理w
0346デフォルトの名無しさん2007/05/12(土) 22:33:32
メリットは何ですか?
0347デフォルトの名無しさん2007/05/12(土) 22:47:36
環境に左右されない。
でも、コンパイルは各環境で行わないといけない。

MFCの代わり?
(似てるし)
0348デフォルトの名無しさん2007/05/12(土) 23:51:09
>容量が1G以上いくし

まじっすか・・・
0349デフォルトの名無しさん2007/05/13(日) 01:23:23
メリットは

MFCライクだけどMFCをさらに洗練したような感じになってること
完全クロスプラットフォームだからネットワーククライアント関係を作るなら便利
完全に無料だからライセンスを一切気にする必要がない
多国語サポートとかとにかく機能はすさまじく充実してるけどクラス設計が洗練されてて覚えやすい
0350デフォルトの名無しさん2007/05/13(日) 01:30:20
クラス設計が洗練されているというのは
クラスの命名規約やパラメータのパターンやイベント処理方法がすべて統一されているから
ダイアログの表示の仕方を覚えると、フレーム作ったりMDI作ったりする方法がなんとなく想像できる
ちょっとそれらしい名前のクラスリファレンスを見るだけでダイアログを表示する方法と同じ方法で
いろんなものが表示できる
0351デフォルトの名無しさん2007/05/13(日) 17:04:37
デメリット

英語が出来ないと辛い
0352デフォルトの名無しさん2007/05/13(日) 19:36:07
C++のコード読めないとつらい。

当方、wxPython使い。
0353デフォルトの名無しさん2007/05/13(日) 20:49:24
GUI以外のシステム依存機能が大量に入ってて便利な反面
使わない機能も勝手に付いてきて重い
0354デフォルトの名無しさん2007/05/14(月) 00:01:36
重くは無い
でかいけどw
0355デフォルトの名無しさん2007/05/14(月) 01:55:39
wxJoystickを使ってゲームパッドで操作するアプリを作成中なのですが、
ボタンの押下はポーリングでスキャンする方法しかないのでしょうか??
ボタンを長押ししたりすると、連打してるようになるし、
ボタンをちょっとだけ押しても反応しない時があるので困ってます。。

ボタンが押された時にだけイベントを発生させることはできないのでしょうか?
0356デフォルトの名無しさん2007/05/14(月) 02:41:26
wxJoystick::SetCapture
0357デフォルトの名無しさん2007/05/14(月) 10:06:15
すごく・・・おおきいです
0358デフォルトの名無しさん2007/05/14(月) 13:49:10
大きい・・・のか
0359デフォルトの名無しさん2007/05/14(月) 21:10:12
英語が出来ないので、断念 ⇒ Turbo C++ 使い方が良くわからないので断念 ⇒ WinAPIでガリガリ書く
みんなが辿る道
0360デフォルトの名無しさん2007/05/14(月) 21:22:29
英語つっても文学作品じゃないんだから嵩が知れてるでしょ。
やっぱりデカイのが痛い。
0361デフォルトの名無しさん2007/05/14(月) 21:33:18
>>360
デカイと痛いのか。。。

力を抜けよ。
0362デフォルトの名無しさん2007/05/14(月) 21:43:01
Turbo C++ で十分
0363デフォルトの名無しさん2007/05/14(月) 21:45:43
アッー!
0364デフォルトの名無しさん2007/05/14(月) 21:45:59
>>361
いやまて、チ○コじゃなくて、オパーイかも知れんぞ。
0365デフォルトの名無しさん2007/05/14(月) 22:22:07
>>364
そっちだって、でかいとジャンプするだけで痛いよ?
0366デフォルトの名無しさん2007/05/14(月) 23:01:20
>>359
それはつまり,C++を理解できてない人が打ちのめされたあげく,
Cだけで書こうと思い立つもCすらよく理解できていないからハンドラの扱いが
よくわからなくてWinAPIのサンプルをコピペしてダイアログ作って
テキストボックスに身長を入力したら標準体重を表示するだけの
プログラムの計算ルーチンだけを書いていたら頭の中でガリガリなった
ような気がする状態のことですね。あるある。
0367デフォルトの名無しさん2007/05/15(火) 01:46:53
wxScintillaの内部で利用しているScintillaをさ1.62から
1.71以上にしたいんだけど、どうすればいいの?
0368デフォルトの名無しさん2007/05/15(火) 03:07:02
DLLにすればでかくないw
しかしDLLを作るには英語力が必要w
■ このスレッドは過去ログ倉庫に格納されています