【GUI】wxWidgets(旧w ..
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で統一されているのですか
正直、君のレベルに合わせて回答を作るのは「単純な話」じゃないと思うよ。
誰にとっても。
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5157日前に更新/262 KB
担当:undef