【GUI】wxWidgets(旧wxWindows) その3【サイザー】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/09/09(土) 00:06:30本家
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
0083デフォルトの名無しさん
2006/11/23(木) 08:26:57[退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマ]と対極に位置する存在
退かぬ、媚びぬ、省みぬの三拍子を持った[プルグラマと対極に位置する]存在
('A`) ドッチ?
0084毛の生えたブリーフ
2006/11/23(木) 09:11:52ところで
問1、 神魔血破弾を必殺技とする鬼哭霊気の物語のタイトルは
問2、 「アステカの星」を額に持つ、プロレスの星の男の名は
問3、 「三ツ矢」と言えば
問4、 ベガ星連合軍から滅ぼされたグレン星の守護ロボットの名は
0085デフォルトの名無しさん
2006/11/27(月) 10:15:55超遅くなりましたが後者デス
il||li
∧∧
/⌒ヽ)
..,,....〜(,_,,,).....,,,,....もうだめぽ
0086デフォルトの名無しさん
2006/12/15(金) 23:04:27http://jaist.dl.sourceforge.net/sourceforge/wxwindows/changes-2.8.0.txt
0087デフォルトの名無しさん
2006/12/16(土) 09:32:160088デフォルトの名無しさん
2006/12/19(火) 18:22:17http://pc8.2ch.net/test/read.cgi/tech/1165571435/
0089デフォルトの名無しさん
2006/12/19(火) 18:42:020090デフォルトの名無しさん
2006/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; を挿入すれば大丈夫っぽいです。
0091デフォルトの名無しさん
2006/12/31(日) 22:20:34sourceforgeでバグレポできる。
0092デフォルトの名無しさん
2007/02/14(水) 07:29:330093デフォルトの名無しさん
2007/02/14(水) 18:03:270094デフォルトの名無しさん
2007/02/14(水) 19:40:560095デフォルトの名無しさん
2007/02/15(木) 05:30:100096デフォルトの名無しさん
2007/02/15(木) 08:56:490097デフォルトの名無しさん
2007/02/15(木) 19:44:08-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
0098デフォルトの名無しさん
2007/02/15(木) 19:48:21http://namazu.org/~satoru/pub/uu-2004-08/
ここ参考にしました
0099デフォルトの名無しさん
2007/02/15(木) 21:43:53gmtime_rが見て意義。
0100デフォルトの名無しさん
2007/02/16(金) 03:32:09載ってるページってない?
0101デフォルトの名無しさん
2007/02/16(金) 08:58:540102デフォルトの名無しさん
2007/02/16(金) 18:26:44samplesというディレクトリに60万行ほど載ってるけど、まだ足りないの?
0103デフォルトの名無しさん
2007/02/18(日) 01:33:16samplesにはプルダウンメニューのサンプルがないよね。コンボボックスはあるけど。
どのクラスを使えばいいんだろう?
0104デフォルトの名無しさん
2007/02/18(日) 14:13:59wxComboBoxのwindow styleにwxCB_DROPDOWNとか
wxCB_READONLYを指定すればいいんじゃない?
0105デフォルトの名無しさん
2007/02/18(日) 15:50:220106デフォルトの名無しさん
2007/02/18(日) 18:21:10wxChoiceとwxComboBoxってどう違うん?
0107デフォルトの名無しさん
2007/02/18(日) 18:30:04wxComboBoxは、プルダウンメニュー+「メニューにない物も入力出来るテキストボックス」
0108デフォルトの名無しさん
2007/02/23(金) 11:07:220109デフォルトの名無しさん
2007/02/24(土) 08:44:46比べ物にならないな。
糞。
0110デフォルトの名無しさん
2007/02/24(土) 16:36:050111デフォルトの名無しさん
2007/02/25(日) 01:24:440112デフォルトの名無しさん
2007/02/25(日) 01:27:390113デフォルトの名無しさん
2007/02/25(日) 03:00:560114デフォルトの名無しさん
2007/02/26(月) 04:44:02(行番号があらかじめ書いてある原稿用紙に書き込む感じにしたい)
なんかいい方法ない?
0115デフォルトの名無しさん
2007/02/26(月) 08:12:02行番号表示用のウィンドウを作るのが多分一番楽
0116114
2007/02/27(火) 01:48:30はい。それも考えたんですが、本文の行数が多い場合に縦にスクロールさせると、
行番号表示用の行数とずれてしまうという問題があり、詰まっています。
なにかいい手はないでしょうか?
0117デフォルトの名無しさん
2007/02/27(火) 10:53:40テキストコントロールの内容を変更するたびに、
行頭に行番号を追加するようにすればいいんじゃね?
0118デフォルトの名無しさん
2007/02/27(火) 17:01:250119114
2007/02/27(火) 23:27:54いままで簡単なスクリプトを書いて仕事(研究員)に使う程度だったのですが、
GUIつきのプログラムを作れば使いやすくなるし、同僚に自慢できるし、
上司によりアピールできるし。。。と思って始めたばかりです。
私のような初心者でも簡単なGUIが作れるという点ではwxwidgetsは素晴らしいと思います。
ただ、少し凝ろうとすると急にハードルが高く感じられます。今回の行番号表示など。
テキストエディタの表示オプションによくあったので、簡単に出来るのではと思ったのですが。
0120デフォルトの名無しさん
2007/02/28(水) 00:59:27GUIフレームワークって何でもそうです。あらゆるものを御仕着せで用意するのは無理。
用意された機能を利用して実現できればそれでいいわけで、
これくらいはまだすんなり実現できる範疇に入るでしょうよ。
>>116は要はテキストコントロールをスクロールさせたら行番号表示が一緒に
動かないからずれるってことでしょ? それなら行番号表示の方も一緒に動かせればいい。
ということで次のステップはイベント処理ですね。
テキストコントロールのスクロールが発生したときを捕捉して、そのスクロール
量を知り、行番号表示の方に指定量のスクロールをさせる。
0121デフォルトの名無しさん
2007/02/28(水) 01:09:23基本的には、番号用のウインドウを作る→さもメインのパネルの一部かのように組み込む→
(位置を計算して)番号出す→スクロールイベントを取得→表示のアップデート(スクロール)
って流れかねえ。
>テキストエディタの表示オプションによくあったので
なんかこう、GUIをべたーっとした一枚の絵のように考えていたら
簡単にはできないよw
あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
0122114
2007/02/28(水) 03:32:32アドバイスありがとうございます。イベント処理はいままで扱ったことが
ないので、調べてみます。
>あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
失礼しました。
Windows XP, ActivePerl-5.8 でwxPerlを使っています。
wxPerlは比較的マイナーなようですね。
0123デフォルトの名無しさん
2007/02/28(水) 06:37:400124デフォルトの名無しさん
2007/02/28(水) 13:10:52import 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
(つづく)
0125デフォルトの名無しさん
2007/02/28(水) 13:13:13Text = 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分くらいで単純に作ったので、細かいツッコミは無しでお願いします。
0126デフォルトの名無しさん
2007/02/28(水) 23:55:44つか、そのままコピペしたらエラー出たわw
おいバグかよ、って思ったら、インデントの関係だったわ。
(SetNumはMyAppクラス内なのね。)
これだからpythonはw
0127114
2007/03/01(木) 01:47:35ありがとうございます。こういう参考に出来るコードがあればと思っていたところでした。
ぱっと見まだよく分からないんですが、参考にさせてもらいます。
0128デフォルトの名無しさん
2007/03/01(木) 13:20:33すぐに気づけてよかったね。
これだから(ry
0129デフォルトの名無しさん
2007/03/01(木) 16:19:360130デフォルトの名無しさん
2007/03/01(木) 16:36:26日本語でおk
0131デフォルトの名無しさん
2007/03/01(木) 20:30:47「Windowsでテキスト表示のフォントが変わったんですか?」
らしい。
0132デフォルトの名無しさん
2007/03/02(金) 00:17:040133デフォルトの名無しさん
2007/03/02(金) 00:54:120134デフォルトの名無しさん
2007/03/02(金) 03:27:05予言だけど本気でコレの作者に中国人なり日本人なりが頼まないと未来永劫にわたって変更はない。
0135デフォルトの名無しさん
2007/03/02(金) 11:08:47文字化けしないフォントを使わなくなったのならいいんじゃないか
ちなみにエスパーだけど
0136デフォルトの名無しさん
2007/03/02(金) 13:12:040137デフォルトの名無しさん
2007/03/02(金) 23:17:020138デフォルトの名無しさん
2007/03/03(土) 19:44:35次のようなクラスを作ったのですが、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などを持っていないのが原因という事は分かったのですが、代替案が見つからず困っています。
どなたか上手いやり方をご存じないでしょうか?
0139デフォルトの名無しさん
2007/03/04(日) 02:38:550140デフォルトの名無しさん
2007/03/04(日) 03:13:20wxPanelだと、独立したウィンドウになってしまいませんか?
ウィンドウ内のコンポーネントとして配置できるような、SpinCtrlとSliderをセットにしたものを作りたいのですが・・・。
0141デフォルトの名無しさん
2007/03/04(日) 12:29:07- wxEventHandlerを継承してないとイベント扱えないのでは
- DECLARE_EVENT_TABLE必要
まあとにかくEvent Handling Overviewくらいは読めと。
0142デフォルトの名無しさん
2007/03/04(日) 13:08:40wxEvtHanderを継承してみました。
.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今読んでいますが、難しいですね・・・。
0143デフォルトの名無しさん
2007/03/05(月) 00:42:03コントロールからのイベントが到達しないんじゃない?
やっぱ、wxPanel継承して、そのハンドラで受けるのがいいと思う。
そのPanelをひとつのコンポーネントとしてとらえればいいわけだし、
他パネルに配置もできるでしょ?
どうしても嫌なら、wxEvtHandler継承で、
m_slider->Connect(
SliderPage_Slider,
wxEVT_COMMAND_SLIDER_UPDATED,
wxCommandEventHandler(SliderAndSpinCtrlSet::OnSlider),
NULL, this);
とすればできる気がする。動作確認してないけど。
0144デフォルトの名無しさん
2007/03/05(月) 10:28:39wxPanel継承でできました!ありがとうございます。
というかwxPanelをコンポーネントとして配置できる事を知りませんでした。
まだ使い始めたばかりなもので・・・。
0145デフォルトの名無しさん
2007/03/08(木) 10:54:48ウィンドウを二つ表示しているんですが、
片方で何らかの操作をした結果の値を、もう一方のウィンドウ上に配置したスライダー
等のコンポーネントにリアルタイムに反映させたいのですが、何か方法はないでしょうか。
具体的に言うと、片方はwxGLCanvasを継承したクラスで、その画面上をドラッグすると
ある値が変わるのですが、ドラッグ中にもう一方のウィンドウ(wxPanel)上の
スライダー等の表示をその値を反映したものにリアルタイムに更新したいのです。
しかし、ドラッグ中にスライダー等にSetValueで値をセットしても、そのウィンドウに
フォーカスが移動するまでスライダー等の表示が更新されません。
仕方が無いのでドラッグ中にwxPanelのSetFocus()メソッドを呼んで無理やり更新させていますが、
なんか気持ち悪いです。
他に方法はないでしょうか。
0146デフォルトの名無しさん
2007/03/08(木) 11:02:26すみません。自己解決しました。
Update()関数で更新できました。お騒がせしました(汗)
0147デフォルトの名無しさん
2007/03/10(土) 00:07:380148デフォルトの名無しさん
2007/03/10(土) 00:35:21実行後に変更か?それともコンパイル時に指定か?
0149デフォルトの名無しさん
2007/03/10(土) 00:41:52読み込んだ画像の大きさに合わせて変更するような感じです.
言葉足らずですいません..
0150デフォルトの名無しさん
2007/03/10(土) 01:14:440151デフォルトの名無しさん
2007/03/10(土) 01:15:07panel->SetSize(image.GetWidth(), image.GetHeight());
みたいな感じでいいんじゃない?
0152デフォルトの名無しさん
2007/03/18(日) 22:42:36wxFrameにwxGLCanvasセットしているときって、
なぜかwxMessageBoxの表示が全面に出てこなくて、wxFrameを最小化するか、クイック起動の「デスクトップを表示」をするかしないと、
wxMessageBoxが現れなかったりしませんか?
ちなみに当方wxWidgets1.6.3使用。
1.8.2だと治ってるかなぁ・・・。
0153デフォルトの名無しさん
2007/03/19(月) 08:48:422.8じゃなくて?
0154デフォルトの名無しさん
2007/03/19(月) 09:16:38そうでした。2.6.3使用で、2.8だと直ってるかな、でした。
0155デフォルトの名無しさん
2007/03/29(木) 09:01:33wx.DC.GetTextExtent() がラテン文字以外は正しい幅を返してこないようだ。
Windows だとちゃんととれるのに。
これはどこの問題なんだ?
0156デフォルトの名無しさん
2007/04/03(火) 17:10:570157デフォルトの名無しさん
2007/04/03(火) 17:52:33結構反応はやいよ。時々永遠に放置されるけどw
実装具合はポートによって様々。
一応実装されていても細かいところで違っていて、それを吸収する
クラスを書かないといけないこともある。
0158デフォルトの名無しさん
2007/04/04(水) 16:41:07日本語版メーリングリストが無いから作っといた
テンプレにいれといて
0159デフォルトの名無しさん
2007/04/07(土) 00:08:15wxWidgetsってさ、UTFの扱いどうなってるな?F8とか押すとさ、たまーにゴミ文字列
挿入されるんだがあれまじキレそうになるからなんとかしたいんだけど
どうすればいい?
0160デフォルトの名無しさん
2007/04/07(土) 00:49:260161デフォルトの名無しさん
2007/04/07(土) 01:42:17フォントのフォールバックが起こると取れなくなるみたい。
157のいう実装上の差異というところか。直せるのかな。
wxMAC のソースをちょっと覗いてみたら、元のAPIの仕様でそうなってるようにも見える。
Mac 詳しくないのでわかんないけど。
wxて Unicode や XML に詳しい人がコアにいないんじゃないかと思うことがある。
XRC の文法もなんか素人くさいよね。size をリテラルとして指定するとことか。
Uniscribe や TextLayoutManager(だっけ?)相当の機能がつくといいんだけどな。
ワイド文字列でコンパイルしただけじゃUnicode対応とはいえなかろう。
でも古典的な範囲でふつうに使ってる分にはやりやすい。嫌いなわけではないのよ。
あとインプットメソッドまわりは日本人がやらないと絶対始まらないと思うぞ。
0162デフォルトの名無しさん
2007/04/07(土) 10:10:45嘘Unicode絶対間違って実装してるからバグバグになる。
最悪buffer overflowとかも平気でありありな実装で
こいつら死ねよって今からメール送りまくろうと思ってます。
メインの開発者全員にしねよねハゲゴルァメールを送りつけて気を引き締めて
あげたいであります。
0163デフォルトの名無しさん
2007/04/07(土) 23:49:22そんなことよりパッチ送ってやれ。
どーせ理解できねーんだから。
0164デフォルトの名無しさん
2007/04/08(日) 04:19:49Unicodeが問題になることといえばコードの上下関係だけじゃないの?
日本語をソートするとばらばらになるとかでしょ
基底はWindowsAPIをUnicode版に切り替えるだけだから切り替えミスでもしてない限りはOverFlowはないと思うけど
切り替えしてないならアフォだけど
LinuxとMacは単純にUnicodeAPIが無いから非対応という話ではないのか?
ちなみに一からlinuxやMacでUnicode作ろうと思ったら全部書き換えないと無理だろ
0165デフォルトの名無しさん
2007/04/08(日) 07:36:26>LinuxとMacは単純にUnicodeAPIが無い
UnicodeAPI って何だよw
もしかして Windows 以外では UTF-8 とか 16 とか弄れないと思ってるの?
0166デフォルトの名無しさん
2007/04/08(日) 13:27:310167デフォルトの名無しさん
2007/04/08(日) 14:31:15デフォルトキャラセットとな...
全部書き換えないと無理と...
Linux も Mac も使ったこと無いのに色々知ってるんだ
偉いねえ
0168デフォルトの名無しさん
2007/04/08(日) 16:54:120169デフォルトの名無しさん
2007/04/08(日) 16:55:320170デフォルトの名無しさん
2007/04/08(日) 17:47:29当然そうあるべきだと思うが。
ファイルシステムやカーネルオブジェクト等に使われる名前の
エンコーディングに一貫性が無いとロクなことにならない。
名前のエンコーディングが不明では、文字列として正しく処理をしようが無い。
一方名前にエンコーディング情報も付与することにしたら無駄に
データ量が増えインタフェースも複雑化するだけ。
だから、Windows NTやPlan 9はUnicodeだよな。
Unixが時代遅れなだけ。
0171デフォルトの名無しさん
2007/04/08(日) 17:59:31Unicode 扱えないとちょっとダサイ。でもこれはユーザランドのアプリ
とは関係無い話。
0172171
2007/04/08(日) 18:04:28>>170
"カーネルオブジェクト等に使われる名前" って何?
ASCII Code の範囲を超える文字を使うケースってあるの?
つか、カーネルモジュールで Unicode サポートが必要なのって
ファイルシステムだけだよね? そして普通の Un*x なら kiconv
とか(似た様な名前の)機構が既に入ってるよね?
>>170 が時代遅れなだけ?
0173171
2007/04/08(日) 18:12:33ユーザランドのアプリで Unicode を使うには全く問題無いよ。全部書き換える必要なんて
全く無い。それと Mac も Linux もデフォで Unicode 使えるようになってるので、その意味
でも問題無い。
0174デフォルトの名無しさん
2007/04/08(日) 18:35:28そのためのクラス郡はwxWidgetsに用意されてるのだから好きにすればいいのでは?
今の話ってそういう話じゃないよね
Unicodeの入ったバッファの中身をEUCのAPIにパスして文字が化けるんですけどとかそういうこと言ってんでしょ?
そりゃ当たり前だって言ってるだけw
0175デフォルトの名無しさん
2007/04/08(日) 18:40:56Unicodeの中身そのまま渡したらおかしくなるって
0176デフォルトの名無しさん
2007/04/08(日) 18:42:08>EUCのAPI
もっとくやしく。
0177デフォルトの名無しさん
2007/04/08(日) 18:51:32strcpyだとstrcpyAとstrcpyWと2種類のAPIが存在してコンパイルする時に何をベースにプログラムを動かすかで
自動的に切り替わるようになってる
linuxやMacはこういう機構が無いのだから完全にカーネル依存になる
基本的にカーネルの扱う文字コード以外ではコンパイルしてはいけない
別の文字コードを扱う時はバッファ内で変換してからすべての処理に引き渡すようにしないといけない
0178デフォルトの名無しさん
2007/04/08(日) 19:26:12だから、ならねっての。
C/C++ の標準ライブラリとカーネルの話をごっちゃにしてるね。
ついでに言うとロケールについても分かっちゃいない。
0179デフォルトの名無しさん
2007/04/08(日) 19:40:11全てのシステムコールの界面でLC_CTYPEを使ってchar*のエンコード変換を
行うと解釈していいのかな?
それならWindowsの動作に近いんだが。
いや、kernel側にはユーザ側のLC_CTYPEは分からないか。
むしろシステムコールにラッパーかませるべき?どういう実装になってるの?
0180デフォルトの名無しさん
2007/04/08(日) 19:44:560181デフォルトの名無しさん
2007/04/08(日) 19:45:09> strcpyだとstrcpyAとstrcpyW
1. 存在しません。
2. strcpy()はWindows APIではなくC標準のランタイムライブラリです。
3. MSVC++はC標準ランタイムライブラリに対しても、TCHARベースの
汎用テキストマッピングの仕掛けは提供しています。
strcpy()の場合は、_tcscpy() -> strcpy() / wcscpy()です。
0182179
2007/04/08(日) 19:47:41kiconvってカーネルパッチでしょ?
コールゲート通過後の、カーネル空間に入っちゃったただのchar*のデータを
どうエンコード変換すべきか、どうやって判断してるんだ?
Windows APIの場合は、APIのレイヤで全部UTF-16にしてるよ。
その層だと判断できるし、カーネル内部がUTF-16に閉じてクリーンになるから。
■ このスレッドは過去ログ倉庫に格納されています