06/09/09 00:06:30
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。
本家
URLリンク(www.wxwidgets.org)
wxWindows日本語プロジェクト
URLリンク(wxwindowsjp.sourceforge.jp)
Let's wxWidgets
URLリンク(dot-gray.s33.xrea.com)
(*)準備中(*)
URLリンク(www.geocities.co.jp)
wxWindowsで始めるC++ GUIプログラミング
URLリンク(www.h3.dion.ne.jp)
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
URLリンク(namazu.org)
dW : Linux : wxWindowsの概要
URLリンク(www-6.ibm.com)
SunWorld Online:wxWindows―無名だが成熟したGUIツールキット
URLリンク(www.idg.co.jp)
2:デフォルトの名無しさん
06/09/09 00:07:04
過去スレ
スレリンク(tech板)
スレリンク(tech板)
主な言語バインディング
wxPython
URLリンク(www.wxpython.org)
wxPerl
URLリンク(wxperl.sourceforge.net)
wxRuby
URLリンク(wxruby.rubyforge.org)
wx4j
URLリンク(www.wx4j.org)
wx.NET
URLリンク(wxnet.sourceforge.net)
wxLua
URLリンク(www.luascript.thersgb.net)
wxHaskell
URLリンク(wxhaskell.sourceforge.net)
3:デフォルトの名無しさん
06/09/09 00:17:35
車輪の再発明をしても仕方がありませんし、公開に値するしろものでもありませんので
将来的にもソースは出せないと思います。
ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。
4:デフォルトの名無しさん
06/09/09 00:18:35
ところで
URLリンク(www.codeproject.com)
このページはいろいろ参考になると思うんですが、テンプレに入れませんか?
5:デフォルトの名無しさん
06/09/09 00:21:50
書籍のPDF
URLリンク(www.phptr.com)
URLリンク(www.phptr.com)
6:デフォルトの名無しさん
06/09/09 00:35:47
>>1乙
一応JavaScriptバインディングもあるよ。
wxJS
URLリンク(users.skynet.be)
7:デフォルトの名無しさん
06/09/09 08:36:39
>>1 乙
>>4は移動になっているらしい。
URLリンク(www.codeproject.com)
8:デフォルトの名無しさん
06/10/03 21:40:46
wxCodeも入れない?
wxTreeListCtrlはWin32 Common Controlにも欲しいと思う。
URLリンク(wxcode.sourceforge.net)
9:デフォルトの名無しさん
06/10/03 22:19:18
前スレの>>978, 985
wxSocket使おうとしているので、一応確認したが、
受信スレッドを内部で別に立てているなら、
wxUSE_THREADSを1と定義してビルドする必要があるのだろう。
wxMSWだけでの検証ですまんが、コードを追ってみると、
メインスレッドのみ、wxYieldを呼び出している。
wxYieldは内部でwxTheApp->Yield()を呼んでいるだけで
ここがマルチスレッドセーフではない模様。
他のスレッドはwxThread::Yield()を呼んでいる。
wxThread::Yield()の内部はSleep(0)なので、問題なし。
wxUSE_THREADSが無い時点でスレッドを立てるような
物は使ってはいけないのでイベントハンドラを定義せずに
ブロッキングで組む必要があるということじゃないのかな?
ところで、スレッド無しはわざわざヘッダを書き直さないと
そのようにはならないと思うのだが、実行してデバッグしたわけではないので
間違っていたらすまん。
そのうち自分でもテストはしないとだめなんだろうがねぇ。
10:デフォルトの名無しさん
06/10/03 23:05:04
>>9
wxUSE_THREADSは1(初期値)のまんまですね
wxWidgets自体のバグの線が高そう
環境はmswです
11:デフォルトの名無しさん
06/10/03 23:48:15
メインスレッドは::wxSafeYield()使え、と言ってみる
12:デフォルトの名無しさん
06/10/04 02:09:24
言ってみるって言われても、wxSocketServer::Read内部にYield()が明記されているわけでw
勝手に書き換えるのは気持ち悪いでしょう
13:9
06/10/04 02:15:41
>>11
ソースを追ってみたが、wxSafeYieldは指定したウィンドウ以下を除いて
Disable状態にした後、wxYieldを呼んでいるだけだ。
2.6.3なんだが、wxYieldからwxTheApp->Yield()内では
MT-FIXMEなどとかいた、幼稚なバグが残っているから無理。
それと、Log関数もMT Safeでないのでむりなうえ、
wxMutexGuiLeaveOrEnterはMainThread以外からの呼び出しではAssertがおきるぞ。
>>10
とりあえず、Readの先のYield呼び出しのかしょをデバッガで追って、
wxThread::Yieldにちゃんといっているかどうか確認するほうが早いよ。
Yieldを呼んでいるのは大体、wxSocket*::Wait*で、GSocketの内部でも呼んでいるのかもしれない。
GSocket::ReadもStream(TCP)なら::recvを呼んでいるだけなので、問題はなさそうだが。
GSocket::Writeもにたようなものだった。
あときになるのは、イベントも全てメインスレッドから呼ばれるから、
OnSocketEventでReadするのはMainThreadじゃない?
それだと、Multi Threadになってても、
イベント処理に行くからスタックオーバーフローしてしまいそうだが。
イベントで拾ってくるならイベントが着たら受信用スレッドにconditionなりで
知らせて、Recvさせるようにするのはどう?
14:デフォルトの名無しさん
06/10/04 02:56:03
それなら最初からスレッドでReadしっぱなしのほうがいいなw
15:デフォルトの名無しさん
06/10/05 14:10:04
OpenGL用の再描画関数でRefresh()以外の奴って何かないの?
教えてエロい人
16:デフォルトの名無しさん
06/10/05 14:29:53
サ イ サ ゙ ー っ て イ可 ?
17:デフォルトの名無しさん
06/10/06 17:27:55
性帝
18:デフォルトの名無しさん
06/10/06 23:36:44
キラーアプリはaudacity?
19:デフォルトの名無しさん
06/10/07 00:21:00
>>15
OpenGL描画して最後にwxGLCanvas::SwapBuffer()呼ぶ関数作って
それ呼べばRefresh()呼ばんでもいいんじゃない?
20:デフォルトの名無しさん
06/10/07 19:30:39
英語なのが悔やまれる。
だれかサンプルだけでも、日本語に訳してくれ。
21:デフォルトの名無しさん
06/10/07 23:19:02
あんまり使ってる人いないのかな?
22:デフォルトの名無しさん
06/10/07 23:25:36
Linux使ってる奴なんて相手にしない が正解。
23:デフォルトの名無しさん
06/10/07 23:39:23
リファレンスなら日本語訳されてるぞ
英語っていってもほとんど基礎英語レベルのことしかない
これがわからない人はそもそも言語の構造がわかってないんだろう
MFCでも先に勉強したほうが早いよ
24:デフォルトの名無しさん
06/10/08 23:42:49
DialogBlocksで
wxDialogにwxButton貼り付けたんだけど
Dialogのサイズ変更するとボタンが
最大化しちゃうんだが、何が原因なのかな?
25:24
06/10/08 23:47:54
適当にToolbar挿入してみたら直った。
Toolbar必須なのか...
26:デフォルトの名無しさん
06/10/09 00:35:06
貼付けてるのが一個だけだったら最大化してた
もうひとつ何か貼れば最大化しなかったよ
27:デフォルトの名無しさん
06/10/09 01:31:08
>>20
結構細々としているからねwxWidgetsは。
俺はサンプルに日本語コメントを付けまくってしょっちゅう見返してるよ。
28:デフォルトの名無しさん
06/10/09 01:46:20
sizer
29:デフォルトの名無しさん
06/10/09 01:59:55
俺は英語だけど、どっかのサイトで公開しているPDFを読んでます。
それなりにいいと思うぞ。
ただだし。
30:デフォルトの名無しさん
06/10/09 02:46:03
英語より、日本語を読みたい。
英語は疲れるよ。
31:デフォルトの名無しさん
06/10/09 16:28:27
挙げ
32:デフォルトの名無しさん
06/10/13 17:19:02
ウィンドウをクローズすると、登録したイベントハンドラが全部呼ばれるって、
何この糞仕様。
33:デフォルトの名無しさん
06/10/14 00:11:57
2.7.1 リリース
34:デフォルトの名無しさん
06/10/14 00:27:08
7なんか怖くて使う気にならない
35:デフォルトの名無しさん
06/10/14 00:38:34
日本語マニュアルまだ~?
36:9
06/10/14 01:13:36
コーディングした結果としては、ソケットのイベントもその他のイベントも全てメインスレッドのみで動いてるな。
wx関連のほとんどの機能はメインスレッド以外でやってはいけない感じなのかもしれない。
37:デフォルトの名無しさん
06/10/14 03:39:53
>>36
ん~。そうでもないよ。
受信用スレッド作ってそこでソケットごにょごにょやってたことあるし。
ってそういう話では無い?
自分で何か修正したような記憶があったりなかったり。。。
2.6が出た頃の話だったと思うので、あまり真に受けんといてください。
38:9
06/10/14 20:18:52
>>37
俺も送信用スレッドは使ってるけどね、wxのINPUTイベントやCLOSEイベントなんか
はメインスレッドでイベントでもらってRead/Destroyなどをするようにしてる。
Read/Writeを交互に行うようなプロトコルにしているため、
Writeをしながら、Readを呼び出しても問題が無いかどうかは検証していない。
また、排他制御をSingle Thread Execution Patternで避けれるから、一概に悪いとは言えないけどね。
送信・受信と別々につなげてそれぞれブロッキングで別スレッドを立てるほうがいいのかもしれないけど
Nagleがらみで送受信を分けるとラグが発生しそうだしなぁ。
39:デフォルトの名無しさん
06/10/15 14:33:00
buttonをつけるにはどうしたらいいんですか?
40:デフォルトの名無しさん
06/10/15 18:34:02
これって、exeサイズがなんか異常に大きくなるんだけど、こういうもん?
2.6.3のサンプルのminimalをbccでコンパイルしたら、exeサイズ約1.9MB、何だけど...
でかすぎー
41:デフォルトの名無しさん
06/10/15 18:42:04
MFCだってmfcのランタイムまでいれたら相当でかいな
42:デフォルトの名無しさん
06/10/15 19:44:40
stripしてexepacker通したらそこそこ小さくなるでよ
まぁでかいのはでかいが
43:40
06/10/15 22:09:44
>>42
そうですか、でかいですか。どうもです。
44:デフォルトの名無しさん
06/10/21 15:05:41
wxChar *をchar *に変換する方法ってありますでしょうか。
char *しか受け付けない関数があるんです。
45:デフォルトの名無しさん
06/10/21 20:48:25
wx{MB,WX,WC}2{MB,WX,WC} (関数)
エンコーディングを特定したければwxMBConv系を直接使う
46:デフォルトの名無しさん
06/10/21 22:33:57
wxWC2MBを試してみていますが、うまくいきません。
三番目のsize_t nにはwchar_tの文字列のサイズを渡せば良いのでしょうか。
47:デフォルトの名無しさん
06/10/25 14:15:34
警告: dereferencing type-punned pointer will break strict-aliasing rules
って警告が大量に出るんですが、これどうにかならないでしょうか?
48:デフォルトの名無しさん
06/10/26 00:17:38
, イ)ィ -─ ─- 、ミヽ
ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 ~ 没年不明 )
49:デフォルトの名無しさん
06/10/26 00:48:49
……ググレカスって現代人だったのか
50:デフォルトの名無しさん
06/11/04 02:25:22
どちらかというと古代ギリシャ人
51:デフォルトの名無しさん
06/11/05 19:06:10
実際に使ってる人はどれだけいるんだろうね?
52:デフォルトの名無しさん
06/11/05 20:24:22
wxDev-C++って、メニューとかツールバーはまともにでなくない?
ボタンとか、絶対位置指定できる点はいいとは思うけど。
DialogBlocksはちょっと複雑なの書くとエラーがでるんだが・・・
53:デフォルトの名無しさん
06/11/09 01:32:48
wxWidgetsをつかってタスクマネージャみたいのを作ろうと思うのですが
つまづいてます
メインの処理とかはどうでいいのですが、常駐アプリとして使うことを考慮して
1. 常に手前に表示
2. 透明度を変えられる
3. キーボードとかマウスとかのイベントを下のウィンドウにスルー
を実現したいのですが3番目を実現する方法がわかりません
54:デフォルトの名無しさん
06/11/09 02:36:59
evt.veto
55:53
06/11/09 18:20:15
>>54
私のグーグル力が確かならVetoはwxNotifyEventではじめて定義されてるので
wxNotifyEventを継承していないwxMouseEventに対しては呼べないと思うのですが・・・
wxNotifyEvent
URLリンク(www.wxwidgets.org)
56:デフォルトの名無しさん
06/11/09 20:38:26
2.7.2出たね
11月13日に2.8.0リリース予定だそうだ
57:53
06/11/09 23:02:03
マウスクリックイベントをスルーする方法
URLリンク(forums.belution.com)
Win32APIネイティブでここまでゴリゴリやってできないとなると
それをクロスプラットフォームGUIライブラリに求めるのは酷だと思うのであきらめます
ありがとうございました
58:デフォルトの名無しさん
06/11/12 18:29:20
これって、3.0になるとSTLとか使ってモダンなAPIになるんでしょうか?
なんか、そんな話が出てたような気がするんで。
そのソースってまだ公開されてないですよね?
59:デフォルトの名無しさん
06/11/12 22:16:52
さて、ややこしい話が出たところで、また俺がRADネタを振ろうかね。
おまいら、何でGUI君でんの?
60:デフォルトの名無しさん
06/11/12 22:21:34
CUIじゃ時代遅れだから。
61:デフォルトの名無しさん
06/11/12 22:25:37
そういう意味じゃないと思うよww
62:デフォルトの名無しさん
06/11/12 22:35:24
俺は Mac と Solaris かな。
63:デフォルトの名無しさん
06/11/14 12:45:50
wxPythonのGridの質問です。
EVT_GRID_CELL_CHANGEの時に新しく行を追加すると
無限ループになってしまいます。
エラーを見ると、新しい行でEVT_GRID_CELL_CHANGEが起きてるのでなくて
最初にEVT_GRID_CELL_CHANGEを起こした行で再帰になってるようなのですが
これを回避する方法はありますか?
やりたいことは MS Accessのテーブルみたいに、
空白行に何か書込んだら、新しい空白行を追加したいのです。
class MyGrid(wx.grid.Grid):
def __init__(self, parent):
wx.grid.Grid.__init__(self, parent, -1, size=(200, 100) )
self.CreateGrid(1,1)
self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnCellChange)
def OnCellChange(self, event):
Row = event.GetRow()
print "%d: EVT_GRID_CELL_CHANGE" % Row
self.InsertRows(Row + 1, 1, 1)
結果:
0: EVT_GRID_CELL_CHANGE
(・・数十行繰り返し・・)
0: EVT_GRID_CELL_CHANGE
Traceback (most recent call last):
File ****, line 15, in OnCellChange
Row = event.GetRow()
RuntimeError: maximum recursion depth exceeded
64:507
06/11/14 14:19:45
>>59
うぃんどうず
率直なところ使い勝手はあまり良くない
65:デフォルトの名無しさん
06/11/14 16:26:12
これって半透明なウィンドウつくれるの?
66:デフォルトの名無しさん
06/11/15 23:21:20
多分半透明は無理
67:デフォルトの名無しさん
06/11/15 23:28:33
>>63
OnCellChangeで再帰呼び出しチェック用のフラグ立てて、
再帰だったら何もしないでreturnすりゃいいんじゃない?
68:デフォルトの名無しさん
06/11/16 01:22:30
これ、使い方がMFCにそっくりだね。
ちょっとウザイ
サイズがでかいのはどうにかならないかな?
メモ帳を作ったら、3Mあったよ。
ありえねー
69:デフォルトの名無しさん
06/11/16 10:40:39
>>68
ダイナミックリンクにすればいい。
70:デフォルトの名無しさん
06/11/16 12:26:43
>>67
フラグのタイミングをいろいろ試して、
・・・
self.FlagRec = 0
def OnCellChange(self, event):
Row = event.GetRow()
self.FlagRec += 1
print "%d: %d: EVT_GRID_CELL_CHANGE" % (self.FlagRec, Row)
if self.FlagRec == 1:
self.InsertRows(Row + 1, 1, 1)
self.FlagRec = 0
としたらうまくいきました。
あと、InsertRows じゃなくて AppendRows を使えば再帰が起らず思い通りになりました
71:毛の生えたブリーフ
06/11/20 20:42:19
URLリンク(wxbasic.sourceforge.net)
私はwxBasicを使っています。結構高速に動くし、楽チンです。
frame = New wxFrame(NULL, -1 "テスト")
frame.Show(True)
このたった二行で、窓が開きます。
暇ができたら自分のサイトに解説を書こうと思っています。
72:デフォルトの名無しさん
06/11/20 20:58:18
? USING
73:デフォルトの名無しさん
06/11/20 21:05:55
import Graphics.UI.WX
main = start $ frame [text := "test", visible := True]
wxHaskellでも二行、と意地を張ってみるテスト
74:デフォルトの名無しさん
06/11/20 21:18:48
Haskell 奇麗だなあ
75:デフォルトの名無しさん
06/11/20 21:44:54
どこがきれいなんだよ。わけわかんねーよ
76:毛の生えたブリーフ
06/11/20 22:37:32
'--------GUIの作成と表示
frame = New wxFrame(NULL, -1, "テスト")
button = New wxButton(frame, -1, "押してね")
frame.Show(True)
'-------イベントハンドラの作成
Function click(event)
wxMessageBox( "ボタンを押したね", "ボタンイベント", wxOK + wxICON_INFORMATION, frame )
End
End Function
'---------イベントとイベントハンドラの関連づけ
Connect(button, wxEVT_COMMAND_BUTTON_CLICKED, "click")
たったこれだけです。ですが、、、、wxWidgetsのドキュメントを
読みこなすのは正直きついですね。wxBasicのウィジェッツはバージョンが
古いので、本家から古めのドキュメントを取ってきて読んでいます。
77:毛の生えたブリーフ
06/11/21 21:09:59
スレタイの「サイザー」とは何か?
これは本当に奥が深いものです。
76のコードではウィンドウいっぱいにボタンが表示されます。
wxButton(frame, -1, "押してね", wxPoint(40,50), wxSize(50,80))
などにしても駄目です。どうしてか・・・・・三日悩んで見つかったもの
それが「サイザー」
78:デフォルトの名無しさん
06/11/21 22:18:10
サ イ サ ゙ ー っ て イ可 ?
79:デフォルトの名無しさん
06/11/21 22:51:55
シンセ?
80:デフォルトの名無しさん
06/11/21 23:02:53
サイズ、サイザー、・・・
81:デフォルトの名無しさん
06/11/23 01:54:34
サイゼリヤ
82:デフォルトの名無しさん
06/11/23 04:57:53
退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマと対極に位置する存在
眠い・・・・('A`)
83:デフォルトの名無しさん
06/11/23 08:26:57
>>82
[退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマ]と対極に位置する存在
退かぬ、媚びぬ、省みぬの三拍子を持った[プルグラマと対極に位置する]存在
('A`) ドッチ?
84:毛の生えたブリーフ
06/11/23 09:11:52
南斗聖拳のみたいなツールキットですね。
ところで
問1、 神魔血破弾を必殺技とする鬼哭霊気の物語のタイトルは
問2、 「アステカの星」を額に持つ、プロレスの星の男の名は
問3、 「三ツ矢」と言えば
問4、 ベガ星連合軍から滅ぼされたグレン星の守護ロボットの名は
85:デフォルトの名無しさん
06/11/27 10:15:55
>>83
超遅くなりましたが後者デス
il||li
∧∧
/⌒ヽ)
..,,....~(,_,,,).....,,,,....もうだめぽ
86:デフォルトの名無しさん
06/12/15 23:04:27
2.8.0リリース
URLリンク(jaist.dl.sourceforge.net)
87:デフォルトの名無しさん
06/12/16 09:32:16
バージョンアップのペースが速いような…
88:デフォルトの名無しさん
06/12/19 18:22:17
サイザー専用JAVA演習場
スレリンク(tech板)
89:デフォルトの名無しさん
06/12/19 18:42:02
サイザーナックル
90:デフォルトの名無しさん
06/12/31 16:43:52
バグらしき物を発見したんですがどこかに報告した方がいいんでしょうか?
バージョンはwxMSW-2.8.0です。
// src/common/dynarray.cpp 379行目から
void name::insert(iterator it, const_iterator first, const_iterator last) \
{ \
size_t nInsert = last - first, nIndex = it - begin(); \
if (nInsert == 0) \
return; \
Grow(nInsert); \
\
memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex], \
(m_nCount - nIndex)*sizeof(T)); \
for (size_t i = 0; i < nInsert; ++i, ++it, ++first) \
*it = *first; \
m_nCount += nInsert; \
}
Growによって配列が再確保されるとitがdeleteされた領域を指してしまいます。
Growの後に it = begin() + nIndex; を挿入すれば大丈夫っぽいです。
91:デフォルトの名無しさん
06/12/31 22:20:34
>>90
sourceforgeでバグレポできる。
92:デフォルトの名無しさん
07/02/14 07:29:33
シンセサイザーのサイザー?
93:デフォルトの名無しさん
07/02/14 18:03:27
Delphiみたくポトペタ開発できますか?
94:デフォルトの名無しさん
07/02/14 19:40:56
VisualWxってどうですか?
95:デフォルトの名無しさん
07/02/15 05:30:10
Sizer
96:デフォルトの名無しさん
07/02/15 08:56:49
VisualWx使ったアプリというかサンプルアプリがネットに転がってないですか?
97:デフォルトの名無しさん
07/02/15 19:44:08
cygwin+gcc3.4.4+wxMSW-2.8.0+wxGladeでhelloworld作ったんだけど
-mno-cygwin付けてコンパイルしようとするとエラーが起きる。どうしよう
g++ -c -mno-cygwin -Os -O4 -Wall `wx-config --cppflags` -I/usr/local/mingw/include hello.cpp
/usr/local/include/wx-2.8/wx/utils.h:21 から include されたファイル中,
/usr/local/include/wx-2.8/wx/cursor.h:41 から,
/usr/local/include/wx-2.8/wx/event.h:22 から,
:
:
/usr/local/lib/wx/include/msw-ansi-debug-static-2.8/wx/setup.h:808:1: 警告: this is the location of the previous definition
g++ -o hello.exe hello.o -mno-cygwin -mwindows `wx-config --libs` -L/usr/local/mingw/lib
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_textctrl.o):textctrl.cpp:(.rdata$_ZTV10wxTextCtrl[vtable for wxTextCtrl]+0x3b0):
undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<_mbstate_t>, std::_Ios_Openmode)'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_textcmn.o):textcmn.cpp:(.rdata$_ZTV14wxTextCtrlBase[vtable for wxTextCtrlBase]+0x3b0):
undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<_mbstate_t>, std::_Ios_Openmode)'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_gsockmsw.o):../src/msw/gsockmsw.cpp:421: undefined reference to `___assert'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_gsockmsw.o):../src/msw/gsockmsw.cpp:454: undefined reference to `___assert'
:
:
/usr/local/lib/libwx_based-2.8.a(baselib_datetime.o):../src/common/datetime.cpp:2283: undefined reference to `_gmtime_r'
collect2: ld はステータス 1 で終了しました
make: *** [hello.exe] エラー 1
98:デフォルトの名無しさん
07/02/15 19:48:21
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
URLリンク(namazu.org)
ここ参考にしました
99:デフォルトの名無しさん
07/02/15 21:43:53
>>97
gmtime_rが見て意義。
100:デフォルトの名無しさん
07/02/16 03:32:09
wxGladeでなんとか簡単なGUIをつくりはじめたんだけど、参考に出来るコードがたくさん
載ってるページってない?
101:デフォルトの名無しさん
07/02/16 08:58:54
つ VisualWx
102:デフォルトの名無しさん
07/02/16 18:26:44
>>100
samplesというディレクトリに60万行ほど載ってるけど、まだ足りないの?
103:デフォルトの名無しさん
07/02/18 01:33:16
>>102
samplesにはプルダウンメニューのサンプルがないよね。コンボボックスはあるけど。
どのクラスを使えばいいんだろう?
104:デフォルトの名無しさん
07/02/18 14:13:59
>103
wxComboBoxのwindow styleにwxCB_DROPDOWNとか
wxCB_READONLYを指定すればいいんじゃない?
105:デフォルトの名無しさん
07/02/18 15:50:22
wxChoiceのことか?
106:デフォルトの名無しさん
07/02/18 18:21:10
>>105
wxChoiceとwxComboBoxってどう違うん?
107:デフォルトの名無しさん
07/02/18 18:30:04
wxChoiceは、あらかじめ用意されたリストから選ぶだけ。いわゆるプルダウンメニュ-。
wxComboBoxは、プルダウンメニュー+「メニューにない物も入力出来るテキストボックス」
108:デフォルトの名無しさん
07/02/23 11:07:22
OSがT-Engineとかでウィンドウシステムが無いものにポーティングすることは可能ですか?
109:デフォルトの名無しさん
07/02/24 08:44:46
VisualWx使ってみたが、MicrosoftとかBorlandのRADとは
比べ物にならないな。
糞。
110:デフォルトの名無しさん
07/02/24 16:36:05
エディタ手打ちで済むものをいちいちポトペタしなくてもいいじゃないか。
111:デフォルトの名無しさん
07/02/25 01:24:44
いや、やっぱエディタ打ちはやってて面倒だよ・・・。
112:デフォルトの名無しさん
07/02/25 01:27:39
アセンブラがあれば(ry
113:デフォルトの名無しさん
07/02/25 03:00:56
ハンドアセンブルしてバイナリを直接入力すれば(ry
114:デフォルトの名無しさん
07/02/26 04:44:02
テキストコントロールの各行に対する行数(行番号)を表示させたいんだけど、
(行番号があらかじめ書いてある原稿用紙に書き込む感じにしたい)
なんかいい方法ない?
115:デフォルトの名無しさん
07/02/26 08:12:02
>>114
行番号表示用のウィンドウを作るのが多分一番楽
116:114
07/02/27 01:48:30
>>115
はい。それも考えたんですが、本文の行数が多い場合に縦にスクロールさせると、
行番号表示用の行数とずれてしまうという問題があり、詰まっています。
なにかいい手はないでしょうか?
117:デフォルトの名無しさん
07/02/27 10:53:40
>>116
テキストコントロールの内容を変更するたびに、
行頭に行番号を追加するようにすればいいんじゃね?
118:デフォルトの名無しさん
07/02/27 17:01:25
114, 116はかなりの初心者かな?
119:114
07/02/27 23:27:54
>>118
いままで簡単なスクリプトを書いて仕事(研究員)に使う程度だったのですが、
GUIつきのプログラムを作れば使いやすくなるし、同僚に自慢できるし、
上司によりアピールできるし。。。と思って始めたばかりです。
私のような初心者でも簡単なGUIが作れるという点ではwxwidgetsは素晴らしいと思います。
ただ、少し凝ろうとすると急にハードルが高く感じられます。今回の行番号表示など。
テキストエディタの表示オプションによくあったので、簡単に出来るのではと思ったのですが。
120:デフォルトの名無しさん
07/02/28 00:59:27
> 少し凝ろうとすると急にハードルが高く感じられます。
GUIフレームワークって何でもそうです。あらゆるものを御仕着せで用意するのは無理。
用意された機能を利用して実現できればそれでいいわけで、
これくらいはまだすんなり実現できる範疇に入るでしょうよ。
>>116は要はテキストコントロールをスクロールさせたら行番号表示が一緒に
動かないからずれるってことでしょ? それなら行番号表示の方も一緒に動かせればいい。
ということで次のステップはイベント処理ですね。
テキストコントロールのスクロールが発生したときを捕捉して、そのスクロール
量を知り、行番号表示の方に指定量のスクロールをさせる。
121:デフォルトの名無しさん
07/02/28 01:09:23
じゃあちょっと難しく感じるかもな。
基本的には、番号用のウインドウを作る→さもメインのパネルの一部かのように組み込む→
(位置を計算して)番号出す→スクロールイベントを取得→表示のアップデート(スクロール)
って流れかねえ。
>テキストエディタの表示オプションによくあったので
なんかこう、GUIをべたーっとした一枚の絵のように考えていたら
簡単にはできないよw
あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
122:114
07/02/28 03:32:32
>>120,121
アドバイスありがとうございます。イベント処理はいままで扱ったことが
ないので、調べてみます。
>あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
失礼しました。
Windows XP, ActivePerl-5.8 でwxPerlを使っています。
wxPerlは比較的マイナーなようですね。
123:デフォルトの名無しさん
07/02/28 06:37:40
C++ならwxScintillaがつかえるが、他の言語ではラッパーか書かないとだめかも?
124:デフォルトの名無しさん
07/02/28 13:10:52
117だけど、wxpythonで作ってみた
import wx
import re
class MyApp(wx.PySimpleApp):
def OnInit(self):
Frame = wx.Frame(None, -1, "Text Edit", size=(400,400))
self.Btn = wx.Button(Frame, -1, "Set Number")
self.Btn.Bind(wx.EVT_BUTTON, self.SetNum)
self.TxtBox = wx.TextCtrl(Frame, -1, "One\nTwo\n", style=wx.TE_MULTILINE)
self.SetNum(wx.Event)
MySizer = wx.BoxSizer(wx.VERTICAL)
MySizer.Add(self.Btn, 0, wx.FIXED_MINSIZE | wx.LEFT | wx.RIGHT | wx.TOP, 20)
MySizer.Add(self.TxtBox, 1, wx.EXPAND | wx.ALL, 20)
Frame.SetSizer(MySizer)
Frame.Show(1)
return 1
(つづく)
125:デフォルトの名無しさん
07/02/28 13:13:13
def SetNum(self, event):
Text = self.TxtBox.GetValue()
OldLines = Text.split('\n')
NewLines = []
Count = 1
for OldLine in OldLines:
NewLine = re.sub('^([ \d]+: )?', '%4d: ' % Count, OldLine)
NewLines.append(NewLine)
Count += 1
self.TxtBox.SetValue('\n'.join(NewLines))
app = MyApp()
app.MainLoop()
30分くらいで単純に作ったので、細かいツッコミは無しでお願いします。
126:デフォルトの名無しさん
07/02/28 23:55:44
微妙だなw
つか、そのままコピペしたらエラー出たわw
おいバグかよ、って思ったら、インデントの関係だったわ。
(SetNumはMyAppクラス内なのね。)
これだからpythonはw
127:114
07/03/01 01:47:35
>>124
ありがとうございます。こういう参考に出来るコードがあればと思っていたところでした。
ぱっと見まだよく分からないんですが、参考にさせてもらいます。
128:デフォルトの名無しさん
07/03/01 13:20:33
>>126
すぐに気づけてよかったね。
これだから(ry
129:デフォルトの名無しさん
07/03/01 16:19:36
Winでテキスト表示が場合によって問答無用でCour何とかいう2k/XPでFontlinkしないと日本語化けるフォント使わないように直ったんですか?
130:デフォルトの名無しさん
07/03/01 16:36:26
>>129
日本語でおk
131:デフォルトの名無しさん
07/03/01 20:30:47
おれのエスパー能力で解析すると、
「Windowsでテキスト表示のフォントが変わったんですか?」
らしい。
132:デフォルトの名無しさん
07/03/02 00:17:04
変わるわけねーよ外人だもん。日本語が自分たちのフォントで表示できないことも知らないよ。
133:デフォルトの名無しさん
07/03/02 00:54:12
俺もエスパーなんだけどunicode使わないようにすれば解決する
134:デフォルトの名無しさん
07/03/02 03:27:05
エスパーだけど非Unicodeにするとたちまち駄目文字問題が出る。
予言だけど本気でコレの作者に中国人なり日本人なりが頼まないと未来永劫にわたって変更はない。
135:デフォルトの名無しさん
07/03/02 11:08:47
CourなんとかってCourierのことだな
文字化けしないフォントを使わなくなったのならいいんじゃないか
ちなみにエスパーだけど
136:デフォルトの名無しさん
07/03/02 13:12:04
じゃあ俺もエスパー。
137:デフォルトの名無しさん
07/03/02 23:17:02
きてます。きてます。
138:デフォルトの名無しさん
07/03/03 19:44:35
質問です。SpinCtrlとSliderをセットにしたコンポーネントを作りたくて、
次のようなクラスを作ったのですが、Sliderを動かしたらその値がSpinCtrlに反映させるようにイベントを作ろうとしても上手くできません
.hで
enum
{ SliderPage_Slider = 100, };
class SliderAndSpinCtrlSet: public wxBoxSizer
{
public:
SliderAndSpinCtrlSet(wxWindow *parent, const wxString& title, int sliderID, float val, float min, float max, int spinCtrlID) : wxBoxSizer(wxHORIZONTAL)
{
m_slider = new wxSlider(parent, sliderID,
val, min, max ,
wxDefaultPosition, wxDefaultSize, 0);
m_spinctrl = new wxSpinCtrl(parent, spinCtrlID, wxString::Format(_T("%d"), val),
wxDefaultPosition, wxDefaultSize,
0,
min, max, val);
Add(m_spinctrl, 0, wxALL | wxGROW, 5);
Add(m_slider, 0, wxALL | wxGROW, 5);
}
void OnSlider(wxScrollEvent& event) { hogehoge... }
として、.cppで
BEGIN_EVENT_TABLE(SliderAndSpinCtrlSet, wxBoxSizer)
EVT_COMMAND_SCROLL(SliderPage_Slider, SliderAndSpinCtrlSet::OnSlider)
END_EVENT_TABLE()
としたのですが、エラーになりました。wxBoxSizerにはsm_eventTableなどを持っていないのが原因という事は分かったのですが、代替案が見つからず困っています。
どなたか上手いやり方をご存じないでしょうか?
139:デフォルトの名無しさん
07/03/04 02:38:55
wxPanelとかから継承したら?
140:デフォルトの名無しさん
07/03/04 03:13:20
>>139
wxPanelだと、独立したウィンドウになってしまいませんか?
ウィンドウ内のコンポーネントとして配置できるような、SpinCtrlとSliderをセットにしたものを作りたいのですが・・・。
141:デフォルトの名無しさん
07/03/04 12:29:07
最近wxWidgets忘れてるのでとりあえず思い付いたことを適当に書く
- wxEventHandlerを継承してないとイベント扱えないのでは
- DECLARE_EVENT_TABLE必要
まあとにかくEvent Handling Overviewくらいは読めと。
142:デフォルトの名無しさん
07/03/04 13:08:40
>>141
wxEvtHanderを継承してみました。
.hで
enum
{ SliderPage_Slider = 100, };
class SliderAndSpinCtrlSet: public wxBoxSizer, wxEvtHandler
{
public:
SliderAndSpinCtrlSet(wxWindow *parent, const wxString& title, int sliderID, float val, float min, float max, int spinCtrlID) : wxBoxSizer(wxHORIZONTAL)
{
m_slider = new wxSlider(parent, sliderID,
val, min, max ,
wxDefaultPosition, wxDefaultSize, 0);
m_spinctrl = new wxSpinCtrl(parent, spinCtrlID, wxString::Format(_T("%d"), val),
wxDefaultPosition, wxDefaultSize,
0,
min, max, val);
Add(m_spinctrl, 0, wxALL | wxGROW, 5);
Add(m_slider, 0, wxALL | wxGROW, 5);
}
void OnSlider(wxScrollEvent& event) { hogehoge... }
DECLARE_EVENT_TABLE()
};
として、.cppで
BEGIN_EVENT_TABLE(SliderAndSpinCtrlSet, wxEvtHander
EVT_COMMAND_SCROLL(SliderPage_Slider, SliderAndSpinCtrlSet::OnSlider)
END_EVENT_TABLE()
としてみましたが、コンパイルは通るものの、スライダーを動かしても何の反応もありません。
どうすればいいんだ・・・。Event Handling Overview今読んでいますが、難しいですね・・・。
143:デフォルトの名無しさん
07/03/05 00:42:03
多分、コントロール自身かその親ウィンドウじゃないと、
コントロールからのイベントが到達しないんじゃない?
やっぱ、wxPanel継承して、そのハンドラで受けるのがいいと思う。
そのPanelをひとつのコンポーネントとしてとらえればいいわけだし、
他パネルに配置もできるでしょ?
どうしても嫌なら、wxEvtHandler継承で、
m_slider->Connect(
SliderPage_Slider,
wxEVT_COMMAND_SLIDER_UPDATED,
wxCommandEventHandler(SliderAndSpinCtrlSet::OnSlider),
NULL, this);
とすればできる気がする。動作確認してないけど。
144:デフォルトの名無しさん
07/03/05 10:28:39
>>143
wxPanel継承でできました!ありがとうございます。
というかwxPanelをコンポーネントとして配置できる事を知りませんでした。
まだ使い始めたばかりなもので・・・。
145:デフォルトの名無しさん
07/03/08 10:54:48
質問です。
ウィンドウを二つ表示しているんですが、
片方で何らかの操作をした結果の値を、もう一方のウィンドウ上に配置したスライダー
等のコンポーネントにリアルタイムに反映させたいのですが、何か方法はないでしょうか。
具体的に言うと、片方はwxGLCanvasを継承したクラスで、その画面上をドラッグすると
ある値が変わるのですが、ドラッグ中にもう一方のウィンドウ(wxPanel)上の
スライダー等の表示をその値を反映したものにリアルタイムに更新したいのです。
しかし、ドラッグ中にスライダー等にSetValueで値をセットしても、そのウィンドウに
フォーカスが移動するまでスライダー等の表示が更新されません。
仕方が無いのでドラッグ中にwxPanelのSetFocus()メソッドを呼んで無理やり更新させていますが、
なんか気持ち悪いです。
他に方法はないでしょうか。
146:デフォルトの名無しさん
07/03/08 11:02:26
>>145
すみません。自己解決しました。
Update()関数で更新できました。お騒がせしました(汗)
147:デフォルトの名無しさん
07/03/10 00:07:38
wxPanelのサイズを実行時に変更するにはどうしたらいいでしょうか?
148:デフォルトの名無しさん
07/03/10 00:35:21
実行時に変更じゃわかんねーな
実行後に変更か?それともコンパイル時に指定か?
149:デフォルトの名無しさん
07/03/10 00:41:52
コンパイル時ではなく,アプリケーションの実行時です.
読み込んだ画像の大きさに合わせて変更するような感じです.
言葉足らずですいません..
150:デフォルトの名無しさん
07/03/10 01:14:44
wxWindow::SetClientSizeかなあ
151:デフォルトの名無しさん
07/03/10 01:15:07
wxImage image("foo.jpg");
panel->SetSize(image.GetWidth(), image.GetHeight());
みたいな感じでいいんじゃない?
152:デフォルトの名無しさん
07/03/18 22:42:36
みなさん。
wxFrameにwxGLCanvasセットしているときって、
なぜかwxMessageBoxの表示が全面に出てこなくて、wxFrameを最小化するか、クイック起動の「デスクトップを表示」をするかしないと、
wxMessageBoxが現れなかったりしませんか?
ちなみに当方wxWidgets1.6.3使用。
1.8.2だと治ってるかなぁ・・・。
153:デフォルトの名無しさん
07/03/19 08:48:42
>>152
2.8じゃなくて?
154:デフォルトの名無しさん
07/03/19 09:16:38
>>153
そうでした。2.6.3使用で、2.8だと直ってるかな、でした。
155:デフォルトの名無しさん
07/03/29 09:01:33
Mac の wxPython で使ってみてるんだけど、
wx.DC.GetTextExtent() がラテン文字以外は正しい幅を返してこないようだ。
Windows だとちゃんととれるのに。
これはどこの問題なんだ?
156:デフォルトの名無しさん
07/04/03 17:10:57
wxWidgetsの問題.諦めよ.
157:デフォルトの名無しさん
07/04/03 17:52:33
べつに諦めなくても自分で書いて送りつければいいんだけどね。
結構反応はやいよ。時々永遠に放置されるけどw
実装具合はポートによって様々。
一応実装されていても細かいところで違っていて、それを吸収する
クラスを書かないといけないこともある。
158:デフォルトの名無しさん
07/04/04 16:41:07
URLリンク(groups.yahoo.co.jp)
日本語版メーリングリストが無いから作っといた
テンプレにいれといて
159:デフォルトの名無しさん
07/04/07 00:08:15
なぁなぁ
wxWidgetsってさ、UTFの扱いどうなってるな?F8とか押すとさ、たまーにゴミ文字列
挿入されるんだがあれまじキレそうになるからなんとかしたいんだけど
どうすればいい?
160:デフォルトの名無しさん
07/04/07 00:49:26
コンパイラをUnicodeにすればいいんでない?
161:デフォルトの名無しさん
07/04/07 01:42:17
155だけど、日本語のフォントにしたら日本語についてはちゃんと取れた。
フォントのフォールバックが起こると取れなくなるみたい。
157のいう実装上の差異というところか。直せるのかな。
wxMAC のソースをちょっと覗いてみたら、元のAPIの仕様でそうなってるようにも見える。
Mac 詳しくないのでわかんないけど。
wxて Unicode や XML に詳しい人がコアにいないんじゃないかと思うことがある。
XRC の文法もなんか素人くさいよね。size をリテラルとして指定するとことか。
Uniscribe や TextLayoutManager(だっけ?)相当の機能がつくといいんだけどな。
ワイド文字列でコンパイルしただけじゃUnicode対応とはいえなかろう。
でも古典的な範囲でふつうに使ってる分にはやりやすい。嫌いなわけではないのよ。
あとインプットメソッドまわりは日本人がやらないと絶対始まらないと思うぞ。
162:デフォルトの名無しさん
07/04/07 10:10:45
ソース見てきた。Unicode実装してない
嘘Unicode絶対間違って実装してるからバグバグになる。
最悪buffer overflowとかも平気でありありな実装で
こいつら死ねよって今からメール送りまくろうと思ってます。
メインの開発者全員にしねよねハゲゴルァメールを送りつけて気を引き締めて
あげたいであります。
163:デフォルトの名無しさん
07/04/07 23:49:22
>>162
そんなことよりパッチ送ってやれ。
どーせ理解できねーんだから。
164:デフォルトの名無しさん
07/04/08 04:19:49
ソース見てないけど
Unicodeが問題になることといえばコードの上下関係だけじゃないの?
日本語をソートするとばらばらになるとかでしょ
基底はWindowsAPIをUnicode版に切り替えるだけだから切り替えミスでもしてない限りはOverFlowはないと思うけど
切り替えしてないならアフォだけど
LinuxとMacは単純にUnicodeAPIが無いから非対応という話ではないのか?
ちなみに一からlinuxやMacでUnicode作ろうと思ったら全部書き換えないと無理だろ
165:デフォルトの名無しさん
07/04/08 07:36:26
>>164
>LinuxとMacは単純にUnicodeAPIが無い
UnicodeAPI って何だよw
もしかして Windows 以外では UTF-8 とか 16 とか弄れないと思ってるの?
166:デフォルトの名無しさん
07/04/08 13:27:31
kernelレベルでデフォルトキャラセットをUnicodeにしないと無理でしょ
167:デフォルトの名無しさん
07/04/08 14:31:15
ふぅん、カーネルレベルねぇ...
デフォルトキャラセットとな...
全部書き換えないと無理と...
Linux も Mac も使ったこと無いのに色々知ってるんだ
偉いねえ
168:デフォルトの名無しさん
07/04/08 16:54:12
Unicodeはkernelレベルでサポートするべきものだったんだよ!
169:デフォルトの名無しさん
07/04/08 16:55:32
な,なんだってーっ!
170:デフォルトの名無しさん
07/04/08 17:47:29
>>168
当然そうあるべきだと思うが。
ファイルシステムやカーネルオブジェクト等に使われる名前の
エンコーディングに一貫性が無いとロクなことにならない。
名前のエンコーディングが不明では、文字列として正しく処理をしようが無い。
一方名前にエンコーディング情報も付与することにしたら無駄に
データ量が増えインタフェースも複雑化するだけ。
だから、Windows NTやPlan 9はUnicodeだよな。
Unixが時代遅れなだけ。
171:デフォルトの名無しさん
07/04/08 17:59:31
一応書いておくと、カーネルモジュールでもファイルシステムとかは
Unicode 扱えないとちょっとダサイ。でもこれはユーザランドのアプリ
とは関係無い話。
172:171
07/04/08 18:04:28
スマン。ボーッとしてたら被った。
>>170
"カーネルオブジェクト等に使われる名前" って何?
ASCII Code の範囲を超える文字を使うケースってあるの?
つか、カーネルモジュールで Unicode サポートが必要なのって
ファイルシステムだけだよね? そして普通の Un*x なら kiconv
とか(似た様な名前の)機構が既に入ってるよね?
>>170 が時代遅れなだけ?
173:171
07/04/08 18:12:33
最後ちょっと下らない煽りっぽくなっちゃったが、カーネル内で実装されていようがいまいが、
ユーザランドのアプリで Unicode を使うには全く問題無いよ。全部書き換える必要なんて
全く無い。それと Mac も Linux もデフォで Unicode 使えるようになってるので、その意味
でも問題無い。
174:デフォルトの名無しさん
07/04/08 18:35:28
いや別にネットからダウンロードしたUTF-8の文字をバッファにいれてカーネルEUCの状態で表示しようがしまいが勝手だし
そのためのクラス郡はwxWidgetsに用意されてるのだから好きにすればいいのでは?
今の話ってそういう話じゃないよね
Unicodeの入ったバッファの中身をEUCのAPIにパスして文字が化けるんですけどとかそういうこと言ってんでしょ?
そりゃ当たり前だって言ってるだけw
175:デフォルトの名無しさん
07/04/08 18:40:56
strcpyとかstrlenとかAPIだよ
Unicodeの中身そのまま渡したらおかしくなるって
176:デフォルトの名無しさん
07/04/08 18:42:08
>>174
>EUCのAPI
もっとくやしく。
177:デフォルトの名無しさん
07/04/08 18:51:32
Windowsは2個用意してる
strcpyだとstrcpyAとstrcpyWと2種類のAPIが存在してコンパイルする時に何をベースにプログラムを動かすかで
自動的に切り替わるようになってる
linuxやMacはこういう機構が無いのだから完全にカーネル依存になる
基本的にカーネルの扱う文字コード以外ではコンパイルしてはいけない
別の文字コードを扱う時はバッファ内で変換してからすべての処理に引き渡すようにしないといけない
178:デフォルトの名無しさん
07/04/08 19:26:12
>カーネル依存になる
だから、ならねっての。
C/C++ の標準ライブラリとカーネルの話をごっちゃにしてるね。
ついでに言うとロケールについても分かっちゃいない。
179:デフォルトの名無しさん
07/04/08 19:40:11
kiconvって、kernel内部コードをUTF-8で統一
全てのシステムコールの界面でLC_CTYPEを使ってchar*のエンコード変換を
行うと解釈していいのかな?
それならWindowsの動作に近いんだが。
いや、kernel側にはユーザ側のLC_CTYPEは分からないか。
むしろシステムコールにラッパーかませるべき?どういう実装になってるの?
180:デフォルトの名無しさん
07/04/08 19:44:56
話が全然噛み合ってねえな…
181:デフォルトの名無しさん
07/04/08 19:45:09
>>177
> strcpyだとstrcpyAとstrcpyW
1. 存在しません。
2. strcpy()はWindows APIではなくC標準のランタイムライブラリです。
3. MSVC++はC標準ランタイムライブラリに対しても、TCHARベースの
汎用テキストマッピングの仕掛けは提供しています。
strcpy()の場合は、_tcscpy() -> strcpy() / wcscpy()です。
182:179
07/04/08 19:47:41
よくわからないんだけど。
kiconvってカーネルパッチでしょ?
コールゲート通過後の、カーネル空間に入っちゃったただのchar*のデータを
どうエンコード変換すべきか、どうやって判断してるんだ?
Windows APIの場合は、APIのレイヤで全部UTF-16にしてるよ。
その層だと判断できるし、カーネル内部がUTF-16に閉じてクリーンになるから。
183:デフォルトの名無しさん
07/04/08 19:51:06
ネット斜め読みしただけで分かった風に書くなよ…
184:179
07/04/08 19:56:40
>>183
単純な話なんだから、分かってるのなら答えて欲しいんだけど。
・マルチユーザシステムであるUnixでは、ユーザ毎にLC_CTYPE設定が異なり得る。
これが前提。
・何もしなければ(少なくとも昔のUnixでは)システムコールにchar*を渡せば
それは「そのまま」kernelに素通しで渡るはず。つまり、一貫性の無い
異なるエンコーディングの名前がkernelに渡されることになる。しかも
kernelに渡ってしまった後はそのエンコーディングを判断するすべが無い。
ユーザモードで呼ばれるシステムコールのCインタフェース(ラッパ)には
呼び出し側プロセスの環境のLC_CTYPEが分かっているので、多分ロケールに
従った変換をかけるならここがベストである、ように俺には見える。
で、
・↑のような変換を行うシステムコールラッパの仕掛けなんですか
・kernel内部はUTF-8で統一されているのですか
というのが質問。
間違っているのなら、どこがどう間違っているのか説明してほしい。
185:デフォルトの名無しさん
07/04/08 20:09:41
>>184
何つーかさ、↓こういう質問が出る時点で答えるのを躊躇しちゃうのよ。
>・kernel内部はUTF-8で統一されているのですか
正直、君のレベルに合わせて回答を作るのは「単純な話」じゃないと思うよ。
誰にとっても。
186:179
07/04/08 20:13:21
>>185
>・kernel内部はUTF-8で統一されているのですか
なぜ、この疑問がそんなに問題なの?
Windows NTは、kernelが扱う「名前」「テキスト」は、全てUTF-16だよ。
kernelの扱う名前のエンコーディングに一貫性が無いと、例えばファイルシステム
のファイル名のエンコーディングが統一されていないと、問題でしょ?
UTF-16に統一することで、そのような問題を避けつつ、ASCIIよりはるかに
大きな文字集合を無問題に扱うことが出来ているわけ。
少なくともWindowsでは。
無論ファイルの中に入っていたりネットワークを流れるデータ(バイト列)の
具体的な中身にはkernelは関与しないよ。それはユーザレベルの話。
187:179
07/04/08 20:19:48
例えば
fd = creat(filename, 0666);
を実行した時に、
1) filenameはどこかでUTF-8に変換されますか
2) それはどこで行われますか
3) 変換されないならば、「全ての」ユーザコードが「各自」適切な
エンコーディングを指定しない限り、
ファイルシステムのエンコーディングの一貫性は保障されないということで
良いですね。
ということなんだが。
188:デフォルトの名無しさん
07/04/08 20:31:18
>>186
前にも書いたけどさ、符号化方式はファイルシステム固有の話であって
「カーネル内部で統一」という言い方はおかしいよね?
単に一個のカーネルモジュールに過ぎない訳だから。
君も一応マイクロカーネルな OS 使ってるんでしょ?
これはオケ?
189:179
07/04/08 20:52:19
>>188
・非Unicodeの符号化形式を採用しているファイルシステムは、それだけで
i18n/m17n対応においてUnicodeベースのもの(FAT32やNTFS)より劣ると
いわざるを得ないだろう。
・ファイルシステムが非Unicodeの符号化形式を用いている場合、ファイルシステムの
モジュールなりドライバなりが、相互変換を行うべき。そしてその層に
それが閉じているならば、カーネルとしてはUnicodeで考えることが出来るので
「統一」と呼べるのでは。
統一されていれば、異なるファイルシステム上の名前を比較したり、ファイル
システム間で名前をコピーすることの問題も無くなるし、
ユーザの実行環境のロケールが何であろうと、そのロケールとの相互変換を
どこかのレイヤが行いさえすれば、問題なくファイル名を取り扱うことが出来る。
・今きづいたのだが、ファイルシステムの符号化形式との間の決めウチ変換を
行うのがkiconvの役目?もしかして。
だとすれば、それだけではWindowsの提供する環境より
随分劣るといわざるを得ない。
190:デフォルトの名無しさん
07/04/08 20:57:58
相変わらず、話が全然噛み合ってねえな…
191:179
07/04/08 21:10:05
>>187のような単純な質問には誰も答えてくれないの?
filenameの中身がUTF-8エンコードされていないなら、結局どうなるの?
1) EILSEQエラーなどではじかれる。
2) 普通にテキストと解釈できないへんな名前のファイルが出来る。
3) プロセス実行環境のLC_CTYPEに応じて、UTF-8に誰かが変換してくれる。
4) ファイルシステムに甚大な被害を及ぼす可能性がある。
192:デフォルトの名無しさん
07/04/08 21:14:45
>>191
何答えても屁理屈こねられそうだからみんな嫌がってんだよ。
193:デフォルトの名無しさん
07/04/08 21:15:33
>>187
1. いいえ
3. はい
194:デフォルトの名無しさん
07/04/08 21:16:49
>>191
2
195:デフォルトの名無しさん
07/04/08 21:17:24
↓勝ち誇った書き込みキター
196:179
07/04/08 21:19:08
>>192
具体的に俺の「どの」発言が屁理屈なの。
誤っている箇所があるなら指摘してくれよ。
俺はそもそも屁理屈をこねるほど最近のLinuxのことを知らないから、
聞いてるだけなんだが。
197:デフォルトの名無しさん
07/04/08 21:21:54
>>196
↓これ
>>189
>・ファイルシステムが非Unicodeの符号化形式を用いている場合、ファイルシステムの
> モジュールなりドライバなりが、相互変換を行うべき。そしてその層に
> それが閉じているならば、カーネルとしてはUnicodeで考えることが出来るので
> 「統一」と呼べるのでは。
> 統一されていれば、異なるファイルシステム上の名前を比較したり、ファイル
> システム間で名前をコピーすることの問題も無くなるし、
> ユーザの実行環境のロケールが何であろうと、そのロケールとの相互変換を
> どこかのレイヤが行いさえすれば、問題なくファイル名を取り扱うことが出来る。
198:179
07/04/08 21:22:24
>>193, 194
教えてくれてあんがと。
んじゃ、問題ないとか言い切ってる>>171は勇み足さんかな。
事実上そのUTF-8対応したLinuxとそうでない従来型ロケールベースでは
運用方法から何から全然変わってこない?
皆が皆UTF-8に移行してるわけじゃないでしょ?
どっちでも動くプログラムとか書くの、面倒じゃないの?
199:デフォルトの名無しさん
07/04/08 21:25:00
>>198
>>>171は勇み足さんかな。
勝手にあんたの持論に巻き込むな。
200:デフォルトの名無しさん
07/04/08 21:31:09
>>198
>事実上そのUTF-8対応したLinuxとそうでない従来型ロケールベースでは
>運用方法から何から全然変わってこない?
誰か俺にも分かるように翻訳してくれ。
201:179
07/04/08 21:42:51
>>200
非UTF-8カーネルでユーザ毎にLC_CTYPEが異なる昔ながらのL10N環境と、
カーネルからユーザロケールまでUTF-8を前提とした環境と、
UTF-8カーネルに従来型ロケールの環境では、
ユーザコードでiconv()やwcstombs()等を用いた変換が必要な箇所が
変わってくるんでは?と思ったんだけど。
気のせいだというのならいい。
202:179
07/04/08 21:43:50
>>197
えーと、俺は見ての通り頭が悪いし最近のLinuxのことは知らないので、
誤りはもっとピンポイントかつ具体的に指摘してくれると嬉しいのですが。
203:デフォルトの名無しさん
07/04/08 21:54:41
>>202
> 誤りはもっとピンポイントかつ具体的に指摘してくれると嬉しいのですが。
スレ違い
204:デフォルトの名無しさん
07/04/08 23:46:39
よくある逃げ方だな。
ごくろーさんw
205:デフォルトの名無しさん
07/04/08 23:52:15
↑捨て台詞キター
206:179
07/04/09 00:00:11
>>204は俺ではないですよ。どうでもよいことですが。
207:デフォルトの名無しさん
07/04/09 00:54:49
で結局
EUCベースのlinuxでwxWidgetsでUTF-8を用いたアプリを開発するにはどうすればよいかという話でしょ
1.wxWidgetsが馬鹿なので書き換える
2.アプリをEUCで作る
3.linuxをUTF-8に対応させる
さあどれだw
208:デフォルトの名無しさん
07/04/09 00:57:38
話の発端はwxMACだっけ
ということはMACのカーネルは何のコードがデフォなんだ?
209:デフォルトの名無しさん
07/04/09 01:32:03
わかってもいないし調べる気もない奴らばっかだということはよくわかったから
もうここで続けるな。どこか他所でやってくれよ。
210:デフォルトの名無しさん
07/04/09 01:55:55
>>193-194を見る限り、
$ touch ほげ
とかやった場合、要するにロケール設定によって全然別の名前のファイルが
作られるわけか?
なんかもう脳死してるっていうか、どうしようもないんじゃねぇのこれ
211:デフォルトの名無しさん
07/04/09 02:04:26
wow wxWidgetsの話はどこに行ったのさ?
212:デフォルトの名無しさん
07/04/09 02:04:34
つか、非ASCII文字を含むファイル名を表示するまともな方法、存在すんのか?
ほげ:sjis
ほげ:euc-jp
ほげ:utf-8
みたいなファイル名が混在し得るんでしょ?
一つのファイルシステムに。
213:デフォルトの名無しさん
07/04/09 02:28:20
>>211
readdir()やftsを使ってで読み取ったファイル名のリスト
をリストボックスか何かに表示したいです。
どうするのが正しいのでしょうか。
214:デフォルトの名無しさん
07/04/09 02:41:11
WindowsだってeucとかUTF-8のファイル作ろうと思えば作れる罠
215:デフォルトの名無しさん
07/04/09 02:45:52
リストボックスは当然ながらKDEとかGNOME依存でこれらは結局kernelの文字コードにあわしてある
kernelがEUCなら当然XシステムもEUCでフォントデータベースもEUCだからEUCのフォントインデックスじゃないと
いわゆる文字化けした状態になる
216:デフォルトの名無しさん
07/04/09 02:56:42
>>215
> kernelの文字コード
> kernelがEUCなら
いみが
わかりません。
Linuxでは、文字エンコーディングを指定してカーネルを再構築するのでしょうか?
それによって、具体的にkernelの何が変わるのですか?
Unixはマルチユーザシステムですが、他のLocale設定を使いたいユーザは
どうすればよいのでしょうか?
217:デフォルトの名無しさん
07/04/09 03:06:44
>>214
「やろうと思えば出来る」のと、「通常の使用でそういう事故が起きる」
のとでは、当然ながら全然違うんだが。
WindowsのコードページはUnixのロケールほど揮発性でも動的でもないし、
むしろ日本語Windowsなら実質CP932決めウチ、みたいな世界だ。
そしてAnsi版APIは、APIレベルでUTF-16への変換を試みるから、そこで
妙な名前はガードされる。
Unicode版APIは素通しだけどな。CreateFileW()にUTF-16として
正しくない並びの文字列を渡してもそのファイルを作れてしまうのは確か。
ただし、「ユーザが」「普通に」使用していてそういう事態に陥ることは
まずない。
218:デフォルトの名無しさん
07/04/09 03:55:56
>>215
もうそのネタを引っ張るのは無理でしょ。流石にフォントの並びは変わらねえw
「カーネルの文字コード」という概念は個人的に破壊力抜群だったけどww
「EUC ベースの Linux」は後々まで語り継がれる名言だったなwww
釣り、なんだよね?
219:デフォルトの名無しさん
07/04/09 04:06:30
また過去においては Linux の C Library にはロケール機構の実装は行われて
おらず X Window System の提供するロケール機構を使用していた。近年になっ
て X のロケールから GNU C Library version 2 に実装されたロケールへの移
行が進んでいる。残念ながら現時点では日本語をはじめとする多バイト文字の
ロケール機構は機能していないが実装作業が進行中であり、近日中に利用可能
になるものと思われる。
220:デフォルトの名無しさん
07/04/09 04:20:33
>>210,>>212,>>217
Windows だって一緒やがな。メールに添付されたファイルのファイル名が EUC-JP
だったら誰が valid なファイル名を探してくれるのでしょうね。zip に入っていたファイルの
ファイル名が UTF-16 のエンディアン違いだったらどうするのかな?
スレ違いなんで↓続きはこっちでやってね。
文字コード総合スレ part2
スレリンク(tech板)
>>219
残念ながらそのネタも面白くないと思われるよ。
221:デフォルトの名無しさん
07/04/09 04:49:56
>>220
ちゃんと規格確認してから言ってる?
特定の実装の問題を全体に拡大解釈するなよ
222:デフォルトの名無しさん
07/04/09 05:18:41
>>221
規格って、zip に入れるファイル名の文字コードの規格があるの?
特定の実装って何の実装の事?
実際には Linux だってわざわざファイル名に複数の文字コードを混在させて使おうと
する人間はいない。混在可能ってだけだし、それは Windows でも一緒。
223:デフォルトの名無しさん
07/04/09 05:35:45
知識自慢ばっかで解決策を語れるスマートな人間はまったくいないな
wxWidgetsのソースをいじるなんてのは非現実的だし
ロケールをわざわざUnicodeに変換したって既存のソフトが動かなくなるだけ
答えは1つ、デフォルトロケールにアプリを合わせて自前でコード変換するだけ
それ以外の方法はない
それ以外の方法しか考えられないやつはただの馬鹿
224:デフォルトの名無しさん
07/04/09 05:38:24
知識自慢というか、正しい認識を持つことは重要だよ。
で、何の解決策が必要なんだっけ?
225:デフォルトの名無しさん
07/04/09 06:06:24
ボケ老人は無理して話に加わらなくていいのに・・・。
226:デフォルトの名無しさん
07/04/09 06:51:00
> zip に入れるファイル名の文字コードの規格があるの?
zip に入れるファイル名の文字コードの規格はないの?
227:デフォルトの名無しさん
07/04/09 07:26:40
無い
228:デフォルトの名無しさん
07/04/09 08:08:56
無いよなぁ…
229:デフォルトの名無しさん
07/04/09 08:11:09
>>223
>wxWidgetsのソースをいじるなんてのは非現実的だし
ノンサポートのライブラリなんだから、きちんと全容を把握して
自分で手を入れられるようになっておいた方が良いぜ。
230:デフォルトの名無しさん
07/04/09 08:54:57
>>223
オープンソースなんだし常識じゃないの?
カーネルのソースも、wxWidgetsのソースも動作がおかしい場合は、
読んで修正しないとねぇ。
231:デフォルトの名無しさん
07/04/09 12:06:11
>>220
あのさぁ。メールの添付ファイルだのzipアーカイブの中身だのに含まれる
ファイル名をどうシステムのファイル名にマップするかってのは、
そのプロトコルなりRFCなりファイルフォーマットなりの話であって
OSの仕事ではないでしょ?
そこに不備があるのなら、それはOSでなくて、符号化形式が
self-containedではないそれらの不備ってだけだろ?
232:デフォルトの名無しさん
07/04/09 12:08:37
少なくともWindowsでは
単にシェルでファイルをとりあつかうだけのことで問題が生じることは無い。
ファイル名はUTF-16「である」のがWindowsだ。
Windowsのファイル名はコードページに依存しないし、コードページによらず
漢字や拡張ラテン文字を含むファイル名を同時に正しく扱える。
Linuxでは
$ >ほげ
とかやるとどうなるんだっけ?
233:デフォルトの名無しさん
07/04/09 12:36:11
スレ違いage
234:デフォルトの名無しさん
07/04/09 13:32:49
結局、>>213の答えは?
235:デフォルトの名無しさん
07/04/09 13:38:35
>>229
入れられるのと実際に入れるのとでは意味が違う
手を加えたらパッチが当たった時にまたそれに合わせて全部拾い出していくのか?
よっぽど暇なんですね
236:デフォルトの名無しさん
07/04/09 13:41:47
せっかくクロスプラットフォームで多くのチェックが入ってバランス統一されたものに
わざわざ手を加えてクロスプラットフォームじゃなくならせるなんてよっぽど馬鹿なんですね
237:デフォルトの名無しさん
07/04/09 17:45:41
>>234
見ればわかると思うけど、ここ能無ししかいないから
誰も答えられません。
238:デフォルトの名無しさん
07/04/09 18:26:14
じゃあお前が答えろよw
239:デフォルトの名無しさん
07/04/09 18:34:55
知識が無いことより、分かっている振りをすることのほうがはるかに馬鹿な事なのに
プログラマはそれがわからない馬鹿が多くて本当に嫌な人種だな
むしろ人間じゃねーな
240:デフォルトの名無しさん
07/04/09 20:18:26
>>231
そこまで書いたら自分で気付けよw
241:デフォルトの名無しさん
07/04/09 21:49:34
>>240
要するに、Windowsのファイル名はUTF-16固定だが
Unixのファイル名のエンコーディングに関しては、規約も標準も
何も無い無法地帯で、かつシステムグローバルでも何でもないLC_CTYPE
環境変数の設定でエンコーディングがころころ変わってしまい、
結果としてプログラム的にどうあるべき、という正しい判断のしようが無いから
糞なんだろ?
どこが「Windowsも同じ」なの?
Zipのようなファイル形式で困ったことになる点だけは確かに同じだな。
だが、それはOSの問題ではないし、論点ずらしだろ。
242:デフォルトの名無しさん
07/04/09 21:51:50
>>241
惜しい。あと一歩真実へ踏み出してみよう。
243:デフォルトの名無しさん
07/04/09 21:56:50
つづきまだ~?(チンチン(AAry
244:デフォルトの名無しさん
07/04/09 22:02:56
ちゃんと考えなきゃダメだぜ。
245:デフォルトの名無しさん
07/04/09 22:10:28
例えばプレーンなテキストファイルのエンコーディングは分からない
(符号化形式がselfcontainedでない)ってのはOSに限らない
普遍的かつ伝統的な問題なわけで、
ファイルの中のデータを扱う部分はどうしても汚い仕事にならざるを
得ないと思うのよ。典型的なのが日本語のエンコーディングの自動判別の
ようなヒューリスティック。
Unixの世界ではファイル名もこれと同じなわけだけど、Unicodeに
統一できるなら、したほうがいいに決まってるし、完璧ではないにしろ
それが可能な世界だと思うんだ。
Windowsではそうなってるわけでしょ。
246:デフォルトの名無しさん
07/04/09 22:18:35
少なくともWindowsでは、何かファイル名を外部からもらった時に、
それをOSに渡す際にはUTF-16に変換するのが「正しい」ことは分かる。
どうやったらUTF-8に変換できるのか分からないならば、それは貰い方、例えば
ファイル形式やプロトコル等に問題があると言うことが出来る。
それはWindowsの問題ではない。
Unixはそれ以前の問題。それが非ASCII文字を含む場合、どう扱うのが
「正しい」のかが全く分からない。
一般解は存在せず、環境・プログラム毎の特殊解のみがあるのだろう。
247:デフォルトの名無しさん
07/04/09 23:07:08
>>246
>どう扱うのが「正しい」のかが全く分からない。
どう扱うのが正しいのかを決めるのはユーザ様な世界なんだよ。
分からないんじゃなくて、勝手な決め打ちしないだけ。
全能なるユーザ様が入力なされた物を勝手に変換するなと。
"touch ほげ" の結果生成されるファイル名がロケール依存で
変化するのは UN*X 的に正しい世界。何故ならユーザ様が
ロケールを設定しているから。アプリはロケールに従ってデータを
読み出せば全く問題無い。これが UN*X 的な正しい扱い方。
入力には寛容に。
ファイル名のエンコードは一応それなりに決まっていて、HFS+
なんかは UTF-16 になっている。決まっているだけで EUC でも
書き込めるのは Windows と一緒だね。
248:デフォルトの名無しさん
07/04/09 23:26:45
UNIXの世界において、kernelのレイヤでは全て単なるバイト列。
\0と/は特別扱いやけどな。
エンコーディング等は、kernelの知・っ・た・こ・と・で・は・な・い。
249:デフォルトの名無しさん
07/04/09 23:39:55
正しいとか正しくないとか俺様理論は他でやってくれないか?
250:デフォルトの名無しさん
07/04/09 23:41:01
あのな\0が特別って\0だけで十分にエンコード依存なんだよ馬鹿
251:デフォルトの名無しさん
07/04/09 23:42:50
俺様理論っつうか、エンコードとかkernelの話は他でやってくれ
252:デフォルトの名無しさん
07/04/09 23:47:16
何度も言うけども
wxWidgetsを正常に使いたかったらわざわざロケールを変更するような暇なことしたり
wxWidgetsを自分好みに作り変えたりするのは馬鹿のすることだ
デフォルトロケールのエンコードにあわせるのが正当なやり方だ
Windowsの場合はSJISとUnicodeの両者が共存出来るようなうまいしくみがあるから選べるだけ
253:デフォルトの名無しさん
07/04/09 23:50:48
>>249
核心を突いたね。そう。単一の文字コードに決め打ちして正しいとか言ってるのは
俺様理論なんだよね。簡単に破綻するのにね。しかも UTF-16 だからなあ…
254:デフォルトの名無しさん
07/04/09 23:53:05
>>252
一生 Windows だけ使ってる分にはそれで良いと思うよ。
Microsoft 以外が出しているおかしな OS なんて使う必要無いよ!
255:デフォルトの名無しさん
07/04/09 23:57:45
どうせMACはバージョンによって文字コードが違っても互換性がないのだからw
UNIX系なんてそもそもバイナリ配布できるような環境にないだろw
どうせそのコンピュータでコンパイルして動かすのだからロケールなんて統一したほうがかえってややこしいことになる
コンパイル環境のロケールでそのまま動くように作ればいいだけ
問題になるのはスタティック文字列くらいなもん
256:デフォルトの名無しさん
07/04/10 00:02:38
オケ
257:デフォルトの名無しさん
07/04/10 01:07:07
また一人気違いが……。よそでやれ。
258:デフォルトの名無しさん
07/04/10 01:10:54
>>247
> "touch ほげ" の結果生成されるファイル名がロケール依存で
> 変化するのは UN*X 的に正しい世界。何故ならユーザ様が
> ロケールを設定しているから。アプリはロケールに従ってデータを
> 読み出せば全く問題無い。
touch ほげを実行したユーザが、ファイル名を読み取るユーザと同じとは
限らないのがUnixでしょ。読み取るプロセスはデーモンかもしれないし、
cronあたりから実行されているバッチかもしれない。
ftpやtelnet越しのユーザかもしれない。
実におめでたいね。
>>248
うん、それで?
結果として、単に非ASCII以外の文字を含む名前がひどく扱いにくい世界に
なったわけだよね。
時代遅れだね。
>>253
Unixの「自由」は欲しくない自由なんだよ。俺に言わせれば。
プレーンテキストどころか、ファイルの中の行毎にエンコーディングが
異なる、何がなんだか分からないファイルを考えてみればよい。論外だろ?
「自由」にしたいのなら、せめてエンコーディング方式が分かるようにしろと。
259:デフォルトの名無しさん
07/04/10 01:40:40
「議論」したいのなら、せめて該当するスレに移ってくれと。
260:155
07/04/10 02:18:16
ぎょえ。なんかすごいことに。
しかもなぜか関係ないファイル名の話になってるし…。
荒れるからもう Unicode の話はふらないよ…。
ゴメンネ。
261:デフォルトの名無しさん
07/04/10 08:24:38
>>258
それで問題無いよ。お仕着せが良いなら Windows を使っていれば良い話。
見掛け上の統一感に満足していれば良い。Windows が最高なんでしょ?
俺は、文字コードの揺らぎは常に存在するものである事を前提に、自分で
自由に制御出来る環境の方が優れていると思う。
いつだって他人の流儀を認められないのが Windows ユーザだよなあ。
ぬるい世界で満足しているなら、そこから出て来なければ良いのにね。
262:デフォルトの名無しさん
07/04/10 10:12:08
>>261
> いつだって他人の流儀を認められないのが Windows ユーザだよなあ。
イラッとして書いたんだろうけどこういうひとくくりにする発言はやめようよ。
使ってるOSの問題じゃないからさ。
263:デフォルトの名無しさん
07/04/10 10:58:01
イラッとして書いたんじゃなくて、そのあたりが>>261のレベルなんです。
あらゆるコミュニティから「お前は入ってこないで」と思われるタイプ。
264:デフォルトの名無しさん
07/04/10 12:29:12
こーゆー輩は他人を貶して優越感に浸りたいだけだから放って置いたほうが良いよ
265:デフォルトの名無しさん
07/04/10 12:43:38
>>261ね。
テクニカルな内容がほぼゼロ。本人の品性が良く分かる煽り文ですね。
> 俺は、文字コードの揺らぎは常に存在するものである事を前提に、自分で
> 自由に制御出来る環境の方が優れていると思う。
エンコーディング情報が正しく含まれるのならそれもいいだろうけど、
実際には、各行のエンコーディングがごたまぜ、何が使われているか分からない
テキストファイルも同然の状態なわけですよ。ファイル名が何でエンコードされてるか
どこにも記録されない上に、一貫性のある規約も無いのが現実。
自分の環境は自分の都合のいいように運用するからそれでおk?
あなたは仮にもプログラマでしょう?
趣味でLinuxいじってるだけのパソコンオタクじゃないんでしょ?
プログラマとしてコードを書くときに、自分の環境しか考えないの?
例えば「ゆらぎがあることを前提に」、あなたなら>>213のケースにどう
回答するの?
Windowsはあなたに言わせればぬるい環境で、Unixは優れてるんでしょ?
俺様環境でしか通用しない糞コードではなく、
素晴らしい回答を期待してますよ。
266:261
07/04/10 19:11:39
なんか変なのがまとめて沸いてきたなぁ。それとも同一人物か?
自分の痛さを指摘されて逆上した Windows ユーザ?
まぁ、まともなレベルのものが書けたら相手してあげるよ。頑張ってね。
267:デフォルトの名無しさん
07/04/10 20:25:50
自分が痛いとはこれっぽっちも思ってないらしいな(ワラ
268:261
07/04/10 21:00:09
痛くないから当然だな。
まともなことを言ってるのに「痛くてすみません」ってな態度を取るのは
謙虚でもなんでもない。ただ間違っているだけだ。
それにしても、本当に逆上してるんだな。
負け癖のついた議論好きってこんな感じなんだよな。
269:デフォルトの名無しさん
07/04/10 21:01:12
新着で100もレスついてるから何かと思えば…
270:261
07/04/10 21:07:58
馬鹿は一匹出てくると立て続けに何十匹も出てくるからな。
スレが無駄に伸びる伸びる。
271:デフォルトの名無しさん
07/04/10 21:10:27
>>266,>>268,>>270
お、俺がもう一人居る。あんたが >>261 だとすると、俺は誰だw
何にせよ >>261 の書き込みは破壊力抜群だったみたいで何より。
>>262 には悪い事したけど、まともな人はもう居ないと思ってた。
>>265
あんたプログラマだったの?
プログラマは平日昼間から 2ch やれて羨ましいなあ。
エンコーディング情報は環境変数からとって来るから良いんだよ。
あんたが思ってる様なカオスの世界では無いよ。
272:271
07/04/10 21:13:42
話を簡単にまとめると、エンコーディングが静的に決まっているのが
NTFS や HFS+(どちらも UTF-16) で、行儀の良いアプリであれば
そのエンコーディングに従って文字列を格納してくれる。勿論、zip
の例の様に、人間にとって valid な文字列を生成出来ない場合も
あるし、ファイル名が ASCII である事を前提に書かれたプログラム
も存在している。
一方で、エンコーディングが環境に合わせて変わるのが UNIX 方式。
ファイルシステムの数も扱うロケールの数も沢山あるし、OS 自体も
色んな種類があるので入力には寛容に作られている。行儀の良い
アプリならロケールを見てきちんとデータを変換してくれる。勿論
入力が ASCII のみを想定している様なプログラムもあって、8 bit
clean じゃないコマンドも残っていたりする。
どちらの方式でも言えるのは、人間にとって valid じゃない文字列を
生成するのは簡単だという事。valid じゃない文字列を生成する
プログラムが良いか悪いかは別として、そういうプログラムが存在する
事は間違いない。だとすると、エンコーディングを決め打ちして満足
しているのは抜けてるんじゃないかなあというのが俺の意見。
Windows な人が共感出来るかどうかは別として、論理としては理解
出来るように書いているつもりだけど、どうよ?
273:デフォルトの名無しさん
07/04/10 21:52:01
>>271
> エンコーディング情報は環境変数からとって来るから良いんだよ
環境変数はユーザ毎、プロセス毎、それどころかプロセス実行中にも
変化し得る揮発性のデータでしょ。実際、
$ LANG=C man foo
のように、一時的にLANGを変えてコマンドを実行するようなことは
日常茶飯事のはずだ。
環境変数が指し示すのはあくまで「プロセスの実行環境」であって、
「ファイル名が何でエンコードされているか」ではない。それらは
全く別のものなのに、一体それでなぜ「良いんだよ」と言えるのか。
・ファイル名のエンコーディング方式が固定化されているか
・ファイル名のメタデータとしてエンコーディング方式が取得/設定できるか
以外に正しい解は無いよ。そんなこと、分かりきってるだろうに。
274:デフォルトの名無しさん
07/04/10 21:57:11
>>272
> 論理としては理解出来るように書いているつもりだけど、どうよ?
あなたがUnix方式の穴/不備に故意に目を瞑っていることだけはよく理解できる。
そして、「完璧な方式など無い」と主張することで、そこから目をそらさせようと
しているわけだ。
1. エンコーディング固定化方式
2. エンコーディングが可変で、形式をメタデータとして保持する方式
を比較するなら分かる。
どちらにも得失はあるが、「まともな」やり方だ。
Unixはそのいずれでもない。可変で、形式情報が失われてしまう。
Zipと同じだよ。
275:271
07/04/10 21:57:12
>>273
ファイル名が何でエンコードされてるかは重要じゃない。
ファイル名のバイト列をどの文字コードで解釈したいと
ユーザが指定しているかが分かれば良い。
エンコードを決め打ちしても当然例外は発生するんだから
正しい解なんて存在しないんだよ。それに気付ければオケ。
276:デフォルトの名無しさん
07/04/10 21:59:53
もうちょっと論理的に頼むわ。
馬鹿でもいいから、限界まで頑張って。
277:271
07/04/10 22:00:13
>>274
>完璧な方式など無い
まさにその通り。それを認識する事が重要だよ。
そうすればもっと色んな考えに寛容になれるよ。
278:デフォルトの名無しさん
07/04/10 22:01:44
Windows方式は完璧ではないよ。無論。誰もそんなことは主張していない。
Unix方式よりずっとマシだ、といっているだけだ。
279:デフォルトの名無しさん
07/04/10 22:01:47
>>276
お前は >>261 なんだろ...
自分の役割を忘れるな
280:デフォルトの名無しさん
07/04/10 22:03:58
>>275
>ファイル名が何でエンコードされてるかは重要じゃない。
>ファイル名のバイト列をどの文字コードで解釈したいと
>ユーザが指定しているかが分かれば良い。
環境変数という荒くて大雑把な手段では、実際に個々のファイル単位に
エンコーディングを指定することは出来ないし、インタラクティブな
プログラムばかりではない。
問題が大きいのに相変わらず故意に目をつぶりまくっているな。
281:デフォルトの名無しさん
07/04/10 22:05:43
>>278
それなら君は Windows ユーザじゃないってことだ。
282:デフォルトの名無しさん
07/04/10 22:06:57
>>281
キミ、面白すぎ
Windowsマンセー、欠陥など一切認めないって信者以外はWindows使っちゃ
いけないのネ
283:デフォルトの名無しさん
07/04/10 22:09:28
>>282
物事を面白がれるのはいいことだと思うよ。
現実と架空の区別さえついていれば。
284:デフォルトの名無しさん
07/04/10 22:10:06
マルチバイト文字の2byte目の引き起こす下らない問題に
煩わされてきた日本人であるならば、
名前なんてただのバイト列でいいよ、エンコーディングなんてどうでもいいよ、
なんてことは言えない筈だぞ。
UnixとCの時代遅れな設計がいかに多くの下らない「日本語対応パッチ」のような
adhocな生産物を意味出してきたことか。
285:デフォルトの名無しさん
07/04/10 22:18:40
>>278
悪いけど俺にはとてもそうは思えないし、エンコード決め打ちなんて
俺の基準からすると作法がなっていない。
286:デフォルトの名無しさん
07/04/10 22:19:53
>>284
いいからしばらく黙ってろって。襤褸が出まくってる。
287:デフォルトの名無しさん
07/04/10 22:25:18
>>285
> エンコード決め打ちなんて俺の基準からすると作法がなっていない。
そういう「気分」「好み」でしか語れないのか?
技術者なら、Unix方式に比べてどういう具体的な問題・欠陥があるか語れよ。
288:デフォルトの名無しさん
07/04/10 22:27:47
>>287
散々書いたじゃん。今まで何読んでたの?
鬱陶しいから横から煽るのは止めてくれ。
あと >>284 みたいな見当違いの事書くのも勘弁な。
289:デフォルトの名無しさん
07/04/10 22:29:16
>>288
> 散々書いたじゃん
「Windowsも完璧ではない、Windowsも同じ」以上のことは書いてない気が
するが?
290:デフォルトの名無しさん
07/04/10 22:32:23
今ある環境を*肯定*して最大公約数的なものを
提供するのがwxWidgetsだと思うのだが。
OS批評がしたいならOS板に行ってくれないかな。
291:デフォルトの名無しさん
07/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は「何でもあり」と一見自由のようなことを言っていて、
実際にはエラーを起こしがちで問題の多い解でしかないわけだ。
ちょうど行毎にエンコード形式の異なるテキストファイルのように。
292:デフォルトの名無しさん
07/04/10 22:41:05
>>291
ガンガレ
もっとガンガレ
293:デフォルトの名無しさん
07/04/10 22:59:47
>>289
書いて無くても書いたんだよ!
294:デフォルトの名無しさん
07/04/10 23:01:57
案外ここ住人いたんだなあ
なんだかうれしいよ
295:デフォルトの名無しさん
07/04/10 23:24:59
ここまで俺の自演
296:デフォルトの名無しさん
07/04/10 23:31:07
いやいや、オレオレ
297:デフォルトの名無しさん
07/04/10 23:40:31
VC++ 2005 express edision(無料のやつ)
で
wx_dll.dswをコンパイルすると
MessageBox@16が見つからないとかいうエラーが出てdllが生成されないんだけど
なんじゃこりゃ
298:デフォルトの名無しさん
07/04/11 00:27:41
普通の質問になると黙るのがワロス
299:デフォルトの名無しさん
07/04/11 01:16:44
ダメ文字と半端バイト、エンディアン、改行の扱いで問題なければ別にどうでも良いよ
……Windows&SJIS/UTF-16が苦手にするところだなぁ。WindowsもUTF-8(N)にならんかね?
300:デフォルトの名無しさん
07/04/11 01:22:32
>297
ちゃんとWindowsの開発環境整えてる?Platform SDKとか。
301:デフォルトの名無しさん
07/04/11 01:28:18
>>300
libがなかったらそれ以前にlibが無いってエラーが出るからね
その辺はちゃんとやってる
wx.dswのほういわゆる静的リンクは問題なくコンパイルできる
DLLのほうがだめ
302:デフォルトの名無しさん
07/04/11 07:49:05
>>299
どこでも UTF-16 は負の遺産と化してるね
303:デフォルトの名無しさん
07/04/11 12:00:37
Javaも.NETもTclもICUもUTF-16だけどな。
ファイルやネットワークで使用するデータ交換形式としては無論UTF-8が
望ましいが、マルチバイト処理を必要とするから、内部コードとして
使うにはUTF-32のほうがいいよ。
UTF-16はまぁ中途半端の観は否めないが、内部コードとして使っている分には
それほど大きな不満はないな。
内部コードとしてのUTF-8の問題は、マルチバイト処理を必要とするだけでなく、
全部char*になってしまうということ。これは一見単純で良いようだが、
Unicodeデータかどうかの識別がつきにくく、プログラミング言語の
オーバーロード機能なども利用しにくくなってしまう。
304:デフォルトの名無しさん
07/04/11 13:04:20
>>303
内部コードにUTF使うか?
エンディアン無視してUCSそのままだろ。
305:デフォルトの名無しさん
07/04/11 16:58:30
>>303
エンコーディングの問題とプログラミング言語の問題も分離できないくせに
偉そうなフリしてて笑えるw
306:デフォルトの名無しさん
07/04/11 17:35:01
ここは何のスレ?
307:デフォルトの名無しさん
07/04/12 19:06:05
ねぇ、2.6.3のサンプルでpenguinサンプルをビルドして動かしてみたんだけど、
ウィンドウを閉じようとしたら「ハンドルされていないエラーが発生しました」とかいうエラーが
出てしまう。他のOpenGL使うサンプルもみんなそうなんだけど、これってwxWidgetsのバグ?
308:307
07/04/13 14:14:50
>>307
原因がわかったぽい。
NVIDIAの提供しているデバッグ用ドライバだとエラーになるっぽい。
通常のGeForceドライバだとエラーにならなかった。
まさかドライバで動作が違うとはね。
309:デフォルトの名無しさん
07/04/13 21:16:38
wxPythonで使ってるんだけど、いわゆるショートカットキー(ホットキー)って
どうやって実装するの?
wxAcceleratorKeyはメニュー用のようだし、wxKeyEventはフォーカスされた
ウィンドウにしかトリガーしない。
リファレンスにもそれっぽい方法は見当たらなかったのだけど。
310:デフォルトの名無しさん
07/04/13 21:24:15
メニューのファイル(F)の"Alt+F"みたいなの?
それだったら"ファイル(&F)"でできるけど。
311:デフォルトの名無しさん
07/04/13 21:50:37
>>310
いや、違うだろ。
グローバルホットキーのことでしょ?
OS依存度高そうだな。
312:307
07/04/13 22:01:38
>>308
と思ったら、普通のGLUTアプリでもこけた。
こりゃwxWidgetsとは全然関係のない話で、単にドライバの仕様な予感。
スマンカッタ・・・。
313:309
07/04/13 22:18:52
>>311
それもだけど、当面はアプリケーションごとのCtrl+Zで取り消し、みたいなやつ。
wxMenu.Appendでitem="Undo\tCtrl+Z"とすればできるけど
これだとメニューを出せない場合に困るし、どうしたらよいものかと。
314:デフォルトの名無しさん
07/04/16 16:11:20
質問です。
条件によってUIを機能しない(ボタンだったら表示が薄くなって押せなくなる)ように
するにはどうすれば良いのでしょうか。
wxWidgetsのサンプルではEVT_UPDATE_UIというイベントを使っているようですが、
真似して試してみたところ上手く行きません。
315:デフォルトの名無しさん
07/04/16 16:31:43
Disable()
316:デフォルトの名無しさん
07/04/20 16:19:35
URLリンク(www.averdevelopment.com)
面白いの見つけた(windows限定みたいだし余り魅力的ではないかも…)
でも
dc = AggDC(wx.PaintDC(self))
b = aggBrush(self.dc.GetBrush())
p = aggPen(self.dc.GetPen())
みたいに使用するのは簡潔でいいと思うけど
def aggBrush(wxBrush):
def aggPen(wxPen):
を使うたびにどこかで定義しないといけないとか、これなら
素直にGDI+を使ったほうが良いかなという気もしないでもない。
というか日本語資料が一件しかないしな…
317:デフォルトの名無しさん
07/04/22 13:01:11
そんなもん使うことあるか?
ゲーム作るんならどにみちバッファ直接書いたほうが早いぞ
DirectXより早いぞ
318:デフォルトの名無しさん
07/05/05 02:07:54
誰か、コレを和訳してないかな?
Cross-Platform GUI Programming with wxWidgets
319:デフォルトの名無しさん
07/05/05 06:39:51
wxWidgetsによるプラットホーム非依存なグラフィカルユーザインターフェイスプログラミング
してみたけど。
320:デフォルトの名無しさん
07/05/05 11:16:14
ああ流石に寒いかなと思ってやらなかったのに…
321:デフォルトの名無しさん
07/05/05 22:59:17
だれか、これで2chブラウザつくらないのかな?
322:デフォルトの名無しさん
07/05/06 01:33:23
メリットは?
323:デフォルトの名無しさん
07/05/06 01:41:18
弱酸性です。
324:デフォルトの名無しさん
07/05/06 02:00:32
>メリット
ネタになるだろ?
だれかやって味噌~
325:デフォルトの名無しさん
07/05/06 02:25:38
C#の方が簡単だよ
326:デフォルトの名無しさん
07/05/06 02:48:26
>>324
ネタと言うか宣伝だわな
327:デフォルトの名無しさん
07/05/06 06:59:32
そんなあふれたもん作ってもしょうがないぽ
328:デフォルトの名無しさん
07/05/06 09:40:40
あふれた?
329:デフォルトの名無しさん
07/05/06 15:18:54
wxPythonなら Monarchってブラウザがあったらしい
URLリンク(monarch.sourceforge.jp)
330:デフォルトの名無しさん
07/05/06 18:26:03
輝けジャンケル(Woo! Ohowo!!)空高く(Owo!!)
技と力と心が通う ザビタン(hehe!!)
イビル(hehe!!)ガブラ(Woo!Ohooho!!)
うなれジャンケル! アクサイザー3!!
331:デフォルトの名無しさん
07/05/06 19:42:18
なんやねん
332:デフォルトの名無しさん
07/05/06 20:14:11
これの代わりになるものをみんなで作ろう!!
333:デフォルトの名無しさん
07/05/06 20:16:53
おちつけ!!!!
334:デフォルトの名無しさん
07/05/06 20:25:59
行く道ひとつ Ohowo!! ただひとつ
これが われらの 生きる道
アクサイザー!(Zanzan zazan!) アクサイザー!(Zanzan zazan!)
アクサイザー3!!
335:デフォルトの名無しさん
07/05/06 21:27:25
これって、あまり人気がないのか?
336:デフォルトの名無しさん
07/05/10 03:49:37
wxSocketBase::Callbackが2.8で完全に削除されてるけど
コマンドアプリでイベント処理する場合にはどうすれば?
自作クラスにイベントハンドラを作る方法ってあるの?
ちなみにプログラムの特性上スレッドは却下、同期処理も却下
337:デフォルトの名無しさん
07/05/10 04:31:27
EVT_SOCKET(id, func)
338:デフォルトの名無しさん
07/05/10 05:09:20
自己解決した
ふふり
339:デフォルトの名無しさん
07/05/11 20:01:03
みんなもっと使おうぜ!!
便利なんだから(?)
340:デフォルトの名無しさん
07/05/11 22:58:07
wxDateTimeについて
システムの時刻とアプリケーションの時刻を独立して管理したいんだけど
wxDateSpanとwxTimeSpanをwxDateTime::Nowに加算すればいいわけですね
問題はアプリケーションで管理すべき時刻とシステム時刻の差の計算はどうすればいいの?
wxDateSpanとwxTimeSpanを2個のwxDateTimeの差から計算するには?
341:デフォルトの名無しさん
07/05/11 23:24:29
あ、自己解決w
342:デフォルトの名無しさん
07/05/12 16:44:23
これ、人気ないですか?
343:デフォルトの名無しさん
07/05/12 20:18:49
どうしてそう思うの?
344:デフォルトの名無しさん
07/05/12 21:01:48
まだ何も思ってないのでは
345:デフォルトの名無しさん
07/05/12 21:53:13
中身が人気無いというより
コンパイルに数時間かかるし
ドキュメントはほとんど英語しかないし
容量が1G以上いくし
内部構造まで解析できないとバグと仕様の区別が付けられないから不安定だし
まあようするに厨房には無理w
346:デフォルトの名無しさん
07/05/12 22:33:32
メリットは何ですか?
347:デフォルトの名無しさん
07/05/12 22:47:36
環境に左右されない。
でも、コンパイルは各環境で行わないといけない。
MFCの代わり?
(似てるし)
348:デフォルトの名無しさん
07/05/12 23:51:09
>容量が1G以上いくし
まじっすか・・・
349:デフォルトの名無しさん
07/05/13 01:23:23
メリットは
MFCライクだけどMFCをさらに洗練したような感じになってること
完全クロスプラットフォームだからネットワーククライアント関係を作るなら便利
完全に無料だからライセンスを一切気にする必要がない
多国語サポートとかとにかく機能はすさまじく充実してるけどクラス設計が洗練されてて覚えやすい
350:デフォルトの名無しさん
07/05/13 01:30:20
クラス設計が洗練されているというのは
クラスの命名規約やパラメータのパターンやイベント処理方法がすべて統一されているから
ダイアログの表示の仕方を覚えると、フレーム作ったりMDI作ったりする方法がなんとなく想像できる
ちょっとそれらしい名前のクラスリファレンスを見るだけでダイアログを表示する方法と同じ方法で
いろんなものが表示できる
351:デフォルトの名無しさん
07/05/13 17:04:37
デメリット
英語が出来ないと辛い
352:デフォルトの名無しさん
07/05/13 19:36:07
C++のコード読めないとつらい。
当方、wxPython使い。
353:デフォルトの名無しさん
07/05/13 20:49:24
GUI以外のシステム依存機能が大量に入ってて便利な反面
使わない機能も勝手に付いてきて重い
354:デフォルトの名無しさん
07/05/14 00:01:36
重くは無い
でかいけどw
355:デフォルトの名無しさん
07/05/14 01:55:39
wxJoystickを使ってゲームパッドで操作するアプリを作成中なのですが、
ボタンの押下はポーリングでスキャンする方法しかないのでしょうか??
ボタンを長押ししたりすると、連打してるようになるし、
ボタンをちょっとだけ押しても反応しない時があるので困ってます。。
ボタンが押された時にだけイベントを発生させることはできないのでしょうか?
356:デフォルトの名無しさん
07/05/14 02:41:26
wxJoystick::SetCapture
357:デフォルトの名無しさん
07/05/14 10:06:15
すごく・・・おおきいです
358:デフォルトの名無しさん
07/05/14 13:49:10
大きい・・・のか
359:デフォルトの名無しさん
07/05/14 21:10:12
英語が出来ないので、断念 ⇒ Turbo C++ 使い方が良くわからないので断念 ⇒ WinAPIでガリガリ書く
みんなが辿る道
360:デフォルトの名無しさん
07/05/14 21:22:29
英語つっても文学作品じゃないんだから嵩が知れてるでしょ。
やっぱりデカイのが痛い。
361:デフォルトの名無しさん
07/05/14 21:33:18
>>360
デカイと痛いのか。。。
力を抜けよ。
362:デフォルトの名無しさん
07/05/14 21:43:01
Turbo C++ で十分
363:デフォルトの名無しさん
07/05/14 21:45:43
アッー!
364:デフォルトの名無しさん
07/05/14 21:45:59
>>361
いやまて、チ○コじゃなくて、オパーイかも知れんぞ。
365:デフォルトの名無しさん
07/05/14 22:22:07
>>364
そっちだって、でかいとジャンプするだけで痛いよ?
366:デフォルトの名無しさん
07/05/14 23:01:20
>>359
それはつまり,C++を理解できてない人が打ちのめされたあげく,
Cだけで書こうと思い立つもCすらよく理解できていないからハンドラの扱いが
よくわからなくてWinAPIのサンプルをコピペしてダイアログ作って
テキストボックスに身長を入力したら標準体重を表示するだけの
プログラムの計算ルーチンだけを書いていたら頭の中でガリガリなった
ような気がする状態のことですね。あるある。
367:デフォルトの名無しさん
07/05/15 01:46:53
wxScintillaの内部で利用しているScintillaをさ1.62から
1.71以上にしたいんだけど、どうすればいいの?
368:デフォルトの名無しさん
07/05/15 03:07:02
DLLにすればでかくないw
しかしDLLを作るには英語力が必要w
369:デフォルトの名無しさん
07/05/15 03:35:10
メモリに読み込んだらサイズは一緒
370:デフォルトの名無しさん
07/05/15 04:08:22
メモリ量なら.Netは誰にも負けないw
371:デフォルトの名無しさん
07/05/15 10:30:44
wxPython使ってるんでサイズ的には只のテキストファイルだ