- 1 名前:デフォルトの名無しさん mailto:sage [2006/09/09(土) 00:06:30 ]
- クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。
本家 www.wxwidgets.org/ wxWindows日本語プロジェクト wxwindowsjp.sourceforge.jp/ Let's wxWidgets dot-gray.s33.xrea.com/ (*)準備中(*) www.geocities.co.jp/SiliconValley-Cupertino/8526/ wxWindowsで始めるC++ GUIプログラミング www.h3.dion.ne.jp/~k5_n/wxwin/ wxWidgets でクロスプラットフォーム GUIアプリを作ろう namazu.org/~satoru/pub/uu-2004-08/ dW : Linux : wxWindowsの概要 www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html SunWorld Online:wxWindows――無名だが成熟したGUIツールキット www.idg.co.jp/sw/back/200102/20010219_01_report.html
- 82 名前:デフォルトの名無しさん [2006/11/23(木) 04:57:53 ]
- 退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマと対極に位置する存在
眠い・・・・('A`)
- 83 名前:デフォルトの名無しさん mailto:sage [2006/11/23(木) 08:26:57 ]
- >>82
[退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマ]と対極に位置する存在 退かぬ、媚びぬ、省みぬの三拍子を持った[プルグラマと対極に位置する]存在 ('A`) ドッチ?
- 84 名前:毛の生えたブリーフ mailto:sage [2006/11/23(木) 09:11:52 ]
- 南斗聖拳のみたいなツールキットですね。
ところで 問1、 神魔血破弾を必殺技とする鬼哭霊気の物語のタイトルは 問2、 「アステカの星」を額に持つ、プロレスの星の男の名は 問3、 「三ツ矢」と言えば 問4、 ベガ星連合軍から滅ぼされたグレン星の守護ロボットの名は
- 85 名前:デフォルトの名無しさん mailto:sage [2006/11/27(月) 10:15:55 ]
- >>83
超遅くなりましたが後者デス il||li ∧∧ /⌒ヽ) ..,,....〜(,_,,,).....,,,,....もうだめぽ
- 86 名前:デフォルトの名無しさん [2006/12/15(金) 23:04:27 ]
- 2.8.0リリース
jaist.dl.sourceforge.net/sourceforge/wxwindows/changes-2.8.0.txt
- 87 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 09:32:16 ]
- バージョンアップのペースが速いような…
- 88 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 18:22:17 ]
- サイザー専用JAVA演習場
pc8.2ch.net/test/read.cgi/tech/1165571435/
- 89 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 18:42:02 ]
- サイザーナックル
- 90 名前:デフォルトの名無しさん mailto:sage [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; を挿入すれば大丈夫っぽいです。
- 91 名前:デフォルトの名無しさん mailto:sage [2006/12/31(日) 22:20:34 ]
- >>90
sourceforgeでバグレポできる。
- 92 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 07:29:33 ]
- シンセサイザーのサイザー?
- 93 名前:デフォルトの名無しさん [2007/02/14(水) 18:03:27 ]
- Delphiみたくポトペタ開発できますか?
- 94 名前:デフォルトの名無しさん [2007/02/14(水) 19:40:56 ]
- VisualWxってどうですか?
- 95 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 05:30:10 ]
- Sizer
- 96 名前:デフォルトの名無しさん [2007/02/15(木) 08:56:49 ]
- VisualWx使ったアプリというかサンプルアプリがネットに転がってないですか?
- 97 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 19:48:21 ]
- wxWidgets でクロスプラットフォーム GUIアプリを作ろう
namazu.org/~satoru/pub/uu-2004-08/ ここ参考にしました
- 99 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 21:43:53 ]
- >>97
gmtime_rが見て意義。
- 100 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 03:32:09 ]
- wxGladeでなんとか簡単なGUIをつくりはじめたんだけど、参考に出来るコードがたくさん
載ってるページってない?
- 101 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 08:58:54 ]
- つ VisualWx
- 102 名前:デフォルトの名無しさん mailto:sage [2007/02/16(金) 18:26:44 ]
- >>100
samplesというディレクトリに60万行ほど載ってるけど、まだ足りないの?
- 103 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 01:33:16 ]
- >>102
samplesにはプルダウンメニューのサンプルがないよね。コンボボックスはあるけど。 どのクラスを使えばいいんだろう?
- 104 名前:デフォルトの名無しさん [2007/02/18(日) 14:13:59 ]
- >103
wxComboBoxのwindow styleにwxCB_DROPDOWNとか wxCB_READONLYを指定すればいいんじゃない?
- 105 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 15:50:22 ]
- wxChoiceのことか?
- 106 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 18:21:10 ]
- >>105
wxChoiceとwxComboBoxってどう違うん?
- 107 名前:デフォルトの名無しさん mailto:sage [2007/02/18(日) 18:30:04 ]
- wxChoiceは、あらかじめ用意されたリストから選ぶだけ。いわゆるプルダウンメニュ−。
wxComboBoxは、プルダウンメニュー+「メニューにない物も入力出来るテキストボックス」
- 108 名前:デフォルトの名無しさん [2007/02/23(金) 11:07:22 ]
- OSがT-Engineとかでウィンドウシステムが無いものにポーティングすることは可能ですか?
- 109 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 08:44:46 ]
- VisualWx使ってみたが、MicrosoftとかBorlandのRADとは
比べ物にならないな。 糞。
- 110 名前:デフォルトの名無しさん mailto:sage [2007/02/24(土) 16:36:05 ]
- エディタ手打ちで済むものをいちいちポトペタしなくてもいいじゃないか。
- 111 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 01:24:44 ]
- いや、やっぱエディタ打ちはやってて面倒だよ・・・。
- 112 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 01:27:39 ]
- アセンブラがあれば(ry
- 113 名前:デフォルトの名無しさん mailto:sage [2007/02/25(日) 03:00:56 ]
- ハンドアセンブルしてバイナリを直接入力すれば(ry
- 114 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 04:44:02 ]
- テキストコントロールの各行に対する行数(行番号)を表示させたいんだけど、
(行番号があらかじめ書いてある原稿用紙に書き込む感じにしたい) なんかいい方法ない?
- 115 名前:デフォルトの名無しさん mailto:sage [2007/02/26(月) 08:12:02 ]
- >>114
行番号表示用のウィンドウを作るのが多分一番楽
- 116 名前:114 mailto:sage [2007/02/27(火) 01:48:30 ]
- >>115
はい。それも考えたんですが、本文の行数が多い場合に縦にスクロールさせると、 行番号表示用の行数とずれてしまうという問題があり、詰まっています。 なにかいい手はないでしょうか?
- 117 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 10:53:40 ]
- >>116
テキストコントロールの内容を変更するたびに、 行頭に行番号を追加するようにすればいいんじゃね?
- 118 名前:デフォルトの名無しさん mailto:sage [2007/02/27(火) 17:01:25 ]
- 114, 116はかなりの初心者かな?
- 119 名前:114 mailto:sage [2007/02/27(火) 23:27:54 ]
- >>118
いままで簡単なスクリプトを書いて仕事(研究員)に使う程度だったのですが、 GUIつきのプログラムを作れば使いやすくなるし、同僚に自慢できるし、 上司によりアピールできるし。。。と思って始めたばかりです。 私のような初心者でも簡単なGUIが作れるという点ではwxwidgetsは素晴らしいと思います。 ただ、少し凝ろうとすると急にハードルが高く感じられます。今回の行番号表示など。 テキストエディタの表示オプションによくあったので、簡単に出来るのではと思ったのですが。
- 120 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 00:59:27 ]
- > 少し凝ろうとすると急にハードルが高く感じられます。
GUIフレームワークって何でもそうです。あらゆるものを御仕着せで用意するのは無理。 用意された機能を利用して実現できればそれでいいわけで、 これくらいはまだすんなり実現できる範疇に入るでしょうよ。 >>116は要はテキストコントロールをスクロールさせたら行番号表示が一緒に 動かないからずれるってことでしょ? それなら行番号表示の方も一緒に動かせればいい。 ということで次のステップはイベント処理ですね。 テキストコントロールのスクロールが発生したときを捕捉して、そのスクロール 量を知り、行番号表示の方に指定量のスクロールをさせる。
- 121 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 01:09:23 ]
- じゃあちょっと難しく感じるかもな。
基本的には、番号用のウインドウを作る→さもメインのパネルの一部かのように組み込む→ (位置を計算して)番号出す→スクロールイベントを取得→表示のアップデート(スクロール) って流れかねえ。 >テキストエディタの表示オプションによくあったので なんかこう、GUIをべたーっとした一枚の絵のように考えていたら 簡単にはできないよw あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
- 122 名前:114 mailto:sage [2007/02/28(水) 03:32:32 ]
- >>120,121
アドバイスありがとうございます。イベント処理はいままで扱ったことが ないので、調べてみます。 >あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。 失礼しました。 Windows XP, ActivePerl-5.8 でwxPerlを使っています。 wxPerlは比較的マイナーなようですね。
- 123 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 06:37:40 ]
- C++ならwxScintillaがつかえるが、他の言語ではラッパーか書かないとだめかも?
- 124 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/02/28(水) 23:55:44 ]
- 微妙だなw
つか、そのままコピペしたらエラー出たわw おいバグかよ、って思ったら、インデントの関係だったわ。 (SetNumはMyAppクラス内なのね。) これだからpythonはw
- 127 名前:114 mailto:sage [2007/03/01(木) 01:47:35 ]
- >>124
ありがとうございます。こういう参考に出来るコードがあればと思っていたところでした。 ぱっと見まだよく分からないんですが、参考にさせてもらいます。
- 128 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 13:20:33 ]
- >>126
すぐに気づけてよかったね。 これだから(ry
- 129 名前:デフォルトの名無しさん [2007/03/01(木) 16:19:36 ]
- Winでテキスト表示が場合によって問答無用でCour何とかいう2k/XPでFontlinkしないと日本語化けるフォント使わないように直ったんですか?
- 130 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 16:36:26 ]
- >>129
日本語でおk
- 131 名前:デフォルトの名無しさん mailto:sage [2007/03/01(木) 20:30:47 ]
- おれのエスパー能力で解析すると、
「Windowsでテキスト表示のフォントが変わったんですか?」 らしい。
- 132 名前:デフォルトの名無しさん [2007/03/02(金) 00:17:04 ]
- 変わるわけねーよ外人だもん。日本語が自分たちのフォントで表示できないことも知らないよ。
- 133 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 00:54:12 ]
- 俺もエスパーなんだけどunicode使わないようにすれば解決する
- 134 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 03:27:05 ]
- エスパーだけど非Unicodeにするとたちまち駄目文字問題が出る。
予言だけど本気でコレの作者に中国人なり日本人なりが頼まないと未来永劫にわたって変更はない。
- 135 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 11:08:47 ]
- CourなんとかってCourierのことだな
文字化けしないフォントを使わなくなったのならいいんじゃないか ちなみにエスパーだけど
- 136 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 13:12:04 ]
- じゃあ俺もエスパー。
- 137 名前:デフォルトの名無しさん mailto:sage [2007/03/02(金) 23:17:02 ]
- きてます。きてます。
- 138 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 02:38:55 ]
- wxPanelとかから継承したら?
- 140 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 03:13:20 ]
- >>139
wxPanelだと、独立したウィンドウになってしまいませんか? ウィンドウ内のコンポーネントとして配置できるような、SpinCtrlとSliderをセットにしたものを作りたいのですが・・・。
- 141 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 12:29:07 ]
- 最近wxWidgets忘れてるのでとりあえず思い付いたことを適当に書く
- wxEventHandlerを継承してないとイベント扱えないのでは - DECLARE_EVENT_TABLE必要 まあとにかくEvent Handling Overviewくらいは読めと。
- 142 名前:デフォルトの名無しさん mailto:sage [2007/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 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 00:42:03 ]
- 多分、コントロール自身かその親ウィンドウじゃないと、
コントロールからのイベントが到達しないんじゃない? やっぱ、wxPanel継承して、そのハンドラで受けるのがいいと思う。 そのPanelをひとつのコンポーネントとしてとらえればいいわけだし、 他パネルに配置もできるでしょ? どうしても嫌なら、wxEvtHandler継承で、 m_slider->Connect( SliderPage_Slider, wxEVT_COMMAND_SLIDER_UPDATED, wxCommandEventHandler(SliderAndSpinCtrlSet::OnSlider), NULL, this); とすればできる気がする。動作確認してないけど。
- 144 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 10:28:39 ]
- >>143
wxPanel継承でできました!ありがとうございます。 というかwxPanelをコンポーネントとして配置できる事を知りませんでした。 まだ使い始めたばかりなもので・・・。
- 145 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 10:54:48 ]
- 質問です。
ウィンドウを二つ表示しているんですが、 片方で何らかの操作をした結果の値を、もう一方のウィンドウ上に配置したスライダー 等のコンポーネントにリアルタイムに反映させたいのですが、何か方法はないでしょうか。 具体的に言うと、片方はwxGLCanvasを継承したクラスで、その画面上をドラッグすると ある値が変わるのですが、ドラッグ中にもう一方のウィンドウ(wxPanel)上の スライダー等の表示をその値を反映したものにリアルタイムに更新したいのです。 しかし、ドラッグ中にスライダー等にSetValueで値をセットしても、そのウィンドウに フォーカスが移動するまでスライダー等の表示が更新されません。 仕方が無いのでドラッグ中にwxPanelのSetFocus()メソッドを呼んで無理やり更新させていますが、 なんか気持ち悪いです。 他に方法はないでしょうか。
- 146 名前:デフォルトの名無しさん mailto:sage [2007/03/08(木) 11:02:26 ]
- >>145
すみません。自己解決しました。 Update()関数で更新できました。お騒がせしました(汗)
- 147 名前:デフォルトの名無しさん [2007/03/10(土) 00:07:38 ]
- wxPanelのサイズを実行時に変更するにはどうしたらいいでしょうか?
- 148 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 00:35:21 ]
- 実行時に変更じゃわかんねーな
実行後に変更か?それともコンパイル時に指定か?
- 149 名前:デフォルトの名無しさん [2007/03/10(土) 00:41:52 ]
- コンパイル時ではなく,アプリケーションの実行時です.
読み込んだ画像の大きさに合わせて変更するような感じです. 言葉足らずですいません..
- 150 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:14:44 ]
- wxWindow::SetClientSizeかなあ
- 151 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:15:07 ]
- wxImage image("foo.jpg");
panel->SetSize(image.GetWidth(), image.GetHeight()); みたいな感じでいいんじゃない?
- 152 名前:デフォルトの名無しさん mailto:sage [2007/03/18(日) 22:42:36 ]
- みなさん。
wxFrameにwxGLCanvasセットしているときって、 なぜかwxMessageBoxの表示が全面に出てこなくて、wxFrameを最小化するか、クイック起動の「デスクトップを表示」をするかしないと、 wxMessageBoxが現れなかったりしませんか? ちなみに当方wxWidgets1.6.3使用。 1.8.2だと治ってるかなぁ・・・。
- 153 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 08:48:42 ]
- >>152
2.8じゃなくて?
- 154 名前:デフォルトの名無しさん mailto:sage [2007/03/19(月) 09:16:38 ]
- >>153
そうでした。2.6.3使用で、2.8だと直ってるかな、でした。
- 155 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 09:01:33 ]
- Mac の wxPython で使ってみてるんだけど、
wx.DC.GetTextExtent() がラテン文字以外は正しい幅を返してこないようだ。 Windows だとちゃんととれるのに。 これはどこの問題なんだ?
- 156 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 17:10:57 ]
- wxWidgetsの問題.諦めよ.
- 157 名前:デフォルトの名無しさん mailto:sage [2007/04/03(火) 17:52:33 ]
- べつに諦めなくても自分で書いて送りつければいいんだけどね。
結構反応はやいよ。時々永遠に放置されるけどw 実装具合はポートによって様々。 一応実装されていても細かいところで違っていて、それを吸収する クラスを書かないといけないこともある。
- 158 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 16:41:07 ]
- groups.yahoo.co.jp/group/wxmljp/
日本語版メーリングリストが無いから作っといた テンプレにいれといて
- 159 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 00:08:15 ]
- なぁなぁ
wxWidgetsってさ、UTFの扱いどうなってるな?F8とか押すとさ、たまーにゴミ文字列 挿入されるんだがあれまじキレそうになるからなんとかしたいんだけど どうすればいい?
- 160 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 00:49:26 ]
- コンパイラをUnicodeにすればいいんでない?
- 161 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 01:42:17 ]
- 155だけど、日本語のフォントにしたら日本語についてはちゃんと取れた。
フォントのフォールバックが起こると取れなくなるみたい。 157のいう実装上の差異というところか。直せるのかな。 wxMAC のソースをちょっと覗いてみたら、元のAPIの仕様でそうなってるようにも見える。 Mac 詳しくないのでわかんないけど。 wxて Unicode や XML に詳しい人がコアにいないんじゃないかと思うことがある。 XRC の文法もなんか素人くさいよね。size をリテラルとして指定するとことか。 Uniscribe や TextLayoutManager(だっけ?)相当の機能がつくといいんだけどな。 ワイド文字列でコンパイルしただけじゃUnicode対応とはいえなかろう。 でも古典的な範囲でふつうに使ってる分にはやりやすい。嫌いなわけではないのよ。 あとインプットメソッドまわりは日本人がやらないと絶対始まらないと思うぞ。
- 162 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 10:10:45 ]
- ソース見てきた。Unicode実装してない
嘘Unicode絶対間違って実装してるからバグバグになる。 最悪buffer overflowとかも平気でありありな実装で こいつら死ねよって今からメール送りまくろうと思ってます。 メインの開発者全員にしねよねハゲゴルァメールを送りつけて気を引き締めて あげたいであります。
- 163 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 23:49:22 ]
- >>162
そんなことよりパッチ送ってやれ。 どーせ理解できねーんだから。
- 164 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 04:19:49 ]
- ソース見てないけど
Unicodeが問題になることといえばコードの上下関係だけじゃないの? 日本語をソートするとばらばらになるとかでしょ 基底はWindowsAPIをUnicode版に切り替えるだけだから切り替えミスでもしてない限りはOverFlowはないと思うけど 切り替えしてないならアフォだけど LinuxとMacは単純にUnicodeAPIが無いから非対応という話ではないのか? ちなみに一からlinuxやMacでUnicode作ろうと思ったら全部書き換えないと無理だろ
- 165 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 07:36:26 ]
- >>164
>LinuxとMacは単純にUnicodeAPIが無い UnicodeAPI って何だよw もしかして Windows 以外では UTF-8 とか 16 とか弄れないと思ってるの?
- 166 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 13:27:31 ]
- kernelレベルでデフォルトキャラセットをUnicodeにしないと無理でしょ
- 167 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 14:31:15 ]
- ふぅん、カーネルレベルねぇ...
デフォルトキャラセットとな... 全部書き換えないと無理と... Linux も Mac も使ったこと無いのに色々知ってるんだ 偉いねえ
- 168 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 16:54:12 ]
- Unicodeはkernelレベルでサポートするべきものだったんだよ!
- 169 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 16:55:32 ]
- な,なんだってーっ!
- 170 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 17:47:29 ]
- >>168
当然そうあるべきだと思うが。 ファイルシステムやカーネルオブジェクト等に使われる名前の エンコーディングに一貫性が無いとロクなことにならない。 名前のエンコーディングが不明では、文字列として正しく処理をしようが無い。 一方名前にエンコーディング情報も付与することにしたら無駄に データ量が増えインタフェースも複雑化するだけ。 だから、Windows NTやPlan 9はUnicodeだよな。 Unixが時代遅れなだけ。
- 171 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 17:59:31 ]
- 一応書いておくと、カーネルモジュールでもファイルシステムとかは
Unicode 扱えないとちょっとダサイ。でもこれはユーザランドのアプリ とは関係無い話。
- 172 名前:171 mailto:sage [2007/04/08(日) 18:04:28 ]
- スマン。ボーッとしてたら被った。
>>170 "カーネルオブジェクト等に使われる名前" って何? ASCII Code の範囲を超える文字を使うケースってあるの? つか、カーネルモジュールで Unicode サポートが必要なのって ファイルシステムだけだよね? そして普通の Un*x なら kiconv とか(似た様な名前の)機構が既に入ってるよね? >>170 が時代遅れなだけ?
- 173 名前:171 mailto:sage [2007/04/08(日) 18:12:33 ]
- 最後ちょっと下らない煽りっぽくなっちゃったが、カーネル内で実装されていようがいまいが、
ユーザランドのアプリで Unicode を使うには全く問題無いよ。全部書き換える必要なんて 全く無い。それと Mac も Linux もデフォで Unicode 使えるようになってるので、その意味 でも問題無い。
- 174 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:35:28 ]
- いや別にネットからダウンロードしたUTF-8の文字をバッファにいれてカーネルEUCの状態で表示しようがしまいが勝手だし
そのためのクラス郡はwxWidgetsに用意されてるのだから好きにすればいいのでは? 今の話ってそういう話じゃないよね Unicodeの入ったバッファの中身をEUCのAPIにパスして文字が化けるんですけどとかそういうこと言ってんでしょ? そりゃ当たり前だって言ってるだけw
- 175 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:40:56 ]
- strcpyとかstrlenとかAPIだよ
Unicodeの中身そのまま渡したらおかしくなるって
- 176 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:42:08 ]
- >>174
>EUCのAPI もっとくやしく。
- 177 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 18:51:32 ]
- Windowsは2個用意してる
strcpyだとstrcpyAとstrcpyWと2種類のAPIが存在してコンパイルする時に何をベースにプログラムを動かすかで 自動的に切り替わるようになってる linuxやMacはこういう機構が無いのだから完全にカーネル依存になる 基本的にカーネルの扱う文字コード以外ではコンパイルしてはいけない 別の文字コードを扱う時はバッファ内で変換してからすべての処理に引き渡すようにしないといけない
- 178 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 19:26:12 ]
- >カーネル依存になる
だから、ならねっての。 C/C++ の標準ライブラリとカーネルの話をごっちゃにしてるね。 ついでに言うとロケールについても分かっちゃいない。
- 179 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 19:40:11 ]
- kiconvって、kernel内部コードをUTF-8で統一
全てのシステムコールの界面でLC_CTYPEを使ってchar*のエンコード変換を 行うと解釈していいのかな? それならWindowsの動作に近いんだが。 いや、kernel側にはユーザ側のLC_CTYPEは分からないか。 むしろシステムコールにラッパーかませるべき?どういう実装になってるの?
- 180 名前:デフォルトの名無しさん mailto:sage [2007/04/08(日) 19:44:56 ]
- 話が全然噛み合ってねえな…
- 181 名前:デフォルトの名無しさん mailto:sage [2007/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 mailto:sage [2007/04/08(日) 19:47:41 ]
- よくわからないんだけど。
kiconvってカーネルパッチでしょ? コールゲート通過後の、カーネル空間に入っちゃったただのchar*のデータを どうエンコード変換すべきか、どうやって判断してるんだ? Windows APIの場合は、APIのレイヤで全部UTF-16にしてるよ。 その層だと判断できるし、カーネル内部がUTF-16に閉じてクリーンになるから。
|

|