【GUI】wxWidgets(旧wxWindows) その3【サイザー】
車輪の再発明をしても仕方がありませんし、公開に値するしろものでもありませんので 将来的にもソースは出せないと思います。 ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。
7 :
デフォルトの名無しさん :2006/09/09(土) 08:36:39
8 :
デフォルトの名無しさん :2006/10/03(火) 21:40:46
前スレの
>>978 , 985
wxSocket使おうとしているので、一応確認したが、
受信スレッドを内部で別に立てているなら、
wxUSE_THREADSを1と定義してビルドする必要があるのだろう。
wxMSWだけでの検証ですまんが、コードを追ってみると、
メインスレッドのみ、wxYieldを呼び出している。
wxYieldは内部でwxTheApp->Yield()を呼んでいるだけで
ここがマルチスレッドセーフではない模様。
他のスレッドはwxThread::Yield()を呼んでいる。
wxThread::Yield()の内部はSleep(0)なので、問題なし。
wxUSE_THREADSが無い時点でスレッドを立てるような
物は使ってはいけないのでイベントハンドラを定義せずに
ブロッキングで組む必要があるということじゃないのかな?
ところで、スレッド無しはわざわざヘッダを書き直さないと
そのようにはならないと思うのだが、実行してデバッグしたわけではないので
間違っていたらすまん。
そのうち自分でもテストはしないとだめなんだろうがねぇ。
>>9 wxUSE_THREADSは1(初期値)のまんまですね
wxWidgets自体のバグの線が高そう
環境はmswです
メインスレッドは::wxSafeYield()使え、と言ってみる
言ってみるって言われても、wxSocketServer::Read内部にYield()が明記されているわけでw 勝手に書き換えるのは気持ち悪いでしょう
13 :
9 :2006/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させるようにするのはどう?
それなら最初からスレッドでReadしっぱなしのほうがいいなw
15 :
デフォルトの名無しさん :2006/10/05(木) 14:10:04
OpenGL用の再描画関数でRefresh()以外の奴って何かないの? 教えてエロい人
サ イ サ ゙ ー っ て イ可 ?
性帝
キラーアプリはaudacity?
>>15 OpenGL描画して最後にwxGLCanvas::SwapBuffer()呼ぶ関数作って
それ呼べばRefresh()呼ばんでもいいんじゃない?
英語なのが悔やまれる。 だれかサンプルだけでも、日本語に訳してくれ。
21 :
デフォルトの名無しさん :2006/10/07(土) 23:19:02
あんまり使ってる人いないのかな?
Linux使ってる奴なんて相手にしない が正解。
リファレンスなら日本語訳されてるぞ 英語っていってもほとんど基礎英語レベルのことしかない これがわからない人はそもそも言語の構造がわかってないんだろう MFCでも先に勉強したほうが早いよ
DialogBlocksで wxDialogにwxButton貼り付けたんだけど Dialogのサイズ変更するとボタンが 最大化しちゃうんだが、何が原因なのかな?
25 :
24 :2006/10/08(日) 23:47:54
適当にToolbar挿入してみたら直った。 Toolbar必須なのか...
貼付けてるのが一個だけだったら最大化してた もうひとつ何か貼れば最大化しなかったよ
>>20 結構細々としているからねwxWidgetsは。
俺はサンプルに日本語コメントを付けまくってしょっちゅう見返してるよ。
sizer
俺は英語だけど、どっかのサイトで公開しているPDFを読んでます。 それなりにいいと思うぞ。 ただだし。
英語より、日本語を読みたい。 英語は疲れるよ。
31 :
デフォルトの名無しさん :2006/10/09(月) 16:28:27
挙げ
ウィンドウをクローズすると、登録したイベントハンドラが全部呼ばれるって、 何この糞仕様。
33 :
デフォルトの名無しさん :2006/10/14(土) 00:11:57
2.7.1 リリース
7なんか怖くて使う気にならない
35 :
デフォルトの名無しさん :2006/10/14(土) 00:38:34
日本語マニュアルまだ〜?
36 :
9 :2006/10/14(土) 01:13:36
コーディングした結果としては、ソケットのイベントもその他のイベントも全てメインスレッドのみで動いてるな。 wx関連のほとんどの機能はメインスレッド以外でやってはいけない感じなのかもしれない。
>>36 ん〜。そうでもないよ。
受信用スレッド作ってそこでソケットごにょごにょやってたことあるし。
ってそういう話では無い?
自分で何か修正したような記憶があったりなかったり。。。
2.6が出た頃の話だったと思うので、あまり真に受けんといてください。
38 :
9 :2006/10/14(土) 20:18:52
>>37 俺も送信用スレッドは使ってるけどね、wxのINPUTイベントやCLOSEイベントなんか
はメインスレッドでイベントでもらってRead/Destroyなどをするようにしてる。
Read/Writeを交互に行うようなプロトコルにしているため、
Writeをしながら、Readを呼び出しても問題が無いかどうかは検証していない。
また、排他制御をSingle Thread Execution Patternで避けれるから、一概に悪いとは言えないけどね。
送信・受信と別々につなげてそれぞれブロッキングで別スレッドを立てるほうがいいのかもしれないけど
Nagleがらみで送受信を分けるとラグが発生しそうだしなぁ。
39 :
デフォルトの名無しさん :2006/10/15(日) 14:33:00
buttonをつけるにはどうしたらいいんですか?
40 :
デフォルトの名無しさん :2006/10/15(日) 18:34:02
これって、exeサイズがなんか異常に大きくなるんだけど、こういうもん? 2.6.3のサンプルのminimalをbccでコンパイルしたら、exeサイズ約1.9MB、何だけど... でかすぎー
MFCだってmfcのランタイムまでいれたら相当でかいな
stripしてexepacker通したらそこそこ小さくなるでよ まぁでかいのはでかいが
43 :
40 :2006/10/15(日) 22:09:44
wxChar *をchar *に変換する方法ってありますでしょうか。 char *しか受け付けない関数があるんです。
wx{MB,WX,WC}2{MB,WX,WC} (関数) エンコーディングを特定したければwxMBConv系を直接使う
wxWC2MBを試してみていますが、うまくいきません。 三番目のsize_t nにはwchar_tの文字列のサイズを渡せば良いのでしょうか。
警告: dereferencing type-punned pointer will break strict-aliasing rules って警告が大量に出るんですが、これどうにかならないでしょうか?
, イ)ィ -─ ──- 、ミヽ ノ /,.-‐'"´ `ヾj ii / Λ ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{ ノ/,/ミ三ニヲ´ ゙、ノi! {V /ミ三二,イ , /, ,\ Yソ レ'/三二彡イ .:ィこラ ;:こラ j{ V;;;::. ;ヲヾ!V ー '′ i ー ' ソ Vニミ( 入 、 r j ,′ ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ ヽ ヽ -''ニニ‐ / | `、 ⌒ ,/ | >┻━┻'r‐'´ ヽ_ | ヽ _ _ 」 ググレカス [ Gugurecus ] ( 2006 〜 没年不明 )
……ググレカスって現代人だったのか
どちらかというと古代ギリシャ人
51 :
デフォルトの名無しさん :2006/11/05(日) 19:06:10
実際に使ってる人はどれだけいるんだろうね?
52 :
デフォルトの名無しさん :2006/11/05(日) 20:24:22
wxDev-C++って、メニューとかツールバーはまともにでなくない? ボタンとか、絶対位置指定できる点はいいとは思うけど。 DialogBlocksはちょっと複雑なの書くとエラーがでるんだが・・・
53 :
デフォルトの名無しさん :2006/11/09(木) 01:32:48
wxWidgetsをつかってタスクマネージャみたいのを作ろうと思うのですが つまづいてます メインの処理とかはどうでいいのですが、常駐アプリとして使うことを考慮して 1. 常に手前に表示 2. 透明度を変えられる 3. キーボードとかマウスとかのイベントを下のウィンドウにスルー を実現したいのですが3番目を実現する方法がわかりません
evt.veto
55 :
53 :2006/11/09(木) 18:20:15
2.7.2出たね 11月13日に2.8.0リリース予定だそうだ
57 :
53 :2006/11/09(木) 23:02:03
これって、3.0になるとSTLとか使ってモダンなAPIになるんでしょうか? なんか、そんな話が出てたような気がするんで。 そのソースってまだ公開されてないですよね?
さて、ややこしい話が出たところで、また俺がRADネタを振ろうかね。 おまいら、何でGUI君でんの?
CUIじゃ時代遅れだから。
そういう意味じゃないと思うよww
俺は Mac と Solaris かな。
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 :2006/11/14(火) 14:19:45
>>59 うぃんどうず
率直なところ使い勝手はあまり良くない
これって半透明なウィンドウつくれるの?
多分半透明は無理
>>63 OnCellChangeで再帰呼び出しチェック用のフラグ立てて、
再帰だったら何もしないでreturnすりゃいいんじゃない?
68 :
デフォルトの名無しさん :2006/11/16(木) 01:22:30
これ、使い方がMFCにそっくりだね。 ちょっとウザイ サイズがでかいのはどうにかならないかな? メモ帳を作ったら、3Mあったよ。 ありえねー
>>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 を使えば再帰が起らず思い通りになりました
http://wxbasic.sourceforge.net/ 私はwxBasicを使っています。結構高速に動くし、楽チンです。
frame = New wxFrame(NULL, -1 "テスト")
frame.Show(True)
このたった二行で、窓が開きます。
暇ができたら自分のサイトに解説を書こうと思っています。
? USING
import Graphics.UI.WX main = start $ frame [text := "test", visible := True] wxHaskellでも二行、と意地を張ってみるテスト
Haskell 奇麗だなあ
どこがきれいなんだよ。わけわかんねーよ
'--------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 :
毛の生えたブリーフ :2006/11/21(火) 21:09:59
スレタイの「サイザー」とは何か? これは本当に奥が深いものです。 76のコードではウィンドウいっぱいにボタンが表示されます。 wxButton(frame, -1, "押してね", wxPoint(40,50), wxSize(50,80)) などにしても駄目です。どうしてか・・・・・三日悩んで見つかったもの それが「サイザー」
サ イ サ ゙ ー っ て イ可 ?
シンセ?
サイズ、サイザー、・・・
サイゼリヤ
82 :
デフォルトの名無しさん :2006/11/23(木) 04:57:53
退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマと対極に位置する存在 眠い・・・・('A`)
>>82 [退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマ]と対極に位置する存在
退かぬ、媚びぬ、省みぬの三拍子を持った[プルグラマと対極に位置する]存在
('A`) ドッチ?
南斗聖拳のみたいなツールキットですね。 ところで 問1、 神魔血破弾を必殺技とする鬼哭霊気の物語のタイトルは 問2、 「アステカの星」を額に持つ、プロレスの星の男の名は 問3、 「三ツ矢」と言えば 問4、 ベガ星連合軍から滅ぼされたグレン星の守護ロボットの名は
>>83 超遅くなりましたが後者デス
il||li
∧∧
/⌒ヽ)
..,,....〜(,_,,,).....,,,,....もうだめぽ
86 :
デフォルトの名無しさん :2006/12/15(金) 23:04:27
バージョンアップのペースが速いような…
サイザーナックル
バグらしき物を発見したんですがどこかに報告した方がいいんでしょうか? バージョンは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; を挿入すれば大丈夫っぽいです。
>>90 sourceforgeでバグレポできる。
シンセサイザーのサイザー?
93 :
デフォルトの名無しさん :2007/02/14(水) 18:03:27
Delphiみたくポトペタ開発できますか?
94 :
デフォルトの名無しさん :2007/02/14(水) 19:40:56
VisualWxってどうですか?
Sizer
96 :
デフォルトの名無しさん :2007/02/15(木) 08:56:49
VisualWx使ったアプリというかサンプルアプリがネットに転がってないですか?
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
wxGladeでなんとか簡単なGUIをつくりはじめたんだけど、参考に出来るコードがたくさん 載ってるページってない?
つ VisualWx
>>100 samplesというディレクトリに60万行ほど載ってるけど、まだ足りないの?
>>102 samplesにはプルダウンメニューのサンプルがないよね。コンボボックスはあるけど。
どのクラスを使えばいいんだろう?
104 :
デフォルトの名無しさん :2007/02/18(日) 14:13:59
>103 wxComboBoxのwindow styleにwxCB_DROPDOWNとか wxCB_READONLYを指定すればいいんじゃない?
wxChoiceのことか?
>>105 wxChoiceとwxComboBoxってどう違うん?
wxChoiceは、あらかじめ用意されたリストから選ぶだけ。いわゆるプルダウンメニュ−。 wxComboBoxは、プルダウンメニュー+「メニューにない物も入力出来るテキストボックス」
108 :
デフォルトの名無しさん :2007/02/23(金) 11:07:22
OSがT-Engineとかでウィンドウシステムが無いものにポーティングすることは可能ですか?
VisualWx使ってみたが、MicrosoftとかBorlandのRADとは 比べ物にならないな。 糞。
エディタ手打ちで済むものをいちいちポトペタしなくてもいいじゃないか。
いや、やっぱエディタ打ちはやってて面倒だよ・・・。
アセンブラがあれば(ry
ハンドアセンブルしてバイナリを直接入力すれば(ry
テキストコントロールの各行に対する行数(行番号)を表示させたいんだけど、 (行番号があらかじめ書いてある原稿用紙に書き込む感じにしたい) なんかいい方法ない?
>>114 行番号表示用のウィンドウを作るのが多分一番楽
116 :
114 :2007/02/27(火) 01:48:30
>>115 はい。それも考えたんですが、本文の行数が多い場合に縦にスクロールさせると、
行番号表示用の行数とずれてしまうという問題があり、詰まっています。
なにかいい手はないでしょうか?
>>116 テキストコントロールの内容を変更するたびに、
行頭に行番号を追加するようにすればいいんじゃね?
114, 116はかなりの初心者かな?
119 :
114 :2007/02/27(火) 23:27:54
>>118 いままで簡単なスクリプトを書いて仕事(研究員)に使う程度だったのですが、
GUIつきのプログラムを作れば使いやすくなるし、同僚に自慢できるし、
上司によりアピールできるし。。。と思って始めたばかりです。
私のような初心者でも簡単なGUIが作れるという点ではwxwidgetsは素晴らしいと思います。
ただ、少し凝ろうとすると急にハードルが高く感じられます。今回の行番号表示など。
テキストエディタの表示オプションによくあったので、簡単に出来るのではと思ったのですが。
> 少し凝ろうとすると急にハードルが高く感じられます。
GUIフレームワークって何でもそうです。あらゆるものを御仕着せで用意するのは無理。
用意された機能を利用して実現できればそれでいいわけで、
これくらいはまだすんなり実現できる範疇に入るでしょうよ。
>>116 は要はテキストコントロールをスクロールさせたら行番号表示が一緒に
動かないからずれるってことでしょ? それなら行番号表示の方も一緒に動かせればいい。
ということで次のステップはイベント処理ですね。
テキストコントロールのスクロールが発生したときを捕捉して、そのスクロール
量を知り、行番号表示の方に指定量のスクロールをさせる。
じゃあちょっと難しく感じるかもな。 基本的には、番号用のウインドウを作る→さもメインのパネルの一部かのように組み込む→ (位置を計算して)番号出す→スクロールイベントを取得→表示のアップデート(スクロール) って流れかねえ。 >テキストエディタの表示オプションによくあったので なんかこう、GUIをべたーっとした一枚の絵のように考えていたら 簡単にはできないよw あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
122 :
114 :2007/02/28(水) 03:32:32
>>120 ,121
アドバイスありがとうございます。イベント処理はいままで扱ったことが
ないので、調べてみます。
>あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
失礼しました。
Windows XP, ActivePerl-5.8 でwxPerlを使っています。
wxPerlは比較的マイナーなようですね。
C++ならwxScintillaがつかえるが、他の言語ではラッパーか書かないとだめかも?
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 (つづく)
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分くらいで単純に作ったので、細かいツッコミは無しでお願いします。
微妙だなw つか、そのままコピペしたらエラー出たわw おいバグかよ、って思ったら、インデントの関係だったわ。 (SetNumはMyAppクラス内なのね。) これだからpythonはw
127 :
114 :2007/03/01(木) 01:47:35
>>124 ありがとうございます。こういう参考に出来るコードがあればと思っていたところでした。
ぱっと見まだよく分からないんですが、参考にさせてもらいます。
>>126 すぐに気づけてよかったね。
これだから(ry
129 :
デフォルトの名無しさん :2007/03/01(木) 16:19:36
Winでテキスト表示が場合によって問答無用でCour何とかいう2k/XPでFontlinkしないと日本語化けるフォント使わないように直ったんですか?
おれのエスパー能力で解析すると、 「Windowsでテキスト表示のフォントが変わったんですか?」 らしい。
132 :
デフォルトの名無しさん :2007/03/02(金) 00:17:04
変わるわけねーよ外人だもん。日本語が自分たちのフォントで表示できないことも知らないよ。
俺もエスパーなんだけどunicode使わないようにすれば解決する
エスパーだけど非Unicodeにするとたちまち駄目文字問題が出る。 予言だけど本気でコレの作者に中国人なり日本人なりが頼まないと未来永劫にわたって変更はない。
CourなんとかってCourierのことだな 文字化けしないフォントを使わなくなったのならいいんじゃないか ちなみにエスパーだけど
じゃあ俺もエスパー。
きてます。きてます。
質問です。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などを持っていないのが原因という事は分かったのですが、代替案が見つからず困っています。 どなたか上手いやり方をご存じないでしょうか?
wxPanelとかから継承したら?
>>139 wxPanelだと、独立したウィンドウになってしまいませんか?
ウィンドウ内のコンポーネントとして配置できるような、SpinCtrlとSliderをセットにしたものを作りたいのですが・・・。
最近wxWidgets忘れてるのでとりあえず思い付いたことを適当に書く - wxEventHandlerを継承してないとイベント扱えないのでは - DECLARE_EVENT_TABLE必要 まあとにかくEvent Handling Overviewくらいは読めと。
>>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今読んでいますが、難しいですね・・・。
多分、コントロール自身かその親ウィンドウじゃないと、 コントロールからのイベントが到達しないんじゃない? やっぱ、wxPanel継承して、そのハンドラで受けるのがいいと思う。 そのPanelをひとつのコンポーネントとしてとらえればいいわけだし、 他パネルに配置もできるでしょ? どうしても嫌なら、wxEvtHandler継承で、 m_slider->Connect( SliderPage_Slider, wxEVT_COMMAND_SLIDER_UPDATED, wxCommandEventHandler(SliderAndSpinCtrlSet::OnSlider), NULL, this); とすればできる気がする。動作確認してないけど。
>>143 wxPanel継承でできました!ありがとうございます。
というかwxPanelをコンポーネントとして配置できる事を知りませんでした。
まだ使い始めたばかりなもので・・・。
質問です。 ウィンドウを二つ表示しているんですが、 片方で何らかの操作をした結果の値を、もう一方のウィンドウ上に配置したスライダー 等のコンポーネントにリアルタイムに反映させたいのですが、何か方法はないでしょうか。 具体的に言うと、片方はwxGLCanvasを継承したクラスで、その画面上をドラッグすると ある値が変わるのですが、ドラッグ中にもう一方のウィンドウ(wxPanel)上の スライダー等の表示をその値を反映したものにリアルタイムに更新したいのです。 しかし、ドラッグ中にスライダー等にSetValueで値をセットしても、そのウィンドウに フォーカスが移動するまでスライダー等の表示が更新されません。 仕方が無いのでドラッグ中にwxPanelのSetFocus()メソッドを呼んで無理やり更新させていますが、 なんか気持ち悪いです。 他に方法はないでしょうか。
>>145 すみません。自己解決しました。
Update()関数で更新できました。お騒がせしました(汗)
147 :
デフォルトの名無しさん :2007/03/10(土) 00:07:38
wxPanelのサイズを実行時に変更するにはどうしたらいいでしょうか?
実行時に変更じゃわかんねーな 実行後に変更か?それともコンパイル時に指定か?
149 :
デフォルトの名無しさん :2007/03/10(土) 00:41:52
コンパイル時ではなく,アプリケーションの実行時です. 読み込んだ画像の大きさに合わせて変更するような感じです. 言葉足らずですいません..
wxWindow::SetClientSizeかなあ
wxImage image("foo.jpg"); panel->SetSize(image.GetWidth(), image.GetHeight()); みたいな感じでいいんじゃない?
みなさん。 wxFrameにwxGLCanvasセットしているときって、 なぜかwxMessageBoxの表示が全面に出てこなくて、wxFrameを最小化するか、クイック起動の「デスクトップを表示」をするかしないと、 wxMessageBoxが現れなかったりしませんか? ちなみに当方wxWidgets1.6.3使用。 1.8.2だと治ってるかなぁ・・・。
>>153 そうでした。2.6.3使用で、2.8だと直ってるかな、でした。
Mac の wxPython で使ってみてるんだけど、 wx.DC.GetTextExtent() がラテン文字以外は正しい幅を返してこないようだ。 Windows だとちゃんととれるのに。 これはどこの問題なんだ?
wxWidgetsの問題.諦めよ.
べつに諦めなくても自分で書いて送りつければいいんだけどね。 結構反応はやいよ。時々永遠に放置されるけどw 実装具合はポートによって様々。 一応実装されていても細かいところで違っていて、それを吸収する クラスを書かないといけないこともある。
なぁなぁ wxWidgetsってさ、UTFの扱いどうなってるな?F8とか押すとさ、たまーにゴミ文字列 挿入されるんだがあれまじキレそうになるからなんとかしたいんだけど どうすればいい?
コンパイラをUnicodeにすればいいんでない?
155だけど、日本語のフォントにしたら日本語についてはちゃんと取れた。 フォントのフォールバックが起こると取れなくなるみたい。 157のいう実装上の差異というところか。直せるのかな。 wxMAC のソースをちょっと覗いてみたら、元のAPIの仕様でそうなってるようにも見える。 Mac 詳しくないのでわかんないけど。 wxて Unicode や XML に詳しい人がコアにいないんじゃないかと思うことがある。 XRC の文法もなんか素人くさいよね。size をリテラルとして指定するとことか。 Uniscribe や TextLayoutManager(だっけ?)相当の機能がつくといいんだけどな。 ワイド文字列でコンパイルしただけじゃUnicode対応とはいえなかろう。 でも古典的な範囲でふつうに使ってる分にはやりやすい。嫌いなわけではないのよ。 あとインプットメソッドまわりは日本人がやらないと絶対始まらないと思うぞ。
ソース見てきた。Unicode実装してない 嘘Unicode絶対間違って実装してるからバグバグになる。 最悪buffer overflowとかも平気でありありな実装で こいつら死ねよって今からメール送りまくろうと思ってます。 メインの開発者全員にしねよねハゲゴルァメールを送りつけて気を引き締めて あげたいであります。
>>162 そんなことよりパッチ送ってやれ。
どーせ理解できねーんだから。
ソース見てないけど Unicodeが問題になることといえばコードの上下関係だけじゃないの? 日本語をソートするとばらばらになるとかでしょ 基底はWindowsAPIをUnicode版に切り替えるだけだから切り替えミスでもしてない限りはOverFlowはないと思うけど 切り替えしてないならアフォだけど LinuxとMacは単純にUnicodeAPIが無いから非対応という話ではないのか? ちなみに一からlinuxやMacでUnicode作ろうと思ったら全部書き換えないと無理だろ
>>164 >LinuxとMacは単純にUnicodeAPIが無い
UnicodeAPI って何だよw
もしかして Windows 以外では UTF-8 とか 16 とか弄れないと思ってるの?
kernelレベルでデフォルトキャラセットをUnicodeにしないと無理でしょ
ふぅん、カーネルレベルねぇ... デフォルトキャラセットとな... 全部書き換えないと無理と... Linux も Mac も使ったこと無いのに色々知ってるんだ 偉いねえ
Unicodeはkernelレベルでサポートするべきものだったんだよ!
な,なんだってーっ!
>>168 当然そうあるべきだと思うが。
ファイルシステムやカーネルオブジェクト等に使われる名前の
エンコーディングに一貫性が無いとロクなことにならない。
名前のエンコーディングが不明では、文字列として正しく処理をしようが無い。
一方名前にエンコーディング情報も付与することにしたら無駄に
データ量が増えインタフェースも複雑化するだけ。
だから、Windows NTやPlan 9はUnicodeだよな。
Unixが時代遅れなだけ。
一応書いておくと、カーネルモジュールでもファイルシステムとかは Unicode 扱えないとちょっとダサイ。でもこれはユーザランドのアプリ とは関係無い話。
172 :
171 :2007/04/08(日) 18:04:28
スマン。ボーッとしてたら被った。
>>170 "カーネルオブジェクト等に使われる名前" って何?
ASCII Code の範囲を超える文字を使うケースってあるの?
つか、カーネルモジュールで Unicode サポートが必要なのって
ファイルシステムだけだよね? そして普通の Un*x なら kiconv
とか(似た様な名前の)機構が既に入ってるよね?
>>170 が時代遅れなだけ?
173 :
171 :2007/04/08(日) 18:12:33
最後ちょっと下らない煽りっぽくなっちゃったが、カーネル内で実装されていようがいまいが、 ユーザランドのアプリで Unicode を使うには全く問題無いよ。全部書き換える必要なんて 全く無い。それと Mac も Linux もデフォで Unicode 使えるようになってるので、その意味 でも問題無い。
いや別にネットからダウンロードしたUTF-8の文字をバッファにいれてカーネルEUCの状態で表示しようがしまいが勝手だし そのためのクラス郡はwxWidgetsに用意されてるのだから好きにすればいいのでは? 今の話ってそういう話じゃないよね Unicodeの入ったバッファの中身をEUCのAPIにパスして文字が化けるんですけどとかそういうこと言ってんでしょ? そりゃ当たり前だって言ってるだけw
strcpyとかstrlenとかAPIだよ Unicodeの中身そのまま渡したらおかしくなるって
Windowsは2個用意してる strcpyだとstrcpyAとstrcpyWと2種類のAPIが存在してコンパイルする時に何をベースにプログラムを動かすかで 自動的に切り替わるようになってる linuxやMacはこういう機構が無いのだから完全にカーネル依存になる 基本的にカーネルの扱う文字コード以外ではコンパイルしてはいけない 別の文字コードを扱う時はバッファ内で変換してからすべての処理に引き渡すようにしないといけない
>カーネル依存になる だから、ならねっての。 C/C++ の標準ライブラリとカーネルの話をごっちゃにしてるね。 ついでに言うとロケールについても分かっちゃいない。
kiconvって、kernel内部コードをUTF-8で統一 全てのシステムコールの界面でLC_CTYPEを使ってchar*のエンコード変換を 行うと解釈していいのかな? それならWindowsの動作に近いんだが。 いや、kernel側にはユーザ側のLC_CTYPEは分からないか。 むしろシステムコールにラッパーかませるべき?どういう実装になってるの?
話が全然噛み合ってねえな…
>>177 > strcpyだとstrcpyAとstrcpyW
1. 存在しません。
2. strcpy()はWindows APIではなくC標準のランタイムライブラリです。
3. MSVC++はC標準ランタイムライブラリに対しても、TCHARベースの
汎用テキストマッピングの仕掛けは提供しています。
strcpy()の場合は、_tcscpy() -> strcpy() / wcscpy()です。
182 :
179 :2007/04/08(日) 19:47:41
よくわからないんだけど。 kiconvってカーネルパッチでしょ? コールゲート通過後の、カーネル空間に入っちゃったただのchar*のデータを どうエンコード変換すべきか、どうやって判断してるんだ? Windows APIの場合は、APIのレイヤで全部UTF-16にしてるよ。 その層だと判断できるし、カーネル内部がUTF-16に閉じてクリーンになるから。
ネット斜め読みしただけで分かった風に書くなよ…
184 :
179 :2007/04/08(日) 19:56:40
>>183 単純な話なんだから、分かってるのなら答えて欲しいんだけど。
・マルチユーザシステムであるUnixでは、ユーザ毎にLC_CTYPE設定が異なり得る。
これが前提。
・何もしなければ(少なくとも昔のUnixでは)システムコールにchar*を渡せば
それは「そのまま」kernelに素通しで渡るはず。つまり、一貫性の無い
異なるエンコーディングの名前がkernelに渡されることになる。しかも
kernelに渡ってしまった後はそのエンコーディングを判断するすべが無い。
ユーザモードで呼ばれるシステムコールのCインタフェース(ラッパ)には
呼び出し側プロセスの環境のLC_CTYPEが分かっているので、多分ロケールに
従った変換をかけるならここがベストである、ように俺には見える。
で、
・↑のような変換を行うシステムコールラッパの仕掛けなんですか
・kernel内部はUTF-8で統一されているのですか
というのが質問。
間違っているのなら、どこがどう間違っているのか説明してほしい。
>>184 何つーかさ、↓こういう質問が出る時点で答えるのを躊躇しちゃうのよ。
>・kernel内部はUTF-8で統一されているのですか
正直、君のレベルに合わせて回答を作るのは「単純な話」じゃないと思うよ。
誰にとっても。
186 :
179 :2007/04/08(日) 20:13:21
>>185 >・kernel内部はUTF-8で統一されているのですか
なぜ、この疑問がそんなに問題なの?
Windows NTは、kernelが扱う「名前」「テキスト」は、全てUTF-16だよ。
kernelの扱う名前のエンコーディングに一貫性が無いと、例えばファイルシステム
のファイル名のエンコーディングが統一されていないと、問題でしょ?
UTF-16に統一することで、そのような問題を避けつつ、ASCIIよりはるかに
大きな文字集合を無問題に扱うことが出来ているわけ。
少なくともWindowsでは。
無論ファイルの中に入っていたりネットワークを流れるデータ(バイト列)の
具体的な中身にはkernelは関与しないよ。それはユーザレベルの話。
187 :
179 :2007/04/08(日) 20:19:48
例えば fd = creat(filename, 0666); を実行した時に、 1) filenameはどこかでUTF-8に変換されますか 2) それはどこで行われますか 3) 変換されないならば、「全ての」ユーザコードが「各自」適切な エンコーディングを指定しない限り、 ファイルシステムのエンコーディングの一貫性は保障されないということで 良いですね。 ということなんだが。
>>186 前にも書いたけどさ、符号化方式はファイルシステム固有の話であって
「カーネル内部で統一」という言い方はおかしいよね?
単に一個のカーネルモジュールに過ぎない訳だから。
君も一応マイクロカーネルな OS 使ってるんでしょ?
これはオケ?
189 :
179 :2007/04/08(日) 20:52:19
>>188 ・非Unicodeの符号化形式を採用しているファイルシステムは、それだけで
i18n/m17n対応においてUnicodeベースのもの(FAT32やNTFS)より劣ると
いわざるを得ないだろう。
・ファイルシステムが非Unicodeの符号化形式を用いている場合、ファイルシステムの
モジュールなりドライバなりが、相互変換を行うべき。そしてその層に
それが閉じているならば、カーネルとしてはUnicodeで考えることが出来るので
「統一」と呼べるのでは。
統一されていれば、異なるファイルシステム上の名前を比較したり、ファイル
システム間で名前をコピーすることの問題も無くなるし、
ユーザの実行環境のロケールが何であろうと、そのロケールとの相互変換を
どこかのレイヤが行いさえすれば、問題なくファイル名を取り扱うことが出来る。
・今きづいたのだが、ファイルシステムの符号化形式との間の決めウチ変換を
行うのがkiconvの役目?もしかして。
だとすれば、それだけではWindowsの提供する環境より
随分劣るといわざるを得ない。
相変わらず、話が全然噛み合ってねえな…
191 :
179 :2007/04/08(日) 21:10:05
>>187 のような単純な質問には誰も答えてくれないの?
filenameの中身がUTF-8エンコードされていないなら、結局どうなるの?
1) EILSEQエラーなどではじかれる。
2) 普通にテキストと解釈できないへんな名前のファイルが出来る。
3) プロセス実行環境のLC_CTYPEに応じて、UTF-8に誰かが変換してくれる。
4) ファイルシステムに甚大な被害を及ぼす可能性がある。
>>191 何答えても屁理屈こねられそうだからみんな嫌がってんだよ。
↓勝ち誇った書き込みキター
196 :
179 :2007/04/08(日) 21:19:08
>>192 具体的に俺の「どの」発言が屁理屈なの。
誤っている箇所があるなら指摘してくれよ。
俺はそもそも屁理屈をこねるほど最近のLinuxのことを知らないから、
聞いてるだけなんだが。
>>196 ↓これ
>>189 >・ファイルシステムが非Unicodeの符号化形式を用いている場合、ファイルシステムの
> モジュールなりドライバなりが、相互変換を行うべき。そしてその層に
> それが閉じているならば、カーネルとしてはUnicodeで考えることが出来るので
> 「統一」と呼べるのでは。
> 統一されていれば、異なるファイルシステム上の名前を比較したり、ファイル
> システム間で名前をコピーすることの問題も無くなるし、
> ユーザの実行環境のロケールが何であろうと、そのロケールとの相互変換を
> どこかのレイヤが行いさえすれば、問題なくファイル名を取り扱うことが出来る。
198 :
179 :2007/04/08(日) 21:22:24
>>193 , 194
教えてくれてあんがと。
んじゃ、問題ないとか言い切ってる
>>171 は勇み足さんかな。
事実上そのUTF-8対応したLinuxとそうでない従来型ロケールベースでは
運用方法から何から全然変わってこない?
皆が皆UTF-8に移行してるわけじゃないでしょ?
どっちでも動くプログラムとか書くの、面倒じゃないの?
>>198 >事実上そのUTF-8対応したLinuxとそうでない従来型ロケールベースでは
>運用方法から何から全然変わってこない?
誰か俺にも分かるように翻訳してくれ。
201 :
179 :2007/04/08(日) 21:42:51
>>200 非UTF-8カーネルでユーザ毎にLC_CTYPEが異なる昔ながらのL10N環境と、
カーネルからユーザロケールまでUTF-8を前提とした環境と、
UTF-8カーネルに従来型ロケールの環境では、
ユーザコードでiconv()やwcstombs()等を用いた変換が必要な箇所が
変わってくるんでは?と思ったんだけど。
気のせいだというのならいい。
202 :
179 :2007/04/08(日) 21:43:50
>>197 えーと、俺は見ての通り頭が悪いし最近のLinuxのことは知らないので、
誤りはもっとピンポイントかつ具体的に指摘してくれると嬉しいのですが。
>>202 > 誤りはもっとピンポイントかつ具体的に指摘してくれると嬉しいのですが。
スレ違い
よくある逃げ方だな。 ごくろーさんw
↑捨て台詞キター
206 :
179 :2007/04/09(月) 00:00:11
>>204 は俺ではないですよ。どうでもよいことですが。
で結局 EUCベースのlinuxでwxWidgetsでUTF-8を用いたアプリを開発するにはどうすればよいかという話でしょ 1.wxWidgetsが馬鹿なので書き換える 2.アプリをEUCで作る 3.linuxをUTF-8に対応させる さあどれだw
話の発端はwxMACだっけ ということはMACのカーネルは何のコードがデフォなんだ?
わかってもいないし調べる気もない奴らばっかだということはよくわかったから もうここで続けるな。どこか他所でやってくれよ。
>>193-194 を見る限り、
$ touch ほげ
とかやった場合、要するにロケール設定によって全然別の名前のファイルが
作られるわけか?
なんかもう脳死してるっていうか、どうしようもないんじゃねぇのこれ
wow wxWidgetsの話はどこに行ったのさ?
つか、非ASCII文字を含むファイル名を表示するまともな方法、存在すんのか? ほげ:sjis ほげ:euc-jp ほげ:utf-8 みたいなファイル名が混在し得るんでしょ? 一つのファイルシステムに。
>>211 readdir()やftsを使ってで読み取ったファイル名のリスト
をリストボックスか何かに表示したいです。
どうするのが正しいのでしょうか。
WindowsだってeucとかUTF-8のファイル作ろうと思えば作れる罠
リストボックスは当然ながらKDEとかGNOME依存でこれらは結局kernelの文字コードにあわしてある kernelがEUCなら当然XシステムもEUCでフォントデータベースもEUCだからEUCのフォントインデックスじゃないと いわゆる文字化けした状態になる
>>215 > kernelの文字コード
> kernelがEUCなら
いみが
わかりません。
Linuxでは、文字エンコーディングを指定してカーネルを再構築するのでしょうか?
それによって、具体的にkernelの何が変わるのですか?
Unixはマルチユーザシステムですが、他のLocale設定を使いたいユーザは
どうすればよいのでしょうか?
>>214 「やろうと思えば出来る」のと、「通常の使用でそういう事故が起きる」
のとでは、当然ながら全然違うんだが。
WindowsのコードページはUnixのロケールほど揮発性でも動的でもないし、
むしろ日本語Windowsなら実質CP932決めウチ、みたいな世界だ。
そしてAnsi版APIは、APIレベルでUTF-16への変換を試みるから、そこで
妙な名前はガードされる。
Unicode版APIは素通しだけどな。CreateFileW()にUTF-16として
正しくない並びの文字列を渡してもそのファイルを作れてしまうのは確か。
ただし、「ユーザが」「普通に」使用していてそういう事態に陥ることは
まずない。
>>215 もうそのネタを引っ張るのは無理でしょ。流石にフォントの並びは変わらねえw
「カーネルの文字コード」という概念は個人的に破壊力抜群だったけどww
「EUC ベースの Linux」は後々まで語り継がれる名言だったなwww
釣り、なんだよね?
また過去においては Linux の C Library にはロケール機構の実装は行われて おらず X Window System の提供するロケール機構を使用していた。近年になっ て X のロケールから GNU C Library version 2 に実装されたロケールへの移 行が進んでいる。残念ながら現時点では日本語をはじめとする多バイト文字の ロケール機構は機能していないが実装作業が進行中であり、近日中に利用可能 になるものと思われる。
>>220 ちゃんと規格確認してから言ってる?
特定の実装の問題を全体に拡大解釈するなよ
>>221 規格って、zip に入れるファイル名の文字コードの規格があるの?
特定の実装って何の実装の事?
実際には Linux だってわざわざファイル名に複数の文字コードを混在させて使おうと
する人間はいない。混在可能ってだけだし、それは Windows でも一緒。
知識自慢ばっかで解決策を語れるスマートな人間はまったくいないな wxWidgetsのソースをいじるなんてのは非現実的だし ロケールをわざわざUnicodeに変換したって既存のソフトが動かなくなるだけ 答えは1つ、デフォルトロケールにアプリを合わせて自前でコード変換するだけ それ以外の方法はない それ以外の方法しか考えられないやつはただの馬鹿
知識自慢というか、正しい認識を持つことは重要だよ。 で、何の解決策が必要なんだっけ?
ボケ老人は無理して話に加わらなくていいのに・・・。
> zip に入れるファイル名の文字コードの規格があるの? zip に入れるファイル名の文字コードの規格はないの?
無い
無いよなぁ…
>>223 >wxWidgetsのソースをいじるなんてのは非現実的だし
ノンサポートのライブラリなんだから、きちんと全容を把握して
自分で手を入れられるようになっておいた方が良いぜ。
>>223 オープンソースなんだし常識じゃないの?
カーネルのソースも、wxWidgetsのソースも動作がおかしい場合は、
読んで修正しないとねぇ。
>>220 あのさぁ。メールの添付ファイルだのzipアーカイブの中身だのに含まれる
ファイル名をどうシステムのファイル名にマップするかってのは、
そのプロトコルなりRFCなりファイルフォーマットなりの話であって
OSの仕事ではないでしょ?
そこに不備があるのなら、それはOSでなくて、符号化形式が
self-containedではないそれらの不備ってだけだろ?
少なくともWindowsでは 単にシェルでファイルをとりあつかうだけのことで問題が生じることは無い。 ファイル名はUTF-16「である」のがWindowsだ。 Windowsのファイル名はコードページに依存しないし、コードページによらず 漢字や拡張ラテン文字を含むファイル名を同時に正しく扱える。 Linuxでは $ >ほげ とかやるとどうなるんだっけ?
233 :
デフォルトの名無しさん :2007/04/09(月) 12:36:11
スレ違いage
>>229 入れられるのと実際に入れるのとでは意味が違う
手を加えたらパッチが当たった時にまたそれに合わせて全部拾い出していくのか?
よっぽど暇なんですね
せっかくクロスプラットフォームで多くのチェックが入ってバランス統一されたものに わざわざ手を加えてクロスプラットフォームじゃなくならせるなんてよっぽど馬鹿なんですね
>>234 見ればわかると思うけど、ここ能無ししかいないから
誰も答えられません。
じゃあお前が答えろよw
知識が無いことより、分かっている振りをすることのほうがはるかに馬鹿な事なのに プログラマはそれがわからない馬鹿が多くて本当に嫌な人種だな むしろ人間じゃねーな
>>240 要するに、Windowsのファイル名はUTF-16固定だが
Unixのファイル名のエンコーディングに関しては、規約も標準も
何も無い無法地帯で、かつシステムグローバルでも何でもないLC_CTYPE
環境変数の設定でエンコーディングがころころ変わってしまい、
結果としてプログラム的にどうあるべき、という正しい判断のしようが無いから
糞なんだろ?
どこが「Windowsも同じ」なの?
Zipのようなファイル形式で困ったことになる点だけは確かに同じだな。
だが、それはOSの問題ではないし、論点ずらしだろ。
>>241 惜しい。あと一歩真実へ踏み出してみよう。
つづきまだ〜?(チンチン(AAry
ちゃんと考えなきゃダメだぜ。
例えばプレーンなテキストファイルのエンコーディングは分からない (符号化形式がselfcontainedでない)ってのはOSに限らない 普遍的かつ伝統的な問題なわけで、 ファイルの中のデータを扱う部分はどうしても汚い仕事にならざるを 得ないと思うのよ。典型的なのが日本語のエンコーディングの自動判別の ようなヒューリスティック。 Unixの世界ではファイル名もこれと同じなわけだけど、Unicodeに 統一できるなら、したほうがいいに決まってるし、完璧ではないにしろ それが可能な世界だと思うんだ。 Windowsではそうなってるわけでしょ。
少なくともWindowsでは、何かファイル名を外部からもらった時に、 それをOSに渡す際にはUTF-16に変換するのが「正しい」ことは分かる。 どうやったらUTF-8に変換できるのか分からないならば、それは貰い方、例えば ファイル形式やプロトコル等に問題があると言うことが出来る。 それはWindowsの問題ではない。 Unixはそれ以前の問題。それが非ASCII文字を含む場合、どう扱うのが 「正しい」のかが全く分からない。 一般解は存在せず、環境・プログラム毎の特殊解のみがあるのだろう。
>>246 >どう扱うのが「正しい」のかが全く分からない。
どう扱うのが正しいのかを決めるのはユーザ様な世界なんだよ。
分からないんじゃなくて、勝手な決め打ちしないだけ。
全能なるユーザ様が入力なされた物を勝手に変換するなと。
"touch ほげ" の結果生成されるファイル名がロケール依存で
変化するのは UN*X 的に正しい世界。何故ならユーザ様が
ロケールを設定しているから。アプリはロケールに従ってデータを
読み出せば全く問題無い。これが UN*X 的な正しい扱い方。
入力には寛容に。
ファイル名のエンコードは一応それなりに決まっていて、HFS+
なんかは UTF-16 になっている。決まっているだけで EUC でも
書き込めるのは Windows と一緒だね。
UNIXの世界において、kernelのレイヤでは全て単なるバイト列。 \0と/は特別扱いやけどな。 エンコーディング等は、kernelの知・っ・た・こ・と・で・は・な・い。
正しいとか正しくないとか俺様理論は他でやってくれないか?
あのな\0が特別って\0だけで十分にエンコード依存なんだよ馬鹿
251 :
デフォルトの名無しさん :2007/04/09(月) 23:42:50
俺様理論っつうか、エンコードとかkernelの話は他でやってくれ
何度も言うけども wxWidgetsを正常に使いたかったらわざわざロケールを変更するような暇なことしたり wxWidgetsを自分好みに作り変えたりするのは馬鹿のすることだ デフォルトロケールのエンコードにあわせるのが正当なやり方だ Windowsの場合はSJISとUnicodeの両者が共存出来るようなうまいしくみがあるから選べるだけ
>>249 核心を突いたね。そう。単一の文字コードに決め打ちして正しいとか言ってるのは
俺様理論なんだよね。簡単に破綻するのにね。しかも UTF-16 だからなあ…
>>252 一生 Windows だけ使ってる分にはそれで良いと思うよ。
Microsoft 以外が出しているおかしな OS なんて使う必要無いよ!
どうせMACはバージョンによって文字コードが違っても互換性がないのだからw UNIX系なんてそもそもバイナリ配布できるような環境にないだろw どうせそのコンピュータでコンパイルして動かすのだからロケールなんて統一したほうがかえってややこしいことになる コンパイル環境のロケールでそのまま動くように作ればいいだけ 問題になるのはスタティック文字列くらいなもん
オケ
また一人気違いが……。よそでやれ。
>>247 > "touch ほげ" の結果生成されるファイル名がロケール依存で
> 変化するのは UN*X 的に正しい世界。何故ならユーザ様が
> ロケールを設定しているから。アプリはロケールに従ってデータを
> 読み出せば全く問題無い。
touch ほげを実行したユーザが、ファイル名を読み取るユーザと同じとは
限らないのがUnixでしょ。読み取るプロセスはデーモンかもしれないし、
cronあたりから実行されているバッチかもしれない。
ftpやtelnet越しのユーザかもしれない。
実におめでたいね。
>>248 うん、それで?
結果として、単に非ASCII以外の文字を含む名前がひどく扱いにくい世界に
なったわけだよね。
時代遅れだね。
>>253 Unixの「自由」は欲しくない自由なんだよ。俺に言わせれば。
プレーンテキストどころか、ファイルの中の行毎にエンコーディングが
異なる、何がなんだか分からないファイルを考えてみればよい。論外だろ?
「自由」にしたいのなら、せめてエンコーディング方式が分かるようにしろと。
「議論」したいのなら、せめて該当するスレに移ってくれと。
260 :
155 :2007/04/10(火) 02:18:16
ぎょえ。なんかすごいことに。 しかもなぜか関係ないファイル名の話になってるし…。 荒れるからもう Unicode の話はふらないよ…。 ゴメンネ。
>>258 それで問題無いよ。お仕着せが良いなら Windows を使っていれば良い話。
見掛け上の統一感に満足していれば良い。Windows が最高なんでしょ?
俺は、文字コードの揺らぎは常に存在するものである事を前提に、自分で
自由に制御出来る環境の方が優れていると思う。
いつだって他人の流儀を認められないのが Windows ユーザだよなあ。
ぬるい世界で満足しているなら、そこから出て来なければ良いのにね。
>>261 > いつだって他人の流儀を認められないのが Windows ユーザだよなあ。
イラッとして書いたんだろうけどこういうひとくくりにする発言はやめようよ。
使ってるOSの問題じゃないからさ。
イラッとして書いたんじゃなくて、そのあたりが
>>261 のレベルなんです。
あらゆるコミュニティから「お前は入ってこないで」と思われるタイプ。
こーゆー輩は他人を貶して優越感に浸りたいだけだから放って置いたほうが良いよ
>>261 ね。
テクニカルな内容がほぼゼロ。本人の品性が良く分かる煽り文ですね。
> 俺は、文字コードの揺らぎは常に存在するものである事を前提に、自分で
> 自由に制御出来る環境の方が優れていると思う。
エンコーディング情報が正しく含まれるのならそれもいいだろうけど、
実際には、各行のエンコーディングがごたまぜ、何が使われているか分からない
テキストファイルも同然の状態なわけですよ。ファイル名が何でエンコードされてるか
どこにも記録されない上に、一貫性のある規約も無いのが現実。
自分の環境は自分の都合のいいように運用するからそれでおk?
あなたは仮にもプログラマでしょう?
趣味でLinuxいじってるだけのパソコンオタクじゃないんでしょ?
プログラマとしてコードを書くときに、自分の環境しか考えないの?
例えば「ゆらぎがあることを前提に」、あなたなら
>>213 のケースにどう
回答するの?
Windowsはあなたに言わせればぬるい環境で、Unixは優れてるんでしょ?
俺様環境でしか通用しない糞コードではなく、
素晴らしい回答を期待してますよ。
266 :
261 :2007/04/10(火) 19:11:39
なんか変なのがまとめて沸いてきたなぁ。それとも同一人物か? 自分の痛さを指摘されて逆上した Windows ユーザ? まぁ、まともなレベルのものが書けたら相手してあげるよ。頑張ってね。
自分が痛いとはこれっぽっちも思ってないらしいな(ワラ
268 :
261 :2007/04/10(火) 21:00:09
痛くないから当然だな。 まともなことを言ってるのに「痛くてすみません」ってな態度を取るのは 謙虚でもなんでもない。ただ間違っているだけだ。 それにしても、本当に逆上してるんだな。 負け癖のついた議論好きってこんな感じなんだよな。
新着で100もレスついてるから何かと思えば…
270 :
261 :2007/04/10(火) 21:07:58
馬鹿は一匹出てくると立て続けに何十匹も出てくるからな。 スレが無駄に伸びる伸びる。
>>266 ,
>>268 ,
>>270 お、俺がもう一人居る。あんたが
>>261 だとすると、俺は誰だw
何にせよ
>>261 の書き込みは破壊力抜群だったみたいで何より。
>>262 には悪い事したけど、まともな人はもう居ないと思ってた。
>>265 あんたプログラマだったの?
プログラマは平日昼間から 2ch やれて羨ましいなあ。
エンコーディング情報は環境変数からとって来るから良いんだよ。
あんたが思ってる様なカオスの世界では無いよ。
272 :
271 :2007/04/10(火) 21:13:42
話を簡単にまとめると、エンコーディングが静的に決まっているのが NTFS や HFS+(どちらも UTF-16) で、行儀の良いアプリであれば そのエンコーディングに従って文字列を格納してくれる。勿論、zip の例の様に、人間にとって valid な文字列を生成出来ない場合も あるし、ファイル名が ASCII である事を前提に書かれたプログラム も存在している。 一方で、エンコーディングが環境に合わせて変わるのが UNIX 方式。 ファイルシステムの数も扱うロケールの数も沢山あるし、OS 自体も 色んな種類があるので入力には寛容に作られている。行儀の良い アプリならロケールを見てきちんとデータを変換してくれる。勿論 入力が ASCII のみを想定している様なプログラムもあって、8 bit clean じゃないコマンドも残っていたりする。 どちらの方式でも言えるのは、人間にとって valid じゃない文字列を 生成するのは簡単だという事。valid じゃない文字列を生成する プログラムが良いか悪いかは別として、そういうプログラムが存在する 事は間違いない。だとすると、エンコーディングを決め打ちして満足 しているのは抜けてるんじゃないかなあというのが俺の意見。 Windows な人が共感出来るかどうかは別として、論理としては理解 出来るように書いているつもりだけど、どうよ?
>>271 > エンコーディング情報は環境変数からとって来るから良いんだよ
環境変数はユーザ毎、プロセス毎、それどころかプロセス実行中にも
変化し得る揮発性のデータでしょ。実際、
$ LANG=C man foo
のように、一時的にLANGを変えてコマンドを実行するようなことは
日常茶飯事のはずだ。
環境変数が指し示すのはあくまで「プロセスの実行環境」であって、
「ファイル名が何でエンコードされているか」ではない。それらは
全く別のものなのに、一体それでなぜ「良いんだよ」と言えるのか。
・ファイル名のエンコーディング方式が固定化されているか
・ファイル名のメタデータとしてエンコーディング方式が取得/設定できるか
以外に正しい解は無いよ。そんなこと、分かりきってるだろうに。
>>272 > 論理としては理解出来るように書いているつもりだけど、どうよ?
あなたがUnix方式の穴/不備に故意に目を瞑っていることだけはよく理解できる。
そして、「完璧な方式など無い」と主張することで、そこから目をそらさせようと
しているわけだ。
1. エンコーディング固定化方式
2. エンコーディングが可変で、形式をメタデータとして保持する方式
を比較するなら分かる。
どちらにも得失はあるが、「まともな」やり方だ。
Unixはそのいずれでもない。可変で、形式情報が失われてしまう。
Zipと同じだよ。
275 :
271 :2007/04/10(火) 21:57:12
>>273 ファイル名が何でエンコードされてるかは重要じゃない。
ファイル名のバイト列をどの文字コードで解釈したいと
ユーザが指定しているかが分かれば良い。
エンコードを決め打ちしても当然例外は発生するんだから
正しい解なんて存在しないんだよ。それに気付ければオケ。
もうちょっと論理的に頼むわ。 馬鹿でもいいから、限界まで頑張って。
277 :
271 :2007/04/10(火) 22:00:13
>>274 >完璧な方式など無い
まさにその通り。それを認識する事が重要だよ。
そうすればもっと色んな考えに寛容になれるよ。
Windows方式は完璧ではないよ。無論。誰もそんなことは主張していない。 Unix方式よりずっとマシだ、といっているだけだ。
>>275 >ファイル名が何でエンコードされてるかは重要じゃない。
>ファイル名のバイト列をどの文字コードで解釈したいと
>ユーザが指定しているかが分かれば良い。
環境変数という荒くて大雑把な手段では、実際に個々のファイル単位に
エンコーディングを指定することは出来ないし、インタラクティブな
プログラムばかりではない。
問題が大きいのに相変わらず故意に目をつぶりまくっているな。
>>278 それなら君は Windows ユーザじゃないってことだ。
>>281 キミ、面白すぎ
Windowsマンセー、欠陥など一切認めないって信者以外はWindows使っちゃ
いけないのネ
>>282 物事を面白がれるのはいいことだと思うよ。
現実と架空の区別さえついていれば。
マルチバイト文字の2byte目の引き起こす下らない問題に 煩わされてきた日本人であるならば、 名前なんてただのバイト列でいいよ、エンコーディングなんてどうでもいいよ、 なんてことは言えない筈だぞ。 UnixとCの時代遅れな設計がいかに多くの下らない「日本語対応パッチ」のような adhocな生産物を意味出してきたことか。
>>278 悪いけど俺にはとてもそうは思えないし、エンコード決め打ちなんて
俺の基準からすると作法がなっていない。
>>284 いいからしばらく黙ってろって。襤褸が出まくってる。
>>285 > エンコード決め打ちなんて俺の基準からすると作法がなっていない。
そういう「気分」「好み」でしか語れないのか?
技術者なら、Unix方式に比べてどういう具体的な問題・欠陥があるか語れよ。
>>287 散々書いたじゃん。今まで何読んでたの?
鬱陶しいから横から煽るのは止めてくれ。
あと
>>284 みたいな見当違いの事書くのも勘弁な。
>>288 > 散々書いたじゃん
「Windowsも完璧ではない、Windowsも同じ」以上のことは書いてない気が
するが?
今ある環境を*肯定*して最大公約数的なものを 提供するのがwxWidgetsだと思うのだが。 OS批評がしたいならOS板に行ってくれないかな。
>>284 はそんなに見当違いか?
テキストとバイナリを区別せずただのバイト列として扱うのが
伝統的なUnixおよびCの文化だ。
実際にはそうした愚直で単純なやり方ではマルチバイトテキストを
扱う上で大きな問題を引き起こす。
無論UnixおよびCでそうでないプログラムを書くことは可能だが、
それに対するサポートレベルがWindowsに比べて非常に低い。
Windowsはテキストを明確に区別する。ほぼ全てのテキストを受け渡しする
APIには、Ansi版とUnicode版が存在し、APIユーザ=プログラマは、
自分のプログラムに適したストラテジーによってそれらを使い分けることが出来る。
Ansi版を使う場合はUnixのロケールモデルに近くなり、それらの切り替えは容易だ。
正しくWindowsの作法に従って書かれたプログラムなら、OSに渡るテキストは
全てUTF-16だ。
そうした世界では、もともとm17n対応であり、SJISの2byte目が引き起こす
伝統的な下らない問題とも無縁だ。
ファイルシステム内のファイル名も一貫しており、どんなコードページで
実行していようが全てのファイルを正しく扱える。
テキストを意識し、テキストを正しく扱っているから出来ることだ。
Unixは「何でもあり」と一見自由のようなことを言っていて、
実際にはエラーを起こしがちで問題の多い解でしかないわけだ。
ちょうど行毎にエンコード形式の異なるテキストファイルのように。
案外ここ住人いたんだなあ なんだかうれしいよ
ここまで俺の自演
いやいや、オレオレ
VC++ 2005 express edision(無料のやつ) で wx_dll.dswをコンパイルすると MessageBox@16が見つからないとかいうエラーが出てdllが生成されないんだけど なんじゃこりゃ
普通の質問になると黙るのがワロス
ダメ文字と半端バイト、エンディアン、改行の扱いで問題なければ別にどうでも良いよ ……Windows&SJIS/UTF-16が苦手にするところだなぁ。WindowsもUTF-8(N)にならんかね?
>297 ちゃんとWindowsの開発環境整えてる?Platform SDKとか。
>>300 libがなかったらそれ以前にlibが無いってエラーが出るからね
その辺はちゃんとやってる
wx.dswのほういわゆる静的リンクは問題なくコンパイルできる
DLLのほうがだめ
>>299 どこでも UTF-16 は負の遺産と化してるね
Javaも.NETもTclもICUもUTF-16だけどな。 ファイルやネットワークで使用するデータ交換形式としては無論UTF-8が 望ましいが、マルチバイト処理を必要とするから、内部コードとして 使うにはUTF-32のほうがいいよ。 UTF-16はまぁ中途半端の観は否めないが、内部コードとして使っている分には それほど大きな不満はないな。 内部コードとしてのUTF-8の問題は、マルチバイト処理を必要とするだけでなく、 全部char*になってしまうということ。これは一見単純で良いようだが、 Unicodeデータかどうかの識別がつきにくく、プログラミング言語の オーバーロード機能なども利用しにくくなってしまう。
>>303 内部コードにUTF使うか?
エンディアン無視してUCSそのままだろ。
>>303 エンコーディングの問題とプログラミング言語の問題も分離できないくせに
偉そうなフリしてて笑えるw
ここは何のスレ?
ねぇ、2.6.3のサンプルでpenguinサンプルをビルドして動かしてみたんだけど、 ウィンドウを閉じようとしたら「ハンドルされていないエラーが発生しました」とかいうエラーが 出てしまう。他のOpenGL使うサンプルもみんなそうなんだけど、これってwxWidgetsのバグ?
308 :
307 :2007/04/13(金) 14:14:50
>>307 原因がわかったぽい。
NVIDIAの提供しているデバッグ用ドライバだとエラーになるっぽい。
通常のGeForceドライバだとエラーにならなかった。
まさかドライバで動作が違うとはね。
wxPythonで使ってるんだけど、いわゆるショートカットキー(ホットキー)って どうやって実装するの? wxAcceleratorKeyはメニュー用のようだし、wxKeyEventはフォーカスされた ウィンドウにしかトリガーしない。 リファレンスにもそれっぽい方法は見当たらなかったのだけど。
メニューのファイル(F)の"Alt+F"みたいなの? それだったら"ファイル(&F)"でできるけど。
>>310 いや、違うだろ。
グローバルホットキーのことでしょ?
OS依存度高そうだな。
312 :
307 :2007/04/13(金) 22:01:38
>>308 と思ったら、普通のGLUTアプリでもこけた。
こりゃwxWidgetsとは全然関係のない話で、単にドライバの仕様な予感。
スマンカッタ・・・。
313 :
309 :2007/04/13(金) 22:18:52
>>311 それもだけど、当面はアプリケーションごとのCtrl+Zで取り消し、みたいなやつ。
wxMenu.Appendでitem="Undo\tCtrl+Z"とすればできるけど
これだとメニューを出せない場合に困るし、どうしたらよいものかと。
質問です。 条件によってUIを機能しない(ボタンだったら表示が薄くなって押せなくなる)ように するにはどうすれば良いのでしょうか。 wxWidgetsのサンプルではEVT_UPDATE_UIというイベントを使っているようですが、 真似して試してみたところ上手く行きません。
Disable()
ttp://www.averdevelopment.com/python/wxAGG.html 面白いの見つけた(windows限定みたいだし余り魅力的ではないかも…)
でも
dc = AggDC(wx.PaintDC(self))
b = aggBrush(self.dc.GetBrush())
p = aggPen(self.dc.GetPen())
みたいに使用するのは簡潔でいいと思うけど
def aggBrush(wxBrush):
def aggPen(wxPen):
を使うたびにどこかで定義しないといけないとか、これなら
素直にGDI+を使ったほうが良いかなという気もしないでもない。
というか日本語資料が一件しかないしな…
そんなもん使うことあるか? ゲーム作るんならどにみちバッファ直接書いたほうが早いぞ DirectXより早いぞ
318 :
デフォルトの名無しさん :2007/05/05(土) 02:07:54
誰か、コレを和訳してないかな? Cross-Platform GUI Programming with wxWidgets
wxWidgetsによるプラットホーム非依存なグラフィカルユーザインターフェイスプログラミング してみたけど。
ああ流石に寒いかなと思ってやらなかったのに…
だれか、これで2chブラウザつくらないのかな?
メリットは?
323 :
デフォルトの名無しさん :2007/05/06(日) 01:41:18
弱酸性です。
>メリット ネタになるだろ? だれかやって味噌〜
C#の方が簡単だよ
そんなあふれたもん作ってもしょうがないぽ
あふれた?
輝けジャンケル(Woo! Ohowo!!)空高く(Owo!!) 技と力と心が通う ザビタン(hehe!!) イビル(hehe!!)ガブラ(Woo!Ohooho!!) うなれジャンケル! アクサイザー3!!
なんやねん
332 :
デフォルトの名無しさん :2007/05/06(日) 20:14:11
これの代わりになるものをみんなで作ろう!!
333 :
デフォルトの名無しさん :2007/05/06(日) 20:16:53
おちつけ!!!!
行く道ひとつ Ohowo!! ただひとつ これが われらの 生きる道 アクサイザー!(Zanzan zazan!) アクサイザー!(Zanzan zazan!) アクサイザー3!!
335 :
デフォルトの名無しさん :2007/05/06(日) 21:27:25
これって、あまり人気がないのか?
wxSocketBase::Callbackが2.8で完全に削除されてるけど コマンドアプリでイベント処理する場合にはどうすれば? 自作クラスにイベントハンドラを作る方法ってあるの? ちなみにプログラムの特性上スレッドは却下、同期処理も却下
EVT_SOCKET(id, func)
自己解決した ふふり
みんなもっと使おうぜ!! 便利なんだから(?)
wxDateTimeについて システムの時刻とアプリケーションの時刻を独立して管理したいんだけど wxDateSpanとwxTimeSpanをwxDateTime::Nowに加算すればいいわけですね 問題はアプリケーションで管理すべき時刻とシステム時刻の差の計算はどうすればいいの? wxDateSpanとwxTimeSpanを2個のwxDateTimeの差から計算するには?
あ、自己解決w
342 :
デフォルトの名無しさん :2007/05/12(土) 16:44:23
これ、人気ないですか?
どうしてそう思うの?
まだ何も思ってないのでは
中身が人気無いというより コンパイルに数時間かかるし ドキュメントはほとんど英語しかないし 容量が1G以上いくし 内部構造まで解析できないとバグと仕様の区別が付けられないから不安定だし まあようするに厨房には無理w
メリットは何ですか?
環境に左右されない。 でも、コンパイルは各環境で行わないといけない。 MFCの代わり? (似てるし)
>容量が1G以上いくし まじっすか・・・
メリットは MFCライクだけどMFCをさらに洗練したような感じになってること 完全クロスプラットフォームだからネットワーククライアント関係を作るなら便利 完全に無料だからライセンスを一切気にする必要がない 多国語サポートとかとにかく機能はすさまじく充実してるけどクラス設計が洗練されてて覚えやすい
クラス設計が洗練されているというのは クラスの命名規約やパラメータのパターンやイベント処理方法がすべて統一されているから ダイアログの表示の仕方を覚えると、フレーム作ったりMDI作ったりする方法がなんとなく想像できる ちょっとそれらしい名前のクラスリファレンスを見るだけでダイアログを表示する方法と同じ方法で いろんなものが表示できる
デメリット 英語が出来ないと辛い
C++のコード読めないとつらい。 当方、wxPython使い。
GUI以外のシステム依存機能が大量に入ってて便利な反面 使わない機能も勝手に付いてきて重い
重くは無い でかいけどw
355 :
デフォルトの名無しさん :2007/05/14(月) 01:55:39
wxJoystickを使ってゲームパッドで操作するアプリを作成中なのですが、 ボタンの押下はポーリングでスキャンする方法しかないのでしょうか?? ボタンを長押ししたりすると、連打してるようになるし、 ボタンをちょっとだけ押しても反応しない時があるので困ってます。。 ボタンが押された時にだけイベントを発生させることはできないのでしょうか?
wxJoystick::SetCapture
すごく・・・おおきいです
大きい・・・のか
英語が出来ないので、断念 ⇒ Turbo C++ 使い方が良くわからないので断念 ⇒ WinAPIでガリガリ書く みんなが辿る道
英語つっても文学作品じゃないんだから嵩が知れてるでしょ。 やっぱりデカイのが痛い。
Turbo C++ で十分
アッー!
>>361 いやまて、チ○コじゃなくて、オパーイかも知れんぞ。
>>364 そっちだって、でかいとジャンプするだけで痛いよ?
>>359 それはつまり,C++を理解できてない人が打ちのめされたあげく,
Cだけで書こうと思い立つもCすらよく理解できていないからハンドラの扱いが
よくわからなくてWinAPIのサンプルをコピペしてダイアログ作って
テキストボックスに身長を入力したら標準体重を表示するだけの
プログラムの計算ルーチンだけを書いていたら頭の中でガリガリなった
ような気がする状態のことですね。あるある。
wxScintillaの内部で利用しているScintillaをさ1.62から 1.71以上にしたいんだけど、どうすればいいの?
DLLにすればでかくないw しかしDLLを作るには英語力が必要w
メモリに読み込んだらサイズは一緒
メモリ量なら.Netは誰にも負けないw
wxPython使ってるんでサイズ的には只のテキストファイルだ
py2exe使うとどえりゃーことになるぜ
パネル一個のアプリが50MBytes超えるしな。
まじめにDLLとReleaseモードを組み合わせたパターンだと ランタイム含めても2MBいくかいかないかだけどな 本体はよっぽとすさまじいシステムでもない限りせいぜい500kbくらいか
>>373 それpy2exeの話?すげーなそれは・・・
いわば、pythonとwxpythonの本体もまとめてexeに入れてしまうらしいからね
今どき50MBくらいへでもないじゃん。
そういう問題じゃないだろ・・
わざわざPythonを使う理由がわからん マゾか?w C++でもJavaでもいいのにw
その3つの中でPythonしか知らないからだよっ!
C++ も Java も REPL が無いのが辛い。俺にとってはかなり致命的。 あと C++ は変則的過ぎるから気持ち悪い。
統制がとれていないのをマルチパラダイム言語とか言ってごまかしてるからな。 俺はそのカオスさも嫌いじゃないが
ちなみにwxJavaScriptってのもあるぞw
>>382 あれは、ごまかしてるんじゃない。開き直ってるんだ。
開き直ってるというのも、ちょっとニュアンス合わないな。 それだと、途中からそう考え出したみたいだから。 C++のあのスタンスは最初からだよ。
くだらねーw てか公式でランタイムのバイナリ配布すればいいのにね
388 :
デフォルトの名無しさん :2007/05/23(水) 00:13:34
海外品に頼るな!! 国内産を使え!! 自分に合うのがなければ作れ!!
日本の国産品しか使っちゃいけないくらいなら海外に脱出するよ。
日本人は馬鹿が多いから無理だな
ところで wxURL<wxHTTPはメインスレッドから呼ぶと非同期通信になってGetInputStreamした段階で必ずreturn NULLしやがりますが イベント登録も無いし、繋がったタイミングを検出する仕組みが一切ないのですが これは完全にセカンドスレッドで動かすことを想定してこういう仕様にしたのだろうか? これだけwxWidgetsじゃないような作りになってて使い物にならん
まともにLinuxで日本語表示できるようにしてくれ
何年前のLinuxをお使いですか?
394 :
デフォルトの名無しさん :2007/05/25(金) 00:38:13
なんで、はやらないんだろう?
>>394 デカイから。
Xcb のラッパーの Xlib のラッパーの Gdk のラッパーの Gtk+ のラッパーな
ライブラリなんて普通は使いたくないでしょ。
つか未だにUTFとかでゴミはいるだろLinuxでは使えん。
wxSocketBaseのWaitForRead()するとCPU100%になるんだが Readでブロックしてしまう前に排他制御したいのでデータの有無を事前に確認したいのだが このCPU使用率はなんとかできんのか?
398 :
デフォルトの名無しさん :2007/05/31(木) 10:59:42
これ、MSのSilverLightに食われるんじゃないの? Windowsは間違いなくそっちの方向へいくし、Macも使えるし、 LinuxはMoonLightでとりあえず自分的にはGTKよりwxWidgetsのほうが いいなとおもってた口だが、Silverlightのせいでメリットなくなったな。
SilverLight と wxWidgets が競合するようなものだと思ってるところが凄い…
「クルマのカタログスペックでやたら語るくせに、免許に1種と2種の区別があることを知らないみたいなもの」だろ。
例えばある場所からある場所に移動するのに、どの車でどういう行き方をしてるか話し合ってるときに 新幹線が出来ちゃったんでもうその話は終わりだねって感じじゃん?
そいつは多分新幹線にも車にも乗ったことないから、乗り物にさえ乗ればどこにでもいけると思ってるんだろうな、という話。
お前らうざいどっかいけ
Silverlight=アドビ システムズの「Flash Player」に対抗するウェブブラウザ用プラグイン
ずいぶん前に、公式サンプルのバイナリのサイズがあまりに大きかったので、 WxWidgeに興味がなくなったが、先日v.2.8.4をダウンロードしたら、ずいぶん サイズが小さくなっている。Windous環境静的リンクで簡単なものなら、EXE 圧縮なしでも1Mくらいになっている。 で、興味がわいてきてお試し中だが、ライブラリが、UNICODEか否か、リンクが 静的か動的か、各OSが準備している部品を使うか否か、Debug版か否か・・ の組み合わせで16種類もあるので、ライブラリ構築にすごく時間がかかった。
407 :
デフォルトの名無しさん :2007/06/15(金) 18:04:25
目立つようにageておきます。 よろしくお願いします。
新人マダー?
>>406 何で wx を使えもしない人間が wx がお勧めとか書いてるんだよw
適当な誘導だなあ
>>409 実際に使ってる人間は勧めたりしないさ…
使ってるなら勧めるだろw
流れをぶった切って伺いたい 今MSW版の2.8.4ビルドして、samplesのいくつかをDLL Unicode Releaseの設定でこさえて実行したら ウイルスバスター2007が警告出しやがったんだが同じ経験した椰子いる? まぁ、バスタの警告はなんかもう、「俺が知らないプロセスは全部マルウェアだ!!」ってノリに見えるので それ自体は気にならんけど。
マニフェスト。
サンプルの問題では?
翻訳プロジェクト手伝おうと思うんだけど 管理者の人はまだここを見てるのかな
みてますが、プロジェクトは死んでます。死なせちゃってごめんなさい。まだこのプロジェクトに割く余力が生まれないので、当分死んだままだと思います。 一人でもいいからやってみる!っていう気概があるなら、メンバーに追加するので、sourceforge.jpのログイン名教えて下さいね。
417 :
415 :2007/06/26(火) 23:02:44
追加したよ。
419 :
415 :2007/06/27(水) 22:44:28
>>418 どうも
とりあえず細々とやっていきます
420 :
くれくれくん :2007/07/18(水) 00:18:40
すみません、なんでもくれくれ君ですが
WindowsXPノートのHDが暑さでダウン〜。HD交換しましたがシステムが...
間に合わせに日経Linux7月号のDVDからUbuntu7.04日本語版をいれましたが
なかなかいいじゃないですか。
とりあえずLINUXに乗り換えて
前環境を再構築中です(xp+cygwin -> linux)
とりあえずecos cofiguretion tool を動作させたいのですが。
ttp://www.ecoscentric.com/devzone/configtool.shtml wxWidgetsの実行環境が必要みたいで
ここにたどりつきましたが
簡単インストールはどうすればいいのでしょうか?♪〜
以上くれくれくんでした
UbuntuだったらSynapticが最初から入ってるじゃないか
他のスレ見に行ったわけじゃないが明らかにマルチ
421だけど、ああいうのは無視した方がいいのかな。 あの手のタイプがLinuxに関わっても本人のためにならないとは思うけど。
>423 本人のためにならない、だけなら自業自得だからいいんジャマイカ。 と、2.8.4 mswでどうにも最小サイズの指定が効かずに四苦八苦しているど素人が言ってみるテスト。
426 :
デフォルトの名無しさん :2007/08/17(金) 01:53:05
あああ
release buildの途中でコンパイラが落ちちゃうんですが、ご助言を
デバッグビルドはうまくできました。
---
Win2ksp4
MinGW 5.1.3 (GCC 3.4.2)
MSYS 1.0.10
wxMSW 2.8.4
---
configure --with-msw --disable-debug --disable-shared --enable-unicode
---
/c/dev/wxWidgets/build-release/bk-deps g++ -c -o baselib_datetime.o -D__WXMSW__
-I../src/tiff -I../src/jpeg -I../src/png -I../src/zlib -I../src/regex -I../src/expat/lib
-DwxUSE_GUI=0 -DwxUSE_BASE=1 -I/c/dev/wxWidgets/build-release/lib/wx/include/msw-unicode-release-static-2.8
-I../include -mthreads -Wall -Wundef -Wno-ctor-dtor-privacy -ggdb -O2 -fno-strict-aliasing ../src/common/datetime.cpp
../src/common/datetime.cpp: In function `wxString CallStrftime(const wxChar*, const tm*)':
../src/common/datetime.cpp:265: internal compiler error: in dwarf2out_frame_debug_expr, at dwarf2out.c:1602
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:
http://www.mingw.org/bugs.shtml > for instructions.
make: *** [baselib_datetime.o] Error 1
---
以上です
あ、427ですが、GCCのバージョンが最新じゃないですね。 バージョンを上げたらエラーが出なくなりました。 MinGWインストールで最新バージョンが入るんじゃなかったのか(´・ω・`) すんませんでした
wxWidgetsのGUIデザイナで、MSVC8用のアドインみたいなものってあるんでしょうか? あれば、金払ってでも欲しいんですが。
あ、俺もそれ欲しい できれば無料がいいけど
過去ログ斜め読みで流れぶったぎりながら聞くんだけどさ、 Windows(MinGW) で wxGraphicsContext のあたりのクラス使えた香具師いない? コンパイルしようとしたら GDI+ のライブラリがないらしくて、 ./configure で --enable-graphics-ctx を指定してもエラーだらけだよう。 ちょろちょろぐぐってんだけど、MinGW で GDI+ となると情報見つからないし……助けてー。
434 :
デフォルトの名無しさん :2007/09/01(土) 12:55:46
Code::Blocks使ってる方いますか? 結構よさげだと思い、wxGladeから移転したいのですが、 xrcのインポートの仕方が分かりません。 知っている方いましたら教えて下さい。お願いします。
wxPerlのwxHTMLwindowに関して、非常に初歩的ですが質問させてください (環境:win xp sp2, active perl 5.8.8, wxPerl) html形式で文書を表示させるウィンドウを表示させようと思い、wxHtmlWindowを利用しようとしました。 まず、一番シンプルな形でテストしようと思い、wxperlのチュートリアルのただのウィンドウを表示させるスクリプト use Wx; package MyApp; use base 'Wx::App'; sub OnInit { my $frame = Wx::Frame->new( undef, -1, 'wxPerl rules', [-1, -1], [250, 150], ); $frame->Show( 1 );} package main; my $app = MyApp->new; $app->MainLoop; これをwxHtmlWindowに置き換えてみました。(続きます)
436 :
435 :2007/09/10(月) 22:49:35
use Wx; package MyApp; use base 'Wx::App'; sub OnInit { my $frame = Wx::wxHtmlWindow -> new( undef, -1, [-1, -1], [250, 150], wxHW_SCROLLBAR_AUTO , "htmlWindow", ); $frame->Show( 1 );} package main; my $app = MyApp->new; $app->MainLoop; このスクリプトを実行しようとするとエラーメッセージで Can't locate object method "new" via package "Wx::wxHtmlWindow"(perhaps you forgot to load"Wx::wxHtmlWindow"?) at (スクリプトのファイル).pl と表示されます。 ファイルのはじめにwxHtmlWindowを呼び出す必要があるのかと思い、 " use Wx::wxHtmlWindow ; " を足すと Can't locate Wx/wxHtmlWindow.pm in @INC (@INC (モジュールの置き場所のパスwx)).. ... BEGIN failed--compilation aborted at (スクリプトのファイル).pl と表示されます。ex自体は正常にインストールされ、これまで問題なく使えていました。wxHtmlWindow特有の 設定などがあるのでしょうか?原因のわかる方がいらしたらアドバイスお願いします。
>>435 あなたの疑問点とは違うが
> これをwxHtmlWindowに置き換えてみました。(続きます)
ここが既に間違い。wxHtmlWindowはフレームじゃないんで。
他のWindowの中に貼り込むもの。
いきなり見様見真似で突っ込む前にもう少しwxの概念とかを
飲み込んだ方がいいと思う。
438 :
435 :2007/09/12(水) 02:54:10
特に話題もないので初歩的な話もありでは
話題の枝刈りにこだわるには、ちょいと閑散とし過ぎているからね。
FTP なんてコマンドラインやスクリプトでやるもんだと思ってたけど…
秀丸がlinuxにも対応 と聞いて飛んできますた が見間違えだった
ちょっとしつもん。 wxWidges と OpenGL を組み合わせた無償または有償アプリ (少なくとも自作部分に関してはソース非公開が前提) を作るとして、本当だったら、エンドユーザーには wxWidgets と OpenGL を事前にインストールしてもらわないといけない。 それは面倒なので、インストールしていない環境でもそのまま実行でいるように wxWidgets と OpenGL を組み込んだ状態で アプリケーションを作成・配布したい(つまり、wxWidgets と OpenGL のDLLを EXEと一緒に配布または販売)んだけど、これってライセンス的に問題ある?
それぞれのライセンス読もうな。
FAQ も読めない奴は(・∀・)カエレ!! Can I use wxWidgets for both proprietary (commercial) projects, and GPL'ed projects? Yes. Please see the licence for details, but basically you can distribute proprietary binaries without distributing any source code, and neither will wxWidgets conflict with GPL code you may be using or developing with it. The conditions for using wxWidgets are the same whether you are a personal, academic or commercial developer.
英語が読めないスーパーハカー
スーパーハカーと呼ばない
スーパーバカー
>450 昨日半徹だたのでちょとフイタw ……いい加減寝よorz
Can I use wxWidgets for both proprietary (commercial) projects, and GPL'ed projects? wxWidgetsは商用プロジェクトとGPLプロジェクトの両方で使う事ができますか? Yes. Please see the licence for details, but basically you can distribute proprietary binaries without distributing any source code, and neither will wxWidgets conflict with GPL code you may be using or developing with it. はい。詳しくはライセンスを読んでください。 ただ、原則としてあなたの配布物がバイナリ形式(いかなるソースコードも含まない)であり、 なおかつGPLコードが含まれない場合に限ります。 The conditions for using wxWidgets are the same whether you are a personal, academic or commercial developer. この条件は wxWidget の個人利用、教育利用、商用利用にかかわらず適用されます 。。。みたいなことが書いてあるってことであってる?
>>452 >but basically you can distribute proprietary binaries without distributing any source code, and neither will wxWidgets conflict with GPL code you may be using or developing with it.
基本的にあなたはいかなるソースコードも配布せずにプロプライエタリなバイナリを配布する事が出来ますし、
wxWidgets はあなたがプログラムの実行や開発に利用するGPL のコードとライセンスの矛盾を起こす事はありません。
>>452 neither will wxWidgets conflict with ~ は
wxWidgets will not conflict with ~ と読み替えると宜し。
thx. なるほど、neither ~ の部分はそう訳せば良かったのか。。。 つくづく、学校でちゃんと英語をやっておけば良かったと思うよ。
GLCanvasつかってるひといる? これって、一つの frame には GLCanvas しか 配置できないのかな? frame -> panel -> glcanvas とか、 frame -> gridsizer -> glcanvas + textctrl とか やろうとすると、フレーム全体が全く描画されなくなってしまう OpenGLって、コントロール単位ではなく ウィンドウ単位でしか描画してるのかな?
2.6時代だけど、普通にsizerに色んな物と一緒に置いても問題なかった
wxWidgetsは所詮Wrapperだから 普通にOpenGLで多画面出来るかどうかの問題だ 出来るのならプログラムか環境に問題がある
459 :
デフォルトの名無しさん :2007/10/16(火) 15:06:43
460 :
デフォルトの名無しさん :2007/10/16(火) 15:54:23
wxDialog based と wxFrame based について教えて下さい。 ・1つのプロジェクト(というかmakefile?)ではどちらにするか決定するものでしょうか? ・どう違うのでしょうか?(どちらが良いのでしょうか?) 解説サイトでも何でも良いので教えて下さいorz
メインがダイアログかフレームかってこと?
462 :
460 :2007/10/16(火) 18:33:54
そうです。 メイン以外もどうすべきか教えて下さい。
おれの理解ではメニューバーやステータスバーが欲しければFrame、欲しくなければDialogだ。 どちらがいいとか悪いとかいう問題じゃない。好きなほうにしたらいい。決められないなら鉛筆ころがせ。
465 :
460 :2007/10/17(水) 08:39:03
>>463 >>464 そういう内容を知りたかったんです。
この問題は解決しましたが、
1つ1つ問題を解決するの大変orz
Delphiなんかだと、
TFormがウィンドウで、その中に貼り付けるのがTFrameだったりするので、
危うく間違えるところですた。
>>465 知らないものを触る時はまず付属のサンプルを見た方が良いのでは?
余計なお世話かも知れませんが。
467 :
デフォルトの名無しさん :2007/10/17(水) 10:47:19
MacでwxWidgetsする場合は、 コンパイラはgccですか?Xcodeですか?
469 :
467 :2007/10/17(水) 18:25:11
あ、XcodeってIDEであってコンパイラは別なんですか。 Eclipseみたいなもんかぁ。 サンクス
皆さんが、画面を作成するときは、どんなツールを使用していますか?
テキストエディタ
紙とペン、鉛筆
>【A3】C++Builderテクニカルセッション >「wxFormsで始めるwxWidgetsプログラミング」 こういう答えを希望してるわけ?
自動生成だといらない物がごちゃごちゃ入り込んで気持ち悪い
自動生成の要らないものごちゃごちゃに対するアンチテーゼというかアウフヘーベンが、 ”クラスライブラリ+IDE”だお。 これだと差分コードしか表れない。 但し、VC++/MFCは除く。
MFCはAppWizardなしでも使えるよ
>>477 いや、MFCは手書き不可みたいに書いてたから。
手書きMFCなんてやる理由はないとは思うけど。
クロスプラットフォームで独自形式のrich text editorを作りたいと思ってwxWidgetsを使ってみました。 ちょうどrich textのサンプルあったので動かしてみましたが、これって日本語入力できないですね。 どうやらeditor boxみたいなおネイティブのコントロール使ってる場合はOKなんですが 自力で作るコントロールの場合はそのままでは無理っぽいです。 そのあたりハンドルできる方法ってないですか? 今はWinowsでVC使って動かしています。 このあたりクロスプラットフォームで日本語入力も完璧なのって結局Javaなんですかね・・・ なるべくならC/C++でやりたいと思ってます。 wxWidgets以外にもいい候補あったら教えてください。
>>479 自分で実装するか、IIIMF とか Anthy とか使ってみるかじゃないかな。
Windowsって書いてるけど
クロスプラットフォームって書いてるけど
483 :
479 :2007/10/29(月) 00:04:53
ありがとうございます。 wxWidgetsだけではやっぱり無理っぽいですね。 インライン入力の制御は面倒なのでできればありもので済ましたいです。 で思いあたったことにマルチプラットフォームといえばOpenOfficeがありました。 あれのtoolkitってどうなってるんですかね。 SDKあるみたいなのでちょっと調べてみます。
Mozilla も見てみると良いよ。
wxImage::Rescale(w, h, wxIMAGE_QUALITY_HIGH) が遅すぎて使えないんだけど・・・。 なんかないですか?
>486 思いつきだがそこはImageMagickに任せてしまうとか。 wxImage <-> ImageMagickのイメージ形式 の変換コストが問題になるほどだとあかんけど。
>>486 パッと見ただけの実に適当な印象だが。
wxImageはRGB24bitのピクセルデータと、8bitのαチャンネルのデータを
別々に持ってるようだねえ。で、イメージの配列には当然のように
バイト単位でアクセスしている。
ネイティブな形式が例えばAGBRなら、さらにそれをいちいち変換して描画
するんだろうね。
いかにも遅そうだねえ。
489 :
486 :2007/11/01(木) 01:21:15
>487 >488 レスありがとうございます。 >486 別プロセスで ImageMagick 起動ってことですよね。 たぶんそっちの方がコスト的には高いかと。 うーん。せめて StretchBlt でリサイズしつつメモリに転送とか できたらいいのに・・・。
>489 ん? ライブラリリンクしちゃえば、という積もりだったんだけど。 っても今確認したらGPLかぁ > ImageMagick
491 :
デフォルトの名無しさん :2007/11/01(木) 08:04:20
wxImageは内部が汎用なので、 ポインタで直接処理した後wxBitmapに変換して使用するしかないかと。 画面がリサイズされたときなど必要に応じて最低限の変換で対応するか、 OpenGLあたりを使うほうがよさそう。
492 :
デフォルトの名無しさん :2007/11/01(木) 15:56:10
公開以前に、ライセンスを読んでもいない奴は使うな、が正しい。
>>492 1. LGPL にソース公開の義務は無い
2. wxWidget は LGPL の制限を緩める為の追加条項を加えたライセンスを採用している
3. 何か契約をする際は必ず原文に目を通した方が良い
495 :
486 :2007/11/02(金) 01:02:56
>490 大変失礼しました。 ImageMagickのライブラリってあるんですね。勉強不足でしたorz wxIMAGE_QUALITY_NORMALで写真の画像をリスケール したところ、思ったよりも画像が崩れなかったので、 しばらくはコレを使おうと思います。 32x32とかのアイコンとかを拡大するとダメダメだけど・・・
496 :
デフォルトの名無しさん :2007/11/04(日) 14:03:59
ボタンの配置について質問です。 ダイアログで「OK」ボタンと、「キャンセル」ボタンを横並びで表示したいのですが、 縦に並んでしまいます。 どうしたらよいのでしょうか?
スレタイ嫁
>496 エスパー初心者がいってみよう wxHORIZONTAL
絵スパー初心者二号がテレパシー中 ・・・ ・・ ・・ ・ ・・・ ディスプレイを縦にするといいと思うよ。
日本語マニュアルが中途半端なのがな〜
501 :
デフォルトの名無しさん :2007/11/06(火) 01:08:10
zipを扱うことができるみたいですが、どうやったらいいのかわかりません。 サンプルを見てもよくわかりません。 ほかにわかりやすいサンプルはありませんか? サンプル:console.cpp 3238行目
以前使ったが、別段何を悩むこともなかったぞ。
これからVC2005EE使って開発する予定なのですが GtkmmとwxWidgetsのどちらを使うか迷っています 既に両方使ったことのあるかたにアドバイスを 頂きたいのですが
gtkmm の方が開発してて気持ちいいけど、 wxWidgets の方がアプリを使ってて気持ちいい
テキストボックスやComboBoxでダブルクリックしたら これまで打ち込んだやつがヒストリーとして表示するように したいんだけどこういうのはなんか用意されているでしょうか?
>>504 すごく分かりやすい説明です
本当にありがとうございました
とりあえず両方やってみます
wxWidgetsで分からないときは
ここを頼りにしていますので
よろしくお願いします
>>506 > wxWidgetsで分からないときは
なんたらoverview
リファレンス
本体ソースコード
サンプル
の順かなあ、俺が頼りにしたのは。
>>505 wxBlog見たらver3.0でつきそうな感じだね。
>>84 1,ゴッドサイザー
2,アステサイザー
3,三ツ矢サイザー
4,グレンサイザー
wxBlogでの3.0の新機能の説明(英語)がいまいち良く分からんです。 Unicodeがどうのこうのとあるんですが、Unicodeビルドしなくても デフォルトでUnicodeビルド扱いになるということなんでしょうか?
511 :
デフォルトの名無しさん :2007/11/14(水) 23:46:59
はい使ってるOSとコンパイラは?
Windows XPで MinGW 使ってます。
wx/wx.hがあればいい。それだけ。
どこにあればいいんですか? C:\MinGW\includeにはなくて、 C:\msys\1.0\home\Owner\wxMSW-2.8.6\include にあります。 C:\msys\1.0\home\Owner にファイルを作りコンパイルしたところできませんでした。
make install してやってから `wx-config --cxx` -o hoge.exe hoge.cpp `wx-config --cflags --libs` みたいにしてコンパイルしれ
ありがとうございます。できました! 今までやってた $g++ -c hello.cpp 'wx-config --cppflags' ではできないみたいですね。
cppflagsが返すのはCプリプロセッサのためのオプションだぞ
>>510 ・今までANSIとUnicodeの二つのビルドがあったのが、一つになる。
・wx内部では全部Unicodeで処理するが、APIはANSIとUnicode両方が用意される。
・ANSIのAPIは逐一Unicodeにエンコードして処理する。
ってところだと思う。
>>486 それのプログラム見たらわかるけど効率悪い
自分で組んだ方がいいよ
wxImageMagickを今開発中のはず wxImageにラップするようだけど それを待ってもいいかも
サイザーの使い方を教えてください。 ********************** * * * A * * * * * ********************** * B * C * ********************** 以上のようなレイアウトで、 ・縦幅が変化した場合はAのみ ・横幅が変化した場合はAとC それぞれ動かしたいのですが、 いったいどうやってサイザーを設定すればいいのでしょうか? よろしくお願いします。
>>522 試してないけどこんなんでどう?
wxSizer *root = new wxBoxSizer(wxVERTICAL);
root->Add(A, 1, wxEXPAND);
wxSizer *sub = new wxBoxSizer(wxHORIZONTAL);
sub->Add(B, 0, 0);
sub->Add(C, 1, 0);
root->Add(sub, 0, wxEXPAND);
SetSizerAndFit(root);
BoxSizerの指定方向に対しては、Add()のproportionを1以上にするとサイズ変更される。
もう一つの方向に対しては、wxEXPAND指定すれば、領域を埋めるようにサイズ変更される。
>>523 それでできました!
CにEXPANDを指定したら、縦に広がったりしてかなり困っていました。
サイザーってそういうふうになっているんですね。
どうもありがとうございます。
フォントの高さをピクセル単位で取得したいのですが、 > font.GetPointSize(); だと値が表示されている高さよりも明らかに小さくなります。 正確な値を得るにはどうすればいいのでしょうか? よろしくお願いします。
ポイントとピクセルは全然違う単位だ
>>526 それなら、ポイントをピクセルに直すにはいったいどうすればいいのでしょうか?
解像度とか関係ありそうなのですが、よく分からないのです。
>>527 wxDC::GetCharHeight()
がそれっぽいですがベースラインより下の部分も含んでるのかどうかはわかりません
>>528 それを参考にして書いていたら、wxWindowにも
同じ名前のドンピシャなメソッドがあることが分かりました。
ありがとうございました。
分割ウィンドウ(wxSplitterWindow)を使用した場合、ステータスバーの表示/非表示 切り替えは出来ないものなのでしょうか。サンプルのsplitterに、statbarからの表示/非表示 切り替えコードを追加してみたのですが、初回の非表示(失敗)後に、分割ウィンドウの サイズが変更不能となってしまいます。
531 :
530 :2007/12/05(水) 21:18:50
すみません、自己解決しました。 wxStatusBar* statbar = GetStatusBar(); : statbar->Hide(); //SetStatusBar(NULL); // <- 親フレームと分割ウィンドウの連動が解除されてしまうのでコメントアウト SendSizeEvent(); // 非表示部が即時更新されないので追加 :
VS2005の変数ウォッチのようなことがしたいのですが、そのためのコントロールを探しています。 変数ウォッチとは、プログラムのデバッグ時にint型やクラス型で定義された変数の 名前や中身や型を表示するものです。 変数の名前や型だけを表示するならばwxListCtrlでもwxDataViewCtrlでも何を使ってもいいのですが、 メンバをもつ変数を表示させることを考えると、 どうしてもオブジェクトをツリー形式で表示させたくなります。 また、デバッグ中にウォッチする変数を新たに追加したくなった場合にも 簡単に追加できるものがいいのです。 つまるところ、 ・できれば名前や型などの欄が作れる ・ツリー形式で表示できる ・新規のアイテムが簡単に追加できる これらのことができるコントロールを探しています。 個別の条件を満たすものは見つかるのですが、そのすべてを満たすものが見つからず苦心しています。 (ちなみに、VS2005ではwxDataViewCtrl(wxGrid)のアイテム中にwxTreeCtrlのようなものを表示しています) 条件に合うコントロールがあれば教えていただきたいのです。 よろしくお願いします。
>>533 wxCoreというのは初めて知りました。
サンプルも動かしてみたのですが、これは素晴らしいですね。
どうもありがとうございました。
スクロールバー領域を除いた ウィンドウのクライアント領域のサイズを得ることはできますか?
ウィンドウのクライアント領域−スクロールバー領域=スクロールバー領域を除いた ウィンドウのクライアント領域のサイズ
>>536 すいません。説明が足りませんでした。
クライアント領域からスクロールバーの領域を除くためには
1,スクロールバーが表示されているかを検出する
2,表示されていたら、そのスクロールバーのサイズ分だけクライアント領域から除く
という主順を踏む必要があります。ところが自分にはこの二つともやり方が分かりません。
例えば、スクロールーバーはコントロールの内容によって表示されたり消えたりしますよね。
HasScrollbarメソッドはどうもスクロールバーの非表示を検出してくれないようで、
ウィンドウスタイルによって値が決まってしまいます。
つまり、スクロールバーが表示されているかを正しく知る方法が自分には分かりません。
また、普通のウィンドウクラスにはスクロールバーのサイズを得るメソッドが無い
(多分どこかにはあると思うのですが自分は知らない)
のでスクロールバーのサイズを得ることもできません。
wxScrolledWindow::GetViewStart void GetViewStart(int* x, int* y) const Get the position at which the visible portion of the window starts. Parameters x Receives the first visible x position in scroll units. y Receives the first visible y position in scroll units. Remarks If either of the scrollbars is not at the home position, x and/or y will be greater than zero. Combined with wxWindow::GetClientSize, the application can use this function to efficiently redraw only the visible portion of the window. The positions are in logical scroll units, not pixels, so to convert to pixels you will have to multiply by the number of pixels per scroll increment.
>>538 またまたすいません。
対象としているコントロールにはwxTextCtrlやwxTreeCtrlなどの
wxScrolledWindowを継承しないものも含まれています。
おいおいいいかげんにしろよ さすがにエスパーはいないぜ 自分で英語のリファレンス読めよ糞
541 :
デフォルトの名無しさん :2007/12/17(月) 17:40:00
例えば、ボタンをディセイブルにする、とかを調べたくて、 コントロールのリファレンスを読みたいのですが、教えて頂けないでしょうか?
542 :
541 :2007/12/17(月) 17:57:54
ヘルプにAlphabetical class referenceってのがありますた。 これがコントロールリファレンスですか。 >Members ってのがメソッドで、 >Derived from というのが派生元クラスでしょうか? イベントも理解できれば完璧ですが、wx-Devがイベントハンドラ作ってくれるから、理解しなくても良いかなぁ?
543 :
541 :2007/12/17(月) 18:33:28
wxDevってコード補間ありますたorz でも、WxButton::Enable(bool)が候補に出ないなぁ。コンパイルはトオタケド
wxWindow::Enable virtual bool Enable(bool enable = true)
545 :
デフォルトの名無しさん :2007/12/28(金) 10:15:54
wxFrameって、OnCreateみたいなイベントハンドラはありませんか?
546 :
545 :2007/12/28(金) 10:18:15
あ、OnInitDialogは、Frameオブジェクトの生成された後、1回コールされると考えてあってますか?
547 :
545 :2007/12/28(金) 11:18:39
wxFrame::OnInitDialogがコールされないんですが、、、 仕様ですか?
Linuxでwxのアプリ閉じる時必ずsegfaultするのは俺だけでしょうか。 wxのサンプルについてくるのでも必ず (a.out:32364): GLib-GObject-WARNING **: gsignal.c:1741: instance `0x908820' has no handler with id `673' (a.out:32364): GLib-GObject-WARNING **: gsignal.c:1741: instance `0x8b4d30' has no handler with id `531' (a.out:32364): GLib-GObject-WARNING **: gsignal.c:1741: instance `0x8cfa90' has no handler with id `604' (a.out:32364): GLib-GObject-WARNING **: gsignal.c:1741: instance `0x8b4850' has no handler with id `465' (a.out:32364): GLib-GObject-WARNING **: gsignal.c:1741: instance `0x5f4df0' has no handler with id `326' (a.out:32364): GLib-GObject-WARNING **: gsignal.c:1741: instance `0x5f4840' has no handler with id `48' zsh: segmentation fault ./a.out みたいな感じで落ちます。 Glib-GObject-WARNINGの部分はInput Methodがuimだかららしいのですが。
ライブラリorファイルが足りてないに一票
551 :
549 :2008/01/07(月) 03:37:44
>>550 ありがとうございます。
環境を書き忘れてました、すいません。
当方64bitのGentooでしたのですが、試しに32bitのDebianで試してみたところ
segfaultで落ちることは無いようです。Glib-Object-WARNINGはuimを切ると出なくなりました。
wxGTKのバージョンは2.8.7.1です。
もしかしたら私の環境だけなのかと思い書かせて頂いた次第です。
/lib64 だったりとか
553 :
549 :2008/01/08(火) 00:14:53
wxGTKのバージョンを2.8.7.1-r1にしたら落ちなくなりました。 どうやらwxGTKのバグのようでした。どうもありがとうございました。
wxPythonでwxGridのwxGridCellChoiceEditor
でセルにプルダウンなメニューを出しているのですが、動作がおかしいのです。
Windowsでは期待道理に動くのですが、Linuxだと候補から選択してもセルに
値が入りません。
ttp://d.hatena.ne.jp/Megumi221/20071123 の方も同様にいわれているのですが、どなたか解決された方いらっしゃらない
でしょうか?
Linuxのgtkとかのライブラリ依存なのでしょうか・・・
555 :
554 :2008/01/10(木) 23:50:38
gtk2を2.10.4にしたら出なりました。お騒がせしました。
そんなもんじょのいこ ってそれはえなりだよ
とにかくGTKがダメダメだということだけは分かったw
このスレで前に似たような質問があったのですが・・
どうしても解決しないので質問させてください。
環境はWindow XP Home MinGW です。
Eclipse CDT からMinGW を使って普通のcppファイルのコンパイル自体はできる状況です。
自分もここ
http://0xcc.net/pub/uu-2004-08/ を見て色々設定したのですが、wxGladeを使って生成したhello.cppをコンパイルしようとするとエラーが出ます。
このページではwxWigdetsのバージョンは2.5.2が扱われていますが、なぜか自分の環境で2.5.2をインストールしようとすると./configure --disable-shared --disable-threads →make の時点でエラーが出るので
ver2.8.7を./configure --disable-shared --disable-threads →make して、make install もしました。
この状態でwxGladeで生成したhello.cppを上記ページで書かれているように
g++ -c hello.cpp `wx-config --cppflags`
すると、
g++: 'wx-config: No such file or directory
cc1plus.exe: error: unrecognize command line option "-fcppflags'"
というエラーが出てしまいます。
`wx-config --cxx` -o hoge.exe hoge.cpp `wx-config --cflags --libs`
とすると、
''wx-config' は内部コマンド外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。
というエラーになります。。
どうすればよいのでしょうか??どなたかご教示頂けると幸いです。
あなたそりゃUNIXのシェルを前提としてる操作をWindowsのコマンドプロンプトで やってもダメでしょうよ。
wx-configはコンパイルオプションを吐くシェルスクリプト MSYSを導入して、rxvt上で実行しろ
561 :
デフォルトの名無しさん :2008/01/21(月) 11:16:12
回答ありがとうございます。
http://0xcc.net/pub/uu-2004-08/ ここの、Windowsにインストールする場合の説明のところを見てやったのですが・・
あと558の
wx-config --cxx` -o hoge.exe hoge.cpp `wx-config --cflags --libs`
wx-config --cxx` -o hello.exe hello.cpp `wx-config --cflags --libs`
の間違いでした。
>560 さん 回答ありがとうございます。MSYSは入ってます。 MSYSを導入して、rxvt上で実行 というのは、C:\MSYS\1.0\bin\rxvt.exe を立ち上げて そこからg++ 〜 でコンパイルしろってことでいいんでしょうか。 家帰ったら試してみます。ありがとうございます。
コンパイル云々の前に、そのまま素で $ wx-config --cflags とでも打ってみるんだな どんな効果がでるか一発で分かる
''wx-config' は内部コマンド外部コマンド、 操作可能なプログラムまたはバッチファイルとして認識されていません。 というエラーになります。。
いや、だから、wxWidgets はユニックス系なので、 windows のコマンドラインじゃなくて ユニックス系の shell でやらなきゃ ...
566 :
558 :2008/01/21(月) 14:00:43
>565さん 564は自分じゃないですよ。 多分あまりにも基本的な部分で間違ってるので他の方に茶化されたのだと・・ でも > wxWidgets はユニックス系なので、 > windows のコマンドラインじゃなくて > ユニックス系の shell でやらなきゃ ... ここらへんわかってなかったのでご指摘いただけてラッキーでした。 ありがとうございます。 シェルの勉強等まだ手をつけておらずほぼ全く分からないもので・・ 初心者質問ばかりしてすいません >564さん >563さん ありがとうございます。帰ったら試してみます。
初心者なら、まずLinuxなりFreeBSDなりでやった方がいいよ。 Windowsでやるよりはるかに簡単だから。ネットの情報もほとんどUNIX系だし。 一旦それでやってればWindowsでもすぐできるようになると思う。 UNIX系の情報を見ながらWindowsで一発でやるには両方の知識が必要。
実行ファイルににxrcを組み込むか、それと同等の事って出来ないでしょうか? xrcの存在意義を無視してるのは分かるのですが、 ソースは簡潔&実行時にはファイル一つ、にどうしてもしたくて..
ファイルひとつにこだわるならアーカイブ白と
>>568 xrcのデータを実行ファイルに持たせることなら普通に出来る。ドキュメント読め。
558です。 ご指摘されたとおりrxvt上からg++ 〜でやってみたのですが wx/wx.h No such file or directory などその他たくさんエラーが出てしまいました。 wx-config --cxx` -o hello.exe hello.cpp `wx-config --cflags --libs` では wx-config-cxx commnad not found と言われてしまいました。 >567さん Linuxでやる方が簡単なんですか。。 一度VMwareにUbuntu入れてやろうと思ったのですが重くてやめてしまってました。 Linuxの方が簡単なのであればそっちでやってみることにします。 ありがとうございました。
簡単にGUIアプリが作りたいだけなら、wxPython でやってみるって手もある。
>>568 に便乗質問なのですが、
xrcでフォームの位置やサイズをアプリケーション終了時に保存することはできますか?
>>571 もうちっとコマンドラインとか、パスとか、そういうことを勉強したほうがいいと思うな ...
>>572 そういえばマイナー同士の組み合わせの割には、wxPythonの日本語情報って
ググると意外に出てくるね。
最近のが多いから はじめたばかりの君は恵まれている 昔は見つからなかった
なるほど。ということは、ちょっと前に「情報が少なかったのに頑張った」 猛者たちがあらわれたってことか。感謝感謝。
っつーかwxHogehogeの中で一番楽なのがwxPythonな気がする
今pythonがアツいってのもあるね wxに限らずPyGTKやらPyQtやらで作られたアプリが増殖中
582 :
デフォルトの名無しさん :2008/01/29(火) 18:06:45
アプリケーションのトップのエラーハンドラって書けますか? C++ Builder/VCL だと、 >void __fastcall TForm1::ApplicationEvents1Exception(TObject *Sender, Exception *E) みたいな感じで書くんですが。
C++標準の例外じゃダメなの?
いや、それで良いのです。throw するのはC++の例外。 アプリの一箇所、一括でcatchしたいだけですが、どう書けば良いでしょう?
int main() { try { // main routine } catch(...) { // error handling } }
Ver2.8.6使ってるけど、 wxApp::OnUnhandledExceptionのドキュメント見ると、 OnRunをオーバーライドしてそこでキャッチしろって書いてるよ。 int MyApp::OnRun() { try{ return wxApp::OnRun(); } catch(std::exception &e){ ... } }
588 :
582 :2008/01/30(水) 08:41:31
589 :
582 :2008/01/30(水) 10:36:01
ヘルプの内容(
>>587 )確認しました。
OnRunオーバーライドして、エラーはcatchはされるんですが、catchの前にエラーが出てしまうのは何ででしょう。
590 :
582 :2008/01/30(水) 10:39:12
OnExceptionInMainLoop()をオーバーライドして、return trueしたところ、無問題になりました。 有難うございました。
591 :
582 :2008/01/30(水) 10:44:40
あれ?例外が補足されなくなちゃったorz
592 :
587 :2008/01/30(水) 11:20:47
bool MyApp::OnOnExceptionInMainLoop() { throw; } でMyApp::OnRun()のcatchに直通できた。 wxのエラーダイアログの中止ボタン押したときの処理もこうだから、 たぶんこれで問題ないと思う。
593 :
582 :2008/01/30(水) 11:28:06
594 :
582 :2008/01/30(水) 11:51:30
Winでは上手くいったのですが、 wxMac-2.8.7では、MyApp::OnOnExceptionInMainLoop()がコールされずに、 >シグナル 6(SIGABRT)により終了しました。 で終わってしまうのは何ででしょう? throw を丸々囲んだら、ちゃんとcatchされますので、C++例外オフの問題じゃないみたいです。 念の為configureを調べても、 >checking for --enable-no_rtti... no >checking for --enable-no_exceptions... no です。
596 :
582 :2008/01/30(水) 13:25:38
あれー、 >wxMac-2.8.7\samples\except で、 コンソールからmakeしましたが、 アプリでThrowメニュー(int/string/object)を実行すると、アプリがエラーで吹っ飛びます。 どうも、wxMacのバグですね。 当面は、実行メニューをそれぞれtry-catchで囲んでおきます。 開発中にcatch内容が変わったりすると、メンドイですね。
すいません質問させて頂きたいのですが、
http://0xcc.net/pub/uu-2004-08/ このページ見てwxGladeでc++のコードを生成しようと思って、プレビューまでは普通に出来たのですが、Generate Codeボタンを押すと
An exception occurred while generating the code for the application.
This is the error message associated with it:
'ascii' codec can't encode characters in position 28-33: ordinal not in range(128)
こんなエラーが出てコードが生成できません。どうすればいいでしょうか?
環境は
Ubuntu7.1.0
libwxbase 2.8.4.0
libwxgtk 2.8.4.0
python-wxglade 0.5
python-wxgtk 2.8.4.0
python-wxtools 2.8.4.0
python-wxversion2.8.4.0
です。
どなたかアドバイス頂けると幸いです。。
対症療法だが日本語使うのをやめろ
てかエラーメッセージ読めよ…
レスありがとうございます。 エラーメッセージ読んでますが読んで意味が分からなかったので質問させて頂きました。 エラーメッセージで検索したりもしてみたんですが関係ありそうなのが出てこなかったので・・ 日本語ですか。特に使ってないと思うのですが・・
レスありがとうございます。 エラーメッセージ読んでますが読んで意味が分からなかったので質問させて頂きました。 エラーメッセージで検索したりもしてみたんですが関係ありそうなのが出てこなかったので・・ 日本語ですか。特に使ってないと思うのですが・・
英語が読めないならば、エラーメッセージを英日翻訳ソフトに入れると良いかもよ。 ascii文字以外が入っているかもう一度確認して見てください。 ascii文字の意味はわかりますか?
親切にありがとうございます。 いえ、英語は分かるのでエラーメッセージの翻訳はできるんですが、それでも意味が分からないということなんです。 ASCII文字は分かります。 「ascii文字以外が入っているか」っていうのは、どこを確認すればいいのでしょう??
インターフェースに日本語つかってるということなんじゃないの? アルファベットだけつかったつもりでも、 まちがって全角スペースが入るということもあります
>>602 直接的な答えじゃなくて申し訳ないけど、俺がやるなら:
・エラーメッセージを出力している部分の wxGlade のソースコードを読む
・エラーが出なくなるまでウィジェットを減らしてみる
ソースファイルを1バイトずつ読み込んで値が全部0以上127以下になってるか調べればいいと思うよ
解決しました。 単純にコードを吐き出すパスに「デスクトップ」が入っていただけでした・・汗 回答くださった方々ありがとうございましたm(_ _)m
これはずっこけざるを得ない. まぁありがちだとは思うが. ubuntu-jpも余計なことしてくれるよな. 'デスクトップ'は英語名に直しとき.
デスクトップで作業してんじゃねーよ、カス
まあ、トラブルの原因のほとんどは「単純」なミスだよね
fedora8のwxwidgets(2.8.4)で wxDirPickerCtrlで起動後初回の選択のみ反応しないのですが, (GetPathに反映されず,ハンドラも呼ばれない) 同じような症状の方いませんでしょうか? 使い方でミスをしてるのか,バグなのか分からなくて困ってます.
今ようやくHello,worldが作れたんだけれど、66KBだった。 4MBぐらいになるってどこかに書いてあったのだけれど。
静的リンクだとMBになるよ
てことは、静的リンクになってなかったってことですよね。 特別なにもしてないと静的リンクにならないんでしょうか。 ところで、Linuxだと g++ -c hello.cpp `wx-config --cppflags` g++ -o hello hello.o `wx-config --libs` で普通にコンパイルできたんですが、 Windows Home でやろうとすると g++ -c hello.cpp `wx-config --cppflags` で wx-config -cppflags: No such file or directory と言われる、けど、hello.oは生成される。 そして g++ -o hello hello.o `wx-config --libs` でも同じように wx-config --libs: No such file or directory と言われるけど、今度は何も生成してくれない。 のはなんででしょう。。
>>615 >特別なにもしてないと静的リンクにならないんでしょうか。
つ ldd
スレ違い C初心者スレ池
>>615 >今度は何も生成してくれない。
>のはなんででしょう。。
太陽が眩しかったから
Linux が素人にも使いやすくなって、Windows のコマンドラインと Unix のシェルの違いもわからないひとが GUI プログラムを コンパイルできるようになったというのは良いことなのやら悪いことなのやら ...
ただの馬鹿なのが問題なんだ。 たとえ素人でも疑問を追及する意思があれば間抜けな質問を垂れ流したりはしない。
622 :
デフォルトの名無しさん :2008/02/03(日) 17:02:57
>>612 について情報をお持ちの方は居ませんでしょうか…
すいません、お聞きしたいのですが、 ボタンが押されたらアプリを終了するようにしようと思い、 class MyFrame: public wxFrame { protected: wxButton* button_1; }; // wxGlade: end class BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_BUTTON(button_1, MyFrame::OnExit) END_EVENT_TABLE() void MyFrame::OnExit(wxCommandEvent& WXUNUSED(event)) { Close(TRUE); } みたいに書いてみたのですが、(はしょりまくってます) コンパイルしようとすると hello2.h:31: error: invalid use of non-static data member ‘MyFrame::button_1’ hello2.cpp:13: error: from this location のようなエラーが出ます。 どこがおかしいでしょうか?? 初心者質問ですいません。
普段Windows使ってるのでよく分かんないんですが、EVT_BUTTONの後に 指定するのは変数名ではなくて、多分wxButtonをnewする際に指定する コマンドID(wxID_EXITとか)かも…。 EVT_BUTTON(wxID_OK, MyFrame::OnExit) : MyFrame::MyFrame(...) button_1 = new wxButton(this, wxID_EXIT, wxT(“OK”), wxPoint(200, 200)); :
626 :
625 :2008/02/10(日) 08:16:38
orz… EVT_BUTTON(wxID_OK, MyFrame::OnExit) ↓ EVT_BUTTON(wxID_EXIT, MyFrame::OnExit)
>>623 おれはDECLARE_EVENT_TABLE()とかの後ろにセミコロンを置いてる。
wxWigetsのiniファイル読み書き専用関数とかあるんでしょうか?
630 :
628 :2008/02/12(火) 13:24:31
サンクス。やっぱこういうのが標準であると便利ですよね。
wxWigetsのStringListはありますか?
633 :
631 :2008/02/13(水) 09:46:38
有難うございます。 wxArrayString.Text (Itemを改行コードを挟みながら連結)みたいなメソッドは無いんですね。 自作するしか無いか。 関係ないけど、やっぱ改行コードってC++のendlを使いますよね? まさか、wxWidgetsで、CRとかLFをラップしてくれてたりしないですよね? 出来れば、wxWidgetsが改行コードのグローバル変数を持ってて、 初期処理でどのプラットフォームでもCRLFで初期化してやろうかと思ったのですが。
634 :
631 :2008/02/13(水) 09:50:17
>関係ないけど、やっぱ改行コードってC++のendlを使いますよね? wxWidgetsのヘルプ読んでると、 >std:string互換関数の利用が強く推奨される! >そして遅かれ早かれstd::stringを使い始めるであろうwxWidgetsの将来のバージョンとの互換性を保つ. とあるから、 wxStringより、std::string推奨なんですね。 文字列についてはC++の標準を使えって意味は分かるけど、std::stringって機能が弱いおね。
>>634 >std::stringって機能が弱いおね。
たとえばどんな?
std::stringだと、 string str1; str1 = "a" + (string)"b"; みたいに書けないことない?(自分の勉強不足かも) それとか、UpperCaseが無いわけじゃないけど、書きにくかったりとか。
string std::operator+(const char *lh, const string &rh); は標準で入ってたと思う。
あ、+ 演算子は実装されてますか。 gccでエラーだったんですが。(勘違いかも)
MinGW gcc3.4.5では大丈夫だね。
STLって、MemoryStreamみたいな可変バイト列ってありましたっけ? vector char とかするのかなぁ? (ちょっとスレチ)
stringstream
>>641 どうも。それ使います。insertメソッドとかもありますね。
NULLで切れないと信じて。
>string str1; >str1 = "a" + "b"; は書けます。 >str1 += "a" + "b"; は書けないんですね。 ちょっと不便。
全然
645 :
デフォルトの名無しさん :2008/02/13(水) 20:10:56
べつに
str += "a"; str += "b"; は出来るだろ。 ていうかC++スレでやるべきだと思うんだ・・・。
ま、C++だしな。 そのへん楽したかったら、 wxPython wxErlang wxHaskell wxLua wxPerl wxRuby wxSqueak wx4j wxJavaScript あたり使ったらいんじゃね?
C/C++は "a" "b" って書いたら "ab" って書いたのと同じだけどな。 リテラルだけだが。
> wx4j へえー、4j ってプログラミング言語があったのか・・と思った ググって見ると、・・このスレのテンプレにすでに書いてあった・・
1、プロセスを跨いだ書き込みができるコンソールクラスはありますか? (wxで無くともポータブルなら何でもかまいません) 2、↑を押すと以前選択された文字列が出てきたり、 選択可能な文字列群を設定すればtabキーで勝手に補完してくれる なんちゃってシェルのようなクラスはありませんか? よろしくお願いします。
2番目はreadlineじゃ駄目なのか?
>>651 readlineってこういう事に使うライブラリなのですか。
初めて知りました^^
これで全然問題ないです。
どうもありがとうございました。
653 :
624 :2008/02/16(土) 00:48:57
>>625 さん
返信めちゃくちゃ遅れてすいません。
ご指摘された通り直したら意図した通りに動きました。
ありがとうございましたm(_ _)m
>>654 自分も探しましたよ。ストールマンの呪縛から逃れるために^^
そこのlibeditの最終リリースが2001年8月だったので
何じゃコリャと思ってしまったのですが、
Googleで探してみるとちゃんと新しいのもあるみたいですね。
ただ、マルチバイトが使えない&直すのは難しくないが「需要がない」
という内容のMLを見たときは少しびっくりしました。
たしかにコンソールで日本語打ちたいと思うケースはあまりない
> cd C:¥デスクトップ¥夏休みの宿題¥プロジェクト1¥宇宙シミュレータ > bigbang.exe 初期値1.xls > 結果1.xls
後々ターミナルからアクセスすることを考えると日本語ファイル名は打つのめんどくさいから付けない
ubuntuの「デスクトップ」をどうにかしてください
>>658 自分で作らなくても、仕事だと嫌ほど受け取る。
663 :
デフォルトの名無しさん :2008/02/17(日) 02:32:40
2.8.7リリースされてるけど最近は流行ってないの? てかスレ違い?
ごめん微妙に誤爆
というか、流行ってた頃ってあったの?
気づかずにお世話になってる人はいると思うがね vlcとか
vlcねぇ〜 あれってなんであんなにバイナリのサイズが小さいの? VCとかで作ってるとどんなに気を使ってもMBサイズの大きさになってしまう・・・
libwxwidgets_plugin.dll 2.66 MB (2,793,984 bytes) こういうカラクリ
あー、もしかしてライブラリをビルドするときにDLLでビルドすればいいのか 納得しました
実行ファイルさえ小さければDLLが多少でかくてもそんなに文句は出ないという 意外と盲点かもしれないね
てかサイズ大きくてもいいからDLL1ファイルだけってできないん?
MONOLITHICのSHAREDじゃ駄目なのか。 試したことないが。
wxWidgets用のRADツールはWinでならどれ使うのが良いでしょうか?
どれを、と言うほど選択肢あるのか? wxGlade, wxFormBuilder, wxDesigner, wxSmith, VisualWx... あ、結構あるなw
wxWorksってのも違うの?
いやいや、DLL分けた分起動遅くなるだけじゃん。 Linuxのように、ディス取り標準ビルドの共有ライブラリが一つあってそれが基準になるなら良いけど、 Windowsではオレオレビルドのdllがまかり通るからstaticリンクが無難。
wxってsetup.hでビルドオプション変更できるみたいだけど、 Linuxで共有ライブラリのビルドオプションが気に入らなかったら、 staticリンクにしろってことでいいのかな?
>>678 UN*X 系は RUNPATH や LD_LIBRARY_PATH で対処する方が多いんじゃないかな。
wx みたいな、でかいライブラリを static にする事は殆ど無いと思うよ。
wxPythonの2.6なのですが、 gridの任意のセルに、Ctrl押し下げ+マウスの左クリックイベントを送りたいのですが どのようにすればいいですか? だれかとっかかりだけでも教えてください。お願いします。
wxDev-C++いれてみたけど かなり頑張ってるな。
wxwidgetsってエラーが出てコンパイルできねーんだけどやる気あんのか中の人。
684 :
デフォルトの名無しさん :2008/02/24(日) 10:02:28
C言語でクロスプラットフォームなGUIプログラミングしようと思ったら wxWigets or QT or GTK どれが良いですか? wxWigets の環境をうまく作れなかったので、QT入れてみたのですが・・・。
初体験するなら、恋人、ナンパ娘、風俗嬢の誰がいいですか? 恋人をうまく作れなかったので、風俗嬢に挿れてみたのですが・・・。
>>684 が挙げた3つの中でC言語なのはGTK+だけ
妹に一緒にお風呂に入ろうと誘われたんですがどうすればいいですか?
>>685 初体験なのに3つも選択権をもっているような人は
このスレに来てはいけません
>>687 具体的に何を迷っているのか分からない。
なぜ考える必要があるの?
妹=42歳(千代大海似)
690 :
デフォルトの名無しさん :2008/02/24(日) 19:56:56
wxを使ってMindmapエディタを自作したいと思ってるんですが、 複数のテキストボックス(サークル)間にリンクを張って 表示するのに便利なモジュールってありますか? # うまく説明できなくてすみません。 snapshotを見ると、UML図を書けるようなアプリはあるようですが、、、
そんな程度の考えでマインドマップ作ろうってのは無謀な気がするが それはおいとくとして、 けっこうプラットフォームによってまちまちな部分があるので、 マルチプラットフォームを考えてるなら、ありもののパーツで なんとかならない場合はwxはやめといた方がいいかも。 たとえばマインドマップとかペイントソフトとかだとキャレットの操作が必要になると 思うけど、Win版はちゃんとネイティブのキャレットを操作してるが GTK版なんかは自前でキャレットらしき棒を描く場所を変更してるだけ。
692 :
デフォルトの名無しさん :2008/02/25(月) 00:33:32
wxGladeのTextCtrlのlayoutプロパティでoptionっていう項目がありますが、これってなんの値なんでしょうか??
>>692 最近のはproportionと呼び名が変わったようだ。
>>523 の説明がわかりやすいと思う。
694 :
デフォルトの名無しさん :2008/02/25(月) 09:50:19
親ウィンドウと子ウィンドウを連動しようと思い。 親ウィンドウのMoveEventから 子ウィンドウのMoveを呼び出したのですが、 エラー落ちしてしまいます。 何か方法があるのでしょうか?
695 :
692 :2008/02/26(火) 01:20:38
>>693 さん
なるほど。523見てなんとなく分かりました。
ありがとうございました。
696 :
694 :2008/02/26(火) 08:35:58
コンストラクタ内でMoveEventが呼ばれ(たぶんCenter関数) その時にはまだ子ウィンドウが生成されてなかった。 しかも初期化が完了してない無効なポインタだったので 当然エラーということだった コンストラクタで始めに関数が呼ばれる前に 事前初期化してないとエライことになる可能性があるという教訓でした。
メニューのフォントを変更しようと思い、 wxMenuBarにフォント設定したけど反映されない・・・ なぜ・・・
wxMenuBar は wxWindowsを継承しるのになんでそのフォント使わないで インラインで別のフォント使うのか理解できん。
早くwx-usersに要望を出す作業に戻るんだ
メニューバーが自前で描画するモノなんかあったっけ?
wxWidgetsってWindows Mobile環境でも動作するんでしょうか? あと、その場合、バインディング言語(wxPython等)でも利用可能なんでしょうか?
703 :
701 :2008/03/01(土) 09:55:26
あるウィンドウのZオーダーを動かしたい(一番手前に表示したい) のですがどうやればいいのでしょうか? よろしくお願いします。
使えそう?
709 :
706 :2008/03/03(月) 20:05:07
>>707 Fedora8で昔使ってみたときのプロジェクト試してみたけど、
Buildしたときのerrorとwarningが入れかわってる気がする。一応動いたけど。
ちょっと前にチェックしてたけど、
2、3日に一回くらい開発版だしてて追いつけなかったからリリースをまってた。
いろんなOSで動くところが好きなので、そのうち本格的に使うかも。
macportsにもきてた。
wxGladeで画面を作成しているのですが、 widgetを配置する画面(Frameをダブルクリックして出てくる画面)に、 配置してあるボタン等が収まりきらなくなりました。 しかしながら、Previewで見るときちんと全部収まっています。 Panelを削除するとこの現象は出ないのですが、どこか作り方が おかしいのでしょうか? どなたか教えてください。
>>710 Previewの方が正しい。
wxGladeを立ち上げ直すと直ることもある。
けど,まあそんなもんだと思っている。
712 :
710 :2008/03/04(火) 23:36:30
>>711 レスありがとうございます。
そうですか。
Panelを捨ててしまうと、タブ移動が出来なくなるので困っていました。
wxGladeのバージョンアップに期待というところでしょうか?
sizerの入れ子の数とかでおかしくなるのかなー。
wxRubyでXRCでGUI部分作って、メニューアイテムやら押したときにメッセージボックスを表示させたいんだがどうやればいいんだ? ボタンを対象にfind_window_by_name('TEST')とかやって evt_button(@update.get_id){ Wx::message_box("テストだよ", "test", Wx::OK | Wx::ICON_INFORMATION, self) } とかするとちゃんとメッセージボックスやらが出せるんだけど find_window_by_name('MENUBAR')とかやってもnilが返ってきてしまうんだ…
714 :
デフォルトの名無しさん :2008/03/15(土) 16:01:46
下がってるのであげてみることにする ちなみにwxRubyについてるサンプルソース読むと、XRCのサンプルでもコード上でメニューバーとか追加してた
事故解決した Wx::Frame#get_menu_bar ちぅのがあるのね…
716 :
デフォルトの名無しさん :2008/03/16(日) 09:00:11
widestudioとどっちがいいですか??
どっちがいいか言い切れるんならもう片方は消滅してるよ
長らく使ってないけど wxTextCtrl2っていうCustom Widgetを作るんじゃなかったかな
720 :
デフォルトの名無しさん :2008/03/18(火) 16:17:05
EditDlg *dlg = new EditDlg(this); dlg->ShowModal(); dlg->Destroy(); メニューの実行で、上記を実行していますが、 最後のDestroyでアプリが落ちてしまいます。 Destroyは不要ですか? 環境は、Mac OS X 10.4 /wxMac-2.8.7を使っています。
721 :
720 :2008/03/18(火) 16:28:26
もう少し状況が分かりました。 ダイアログのシステムボタンで閉じる → × Close()で閉じる → × Hide()で閉じる → ○ つまり、閉じ方によって、ウィンドウのDestroyが呼ばれるかどうかが決まるんですね? 詳しい方、情報もしくは、同意よろorz
722 :
デフォルトの名無しさん :2008/03/19(水) 14:39:14
wxWidgetsの環境変数で、 ファイルのパスのデリミタや、 実行ファイルのディレクトリを 取得できますか?
723 :
デフォルトの名無しさん :2008/03/19(水) 16:01:40
argv[0]を参照する方法はありますか?
724 :
723 :2008/03/19(水) 16:07:02
725 :
723 :2008/03/19(水) 16:29:58
で、wxAPPのインスタンスってダイアログ側からどうやって取るんでしょう?
::wxGetApp
>>722 デリミタは、wxFileName::GetPathSeparator()
実行ファイルディレクトリは、
wxFileName exepath(wxStandardPaths::Get().GetExecutablePath());
wxString exedir = exepath.GetPath();
でexedirに入る。
729 :
718 :2008/03/20(木) 19:48:39
>>719 さん
レスありがとうございます。試してみます!
お礼遅れてすいません。
730 :
729 :2008/03/20(木) 19:58:09
と・・調べてみたのですが、custom widgetsってwx-gladeのパレットに新しい項目追加するような感じで自分でカスタムしなければいけないのですね。 これだとクラス継承する毎にパレットに追加しなくてはならなくなりますよね。。(当然ですが) クラス継承して使いたい場合、みなさんどうやってコードを書いているのでしょうか?? 自分で継承して作ったクラスを全部wx-Gladeで描画できるようにするのはけっこう面倒くさそうですし・・ あんまりファイル分割しない方がいいんでしょうか。 それとも、wx-gladeはあんまり使わない、とか・・
wx-gladeはあんまり使わない
wxFormBuilderがおすすめ 適当なコントロールから継承したカスタムコントロールやウィンドウなら、 継承元の見た目で作って、クラスを指定してヘッダファイル名まで指定できる。
>>728 有難うございます。まだ調査している最中だったので助かりました。
>>732 そうなんですか。。。
知らなかったのでwxDev C++ を使ってますorz
Windows環境だと、 >std::string str; >wxString wstr = str; と書けるんですが、 wxMacだと、 >wxString wstr = str.c_str(); と書かないとコンパイル通らないみたいです。 何でだろ。。。
ユニコードを使ってるかどうかかな?
736 :
734 :2008/03/21(金) 16:19:02
あ、なるほど。
>>735 wxMacは、環境設定でユニコードをオンにしてmakeしたようなかすかな記憶。
Windows版は、wx-debcppをインスコしただけだったような記憶。
この問題って難しい問題ですね。
737 :
デフォルトの名無しさん :2008/03/21(金) 23:32:17
すみません。初心者です。 wxDev-C++で作成したコードをLinuxでコンパイルできますか? できるとしたら、makefileは自作ですか? 分かる方がいましたらよろしくお願いします。
自作でもいいが、autotools(automake/autoconf)あたりがおすすめ
wxが採用してるbakefileがいいんじゃないの。
>>738 >>739 ありがとうございます。試してみます。
まず、configure自体を知らないとダメなんでしょうね。勉強します。
741 :
730 :2008/03/23(日) 13:31:54
情報ありがとうございます! wxformbuilder、インストールしてみようと思ったのですが Dependency is not satisfiable libwxbase2.8-0 とエラーが出てインストールできず・・ libwxbase2.8-0の再インストールとかしてみたのですがダメでした。 解決方法分かる方いらっしゃったら教えて頂けるとありがたいのですが・・
wxのC言語バインディングってないのかのう?
>737 wx-configを調べてみて wxConfigクラスではなくてwx-configってコマンド
>741 ちょいと使ってるOS回りの詳細を書いてくれ なんとなくLinuxじゃないかと思うが、だとすっとdistroとバージョンは?
wxDev-C++でデバッグしていて、ブレイクポントの2、3ステップ先で止まる んですけど、こういうもん?Code::Blocksの方が使いやすいですかね?(Windowsです)
>>741 >Dependency is not satisfiable libwxbase2.8-0
の時点でUn*x系だろうけど…
wxがちゃんと動いてるなら自前でビルドした方が良いんじゃないか?
748 :
730 :2008/03/23(日) 22:34:56
>>748 ダウンロードしたら、パッケージのあるディレクトリ行って
%sudo dpkg -i wxformbuilder_3.0.56-0ubuntu1dapper1_i386.deb
みたいな感じじゃなかったか
…物凄い基本だった気がするが、Linuxやめちゃったからよく覚えてないや
つーかWindowsバイナリ走らせようとするなwwww
Linuxじゃない、Debianだ
debでインストールしようとするならubuntuスレで聞け ./configure & make & sudo make install ならこのスレでもok...か?
752 :
730 :2008/03/25(火) 00:08:06
レスありがとうございます。 Linux初心者なもので・・ご親切にありがとうございます。 sudo dpkg -i wxformbuilder_3.0.56-0ubuntu1dapper1_i386.deb これをやってみると、 wxformbuilder は以下に依存 (depends) します: libwxbase2.8-0 (>= 2.8.7.1) ...しかし: システム上の libwxbase2.8-0 のバージョン は 2.8.4.0-0ubuntu3 です。 のようなエラーが出ました。どうもlibwxGtkとかlibwxbaseのバージョンが古かっただけみたいです汗 再インストールするのがめんどくさいのでwxformbuilderの方のバージョンを前のにしてインストールしてみたら今度は成功しました。 wxWidgetsのソース群はsynapticでインストールしたのですが、レポジトリが最新じゃないのですね・・ というわけで、解決しました。 微妙にスレ違いすいません&ありがとうございましたm(_ _)m
wxWidgetsのUTF-8版はありますか?
すみません。wxDev-C++でBreakPointに止まってくれないのですが、そういう症状出たことある人いますか? バージョンは6.10です。VB感覚で作成できそうなので、残念です。 もしwxDev-C++が候補から外れると、 Code:Blocksを使ってみようかと重うのですが、そちらはちゃんとデバッグできますか?
756 :
753 :2008/03/27(木) 08:58:47
>>754 ありがとう。
UTF-8は目標ですか。
AnsiToUnicode/UnicodeToAnsiみたいな関数が欲しいですが、
wxWidgetsにあるんだろうか。。。
>>755 そういう症状でます。
自分の場合、ターゲットOSのデバッガでデバッグできました。
デザイン用のGUIエディタと割り切って、デバッグIDEは別のものにしてみたら?
何でwxWidgetsだけで何でもかんでもやろうとするんだ・・・
759 :
756 :2008/03/27(木) 11:53:38
760 :
756 :2008/03/27(木) 13:42:08
>wxString SBuf; >SBuf = "UTF-8文字列"; >wxMessageBox(SBuf, wxT("SBuf"), wxOK); >SBuf = wxConvUTF8.cMB2WC(SBuf); >wxMessageBox(SBuf, wxT("SBuf"), wxOK); 2番めメッセージで、空文字になってるようなorz
Windows上で使っています。 wxWidgetsでIMEを制御する方法があったら教えてください。 TextCtrlにフォーカスが移ったらIMEがONになる、などの使い方がしたいです。
>>760 気分転換にデバッガで追ってみた
原因はよくわからんが文字列に日本語が入ってるのがいかんらしい
"UTF-8String"で問題なかった
>>761 公式にはないようだから
自分で作るか適当に探してみ
あとwxTextCtrlはデフォで日本語入力ができるから
IMEが制御できてもあんまり意味ないとおも
763 :
761 :2008/03/27(木) 17:36:16
>>762 ありがとうございます。
数値を入れるTextCtrlではIMEが自動でOFFになる、と説明すればよかったです。
ググっても出てこないので、自作の道を考えてみます。
764 :
760 :2008/03/27(木) 18:10:35
>>762 調査ありがうとうございます。
言われるとおり日本語があるかないかで動作変わるみたいです。
ソースの日本語表記の問題ではないことを確かめるため、
コントロールから日本語入れてみました。
>wxString SBuf = WxEditPath->GetValue();
>SBuf = wxConvUTF8.cMB2WC(SBuf);
これで、Editに"aaa"と入れると、SBufは"aaa"で、sizeが3でした。
しかし、"あああ"と入れると、SBufは""でsizeは0。
日本語入れると動作しないUTF-8コンバートだなんて(><)
765 :
760 :2008/03/27(木) 18:44:31
>wxUSE_UNICODE を定義してコンパイルすると、 >catch (std::logic_error &e) { > wxMessageBox(wxT(e.what()), wxT("Error"), wxOK); >} といったwxMessageBoxがコンパイルエラー起こすんですが、何でですか? ソースコードのファイルはSJISですが関係あるのかなぁ。
766 :
760 :2008/03/27(木) 18:53:43
あれ、wxDev-C++で、新規プロジェクトを作った直後wxUSE_UNICODEをつけてmakeすると、 コンパイルは通るけど、リンクエラーだ。 なんか難しいなorz
>>766 wxDev-C++なんてよくわからないもの使わないでVC++を使ってください
>>765 ソースがSJISならwxConvUTF8は使えないと思う
769 :
755 :2008/03/27(木) 23:57:05
>>756 ありがとうございます。デザインだけwxDev使えば良いんだね。
そういう使い方もあったか。
>>764 根本的にわかってないなあ。overviewとかリファレンスとか読めよ。
なんでこう手探りでやろうとするかね。
c??2?? というのは MB, WC, WX があって、MBはマルチバイト文字列、
WCはwchar、WXはwxChar。
wxWidgets的にはwcharとwxCharは違う。陽にwcharを操作する状況でない限りはWXを使うべき。で、
wxConvUTF8.cMB2WC
はUTF-8表現されたマルチバイト文字列からwcharへの変換。
そこにWindowsでANSIビルド使ってるならSJISか? を渡せば変換に失敗して
何も出てこないのは当たり前の話。
>> 765
> >wxUSE_UNICODE
> を定義してコンパイルすると、
それはwxをビルドするときの設定で定義されるものだ。必要ならANSIビルドと
unicodeビルドと両方入れて、wx-configのオプションによって使い分けるんだよ。
771 :
764 :2008/03/28(金) 09:28:54
ありがとう。
>>770 文字変換関数のみはunicodeビルドをするしかないですね。
>wx-configのオプションによって使い分けるんだよ。
難しいorz
772 :
764 :2008/03/28(金) 09:32:44
>wx-configのオプションによって使い分けるんだよ。
あ、wxConfigオブジェクトとwxAppオブジェクトの連携かと思って劇しく難しいのかと思ったら、
コンパイルのコマンドラインの話ですね?
なら、文字変換関数のみ別プロジェクトでwxUSE_UNICODEを定義してコンパイルしてオブジェクトモジュールを作っとくだけですよね。
その後、
>>766 のリンクエラーを対処すれば終わり?
そんなうまくいくかどうかわからんような小細工は ここで質問してるような奴がやることじゃないと思うがなあ。
774 :
764 :2008/03/28(金) 16:12:19
その通りかもしれない。 wxWigetsの文字変換はやめときます。 ドズで動作するのは、ICUだけですか? iconvは動作しませんよね。
iconvはない。でもWindowsならOS自体に変換APIがあったと思うけど。詳細は忘れた。
776 :
デフォルトの名無しさん :2008/03/28(金) 19:56:57
もしかして、新Mac板にいたwx君なのか?
ListCtrlを使っているのですが、MFCでいうオーナードローとかカスタムドローって できないのでしょうか? 描画時のイベントやメソッドが見つからないのですが・・・
wxFormBuilder使ってみたのですが、C++Editorでソースをいじってみようとしたら、文字の書いたり消したりが全くできませんでした。(ショートカットメニューのCopy と Select ALLだけが動く・・) これはバグではなくて、wxFormBuilderはそういうもんなのでしょうか? ショートカットメニューにcutとかpasteとかもあるのにdisableになっている感じなので、バグのような気がするのですが・・。
>>776 それ、良いですね。
何でかというと、wxDev使ってるせいで、デザイン中はWinなんです。
そこで、iconvでWinとUNIX系と同じコードにできるなんて理想。
wxLocalのオブジェクトってグローバルであるのでしょうか? どうやって取得すれば。。。 それとも自分でnewするもんでしょうか。
782 :
781 :2008/03/31(月) 18:45:34
なんか分らないけど、 >include して、 >wxLocal::メソッド と書くと、 コンパイル&動作しました。 グローバルオブジェクトなのか、スタティックメソッドなのかどっちかでしょう。
783 :
デフォルトの名無しさん :2008/03/31(月) 19:25:03
>wxLocale::GetSystemEncodingName() >windows-932 この値は、iconv_openで使う文字列でしょうか?
>>782-783 理解できないまま、推測だらけでコーディングするのは良くないよ
自分で試したり、質問する前にちゃんとドキュメント読んだり、検索してる?
似たような事を別スレで言われてMac板へ向かった彼じゃないか?
787 :
デフォルトの名無しさん :2008/04/01(火) 16:04:23
wxMac(Mac OS X)で、 システムメニューのHelpを押したときの処理を書く方法はありますか? もしくはシステムメニューのHelpの下にサブメニューを作りたいです。 (IDEはwx-Dev C++ですが、手書きで良いので)
すみません。 eclipse + CDT + MinGW + wxWidgets の環境構築の方法を解説したサイトはありますか? ちなみにOS は Windows XP です。 古い情報は何件か見つけたのですが、うまくいきませんでした。
790 :
787 :2008/04/02(水) 10:44:08
サンクス
>>789 ググる翻訳でうっすらと分かる感じです。
とりあえず、Menu IDを合わせると動くのかなぁ。
----------
アップル社はどのような標準をサポートしてwxmacメニュー項目については、ヘルプメニューですか?
wxwidgetsがないため、特定のAPIには、 [ ヘルプ ]メニューまたはメニュー項目については、 Mac OSのポートが使用する静的変数を助けるためのいくつかのエンジンを的確に判断する:
・それを前提としてメニュー項目については、 ヘルプメニュー部分です。
・ [ ヘルプ ]メニューのタイトルは、保存されwxapp : : s_machelpmenutitlenameと、デフォルトの" &ヘルプ"が、それを変更することができますし、お客様の特定のコンストラクタをメニューのタイトルです。
・メニューアイテムのID については、保存されwxapp : : s_macaboutmenuitemid 、 wxid_aboutデフォルトでは、変更することもできますが、お客様のニーズに合わせている。
・wxwidgets 、他のアイテムは、 [ヘルプ]メニューに追加されると、マックOS ヘルプ ]メニューの翻訳文のお申込みのためのIDは透過的に処理されます。
wxpython だったらできた。
ttp://www.harukaze.net/~haruka/wxpython/wxpy09.html を参考に、
self.HelpMenu = wx.Menu()
ID100 = wx.NewId()
self.HelpMenu.Append(ID100, u"ヘルプ", "help") #Helpメニューの下にプルダウンされる内容
MyMenuBar = wx.MenuBar()
MyMenuBar.Append(self.HelpMenu, "&Help") #Helpメニューを追加する
self.Frm.SetMenuBar(MyMenuBar)
self.Frm.Bind(wx.EVT_MENU, self.Alert, id=ID100)
とした。
About の方は、wx.ID_ABOUT で指定しても動かなかった
792 :
787 :2008/04/02(水) 12:50:31
>>791 wxpythonででも、出来るってことは出来るってことだね。
そのままC++コードに移せそうですね。
ま、最悪、wxpythonをデバッガでトレースか。
793 :
788 :2008/04/02(水) 23:31:49
windows版 eclipseでは、wx-configを指定したらダメなんでしょうか。
wxFormBuilderで、既に存在しているウィジェットを継承したクラスをwxFormBuilder上で作って、 そのクラスをや他のクラスを含んだコードをクラス毎に1ファイルずつ分割して吐かせたいのですが、どうすればできるでしょうか?? subclassやらcustom control などの情報を探して色々やってみたのですが分かりませんでした。 どなたか教えていただけると幸いです。
wxMacを使っていますが、デバッグコンパイルでさえ実行ファイルが92KBしかありません。 多分、ランタイムが必要なコンパイルとなってると思うのですが、 スタティックリンクにするための手順をご存知の方教えて頂けないでしょうか?
796 :
デフォルトの名無しさん :2008/04/04(金) 17:42:29
↑ この内容ヨロ!
Mac板で聞くほうがいいんじゃね?
↑ あんまり回答こないYO!
何が原因かわからないけど、もうちょっと問題の切り分けをしたほうがいいんじゃね? wxWidget の問題なのか、C++なのか、XCode なのかとかさ。
するどいですね。 XCode使ってます。 逆に言うと、全く皆目見当つかなくて、切り分けできないので質問なげてます。 切り分け出来たら、あとはリファレンスとか何とか手に入れて全パターン試すだけですもんね。 ライブラリの構築(--disable-sharedですか?)の失敗なのか、 プロジェクトのmakeのコマンドラインが悪いのか。。。
801 :
795 :2008/04/04(金) 18:48:38
もしくは、バンドルするDLLを特定できれば良いのですが。。。
XCodeでどう設定されてるかわからんけど、 wx-config --static=yes --libs で出てくるオプション指定するとどうかな 使ってる共有ライブラリを特定するには otool -L バイナリファイル名 で出てくる
803 :
794 :2008/04/04(金) 19:07:00
放置されっぱなしの794ですが、分かる方いらっしゃいましたらこちらも教えていただけると幸いです。 795さんうらやますぃ
804 :
795 :2008/04/04(金) 19:15:39
サンクス。 >wx-config --static=yes --libs 「他のリンクフラグ」に入れましたが、ダメみたいです。(入れ方が悪いのかも。いろいろ試してみます。) >otool -L バイナリファイル名 /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0) /System/Library/Frameworks/CoreServices.framework/Versions/A/CoreServices (compatibility version 1.0.0, current version 18.0.0) /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0) /System/Library/Frameworks/IOKit.framework/Versions/A/IOKit (compatibility version 1.0.0, current version 275.0.0) /System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 11.0.0) /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.3) /System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 1.0.0) /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 63.0.0) /System/Library/PrivateFrameworks/ZeroLink.framework/Versions/A/ZeroLink (compatibility version 1.0.0, current version 1.0.0) /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0) /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0) こんな感じです。多杉orz
805 :
795 :2008/04/04(金) 19:36:51
プロジェクトのオプションが、 >ライブラリ検索パス >フレームワーク検索パス が空文字でした。 これが問題なのかな?
806 :
795 :2008/04/04(金) 19:47:29
検索パスは空ですが、 プロジェクトのメンバーにライブラリファイル >mac-ansi-release-static-2.8 がちゃんと入っていました。 逆に、 >*.a ファイルまで入ってるため、ダイナミックリンクになっちゃうのかな?
807 :
795 :2008/04/04(金) 19:58:03
やっぱり、*.aファイルも無いと動作しません。 リリースビルドを行うと、 >/usr/bin/ld: can't locate file for: -lwx_base_carbon-2.8 というエラーになりましたorz
808 :
デフォルトの名無しさん :2008/04/04(金) 22:57:30
>>794 もっと図太くならないと。バンバンageながら、質問やら状況を795並みにするんだ。
恥ずかしくなんか無い!!
「エスパーきぼんぬ」「氏ね」「(゚Д゚)ハァ?」等のレスを貰う八ヶ条。 1. ハードウェア、OSのバージョン等には一字一句触れない。 2. 大切な個人情報が漏れるとまずいので、己の行った操作、変更などは秘密。 3. エラーメッセージの類は決して書かない。「エラーが出るんです」で留める。 目の前で生じている現象をそのまま具体的に書くなどもっての外。 事実より俺様の脳内解釈を優先すべし。 4. 独り言文体で必勝。 「…なんだけど、どうすればいいのかなぁ」「何が悪いんだろう?」 5. 「急いでいます」「困っています」等、自分の都合を全面に押し出す。 6. もう試したことを得意げに指摘してくる奴には、厳しく対応。 「それが駄目だったから質問してるんです」「それはもう試してみて駄目でした」 "どう"だめだったのか、本当に実際それを行ったかどうかなんか問題じゃない。 7. ストレートに答えを書かないもったいぶったレスには、逆切れで対応。 「だからどうすればいいんですか?」「分からないなら引っ込んでろやゴルァ」 示されたURL等を参照するなんて態度は、回答者を甘やかすことに他ならないので 絶対に避ける。 8. 情報は小出しに。 「エスパーきぼんぬ」 補足 上の八ヵ条を「一つでも」満たす者は質問者として不適格だということだ。 そのような悪い質問に対して答えられるのは, 質問者の意図をすべて汲み取ることのできるエスパーでもなければムリ, という意味であって,決して,高度な技術を持つユーザに対する尊称ではない。 まちがっても「エスパーの方,回答お願いします」 なんて痛い質問するな。つうか氏ね。
wx-config --static=yes --libs をオプションに入れるんじゃなくて、これを実行して出てくるオプションを入れてくれ というか一体どうやってビルドできるところまで設定したのよ
811 :
デフォルトの名無しさん :2008/04/04(金) 23:20:44
エスパーって(w 794がかわいそうすぎる
812 :
794 :2008/04/04(金) 23:26:42
>>808 さん
ありがとうございます。
神経細いわけではないと思うんですが笑、
状況を詳しく書こうと思っても、エラーが出るとかじゃないですしOSどうこうってわけでもなく、単純に使い方が分からないってだけなのでこれ以上説明できることが何もないのです・・。
wxFormbuilder使えば、wxFormbuilder上で既存のウィジェットを継承したクラスを作成できると思っているのですが、そもそもそれが間違っているのでしょうか??
ていうか809は俺のこと言ってるんですかね?汗
813 :
809 :2008/04/05(土) 02:55:06
>>794 wxFBではクラスを作ることはできないので、自分で作るしかない。
ただ、作ったクラスを使うことはできる。適当にコントロールを置いて、プロパティのところに、includeするヘッダとクラス名を書けば
そのクラスを使うようにはなるが、コンストラクタへの引数やスタイルなどのプロパティは置いたコントロールに依存するので、paneあたりを
継承すれば、wxWindowあたりを継承したコントロールなどにも対応できる。
MS VC++のMFCのようなものではなくて、リソースファイルを作るぐらいに考えるといいのかな。
ウィンドウやダイアログごとに別ファイルにしたいなら、作者に要望を出すとか、ソース公開されてるから自分で変えるとか・・・
815 :
794 :2008/04/05(土) 13:54:14
レスありがとうございます。 > 813 さん そのページも見たのですが、どうもサブクラスに使う名前とヘッダーファイルを指定できるだけのような感じがして、求めているものじゃない感じでした。 > 814 さん >>wxFBではクラスを作ることはできないので、自分で作るしかない。 >>MS VC++のMFCのようなものではなくて、リソースファイルを作るぐらいに考えるといいのかな。 やっぱりそういうものだったのですか。 情報ありがとうございました。 逆に、継承クラスを書いたり、クラス別にファイルを吐き出してくれたりするwx関連のRADツールみたいなものはないのでしょうか??
自分もRADツール使おうと思って色々探していて、 wxFormbuilder か wxDev C++ っていうのが一番よく見かけるような気がしたのでどちらかにしようかと思っているのですが、それぞれどういった特徴があるんでしょうか?? なんか上のやりとり見ているとの実際使ってみても何ができて何ができないのかすぐに分からなそうな気がしたので、詳しい方に教えてもらう方が早いかと思いました。 よろしかったらどなたかご教示ください。
wxFormBuilderはRADツールではない。
RAD なら wxForms がいいかも。 ただし Borland/CodeGear C++ Builder 用のアドインだけど。
>>819 それ使って上での話?
C++Builderなら使ってるんだけど、
wxWidgetsは心機一転、別のIDE(wx-dev)にしちゃったおorz
>>820 いや、使ってない。
Web 上の資料を見て「RAD じゃん!」と思ったので。
自分は Python な人なので、GUI 作成には XRCed を使ってます。
823 :
795 :2008/04/09(水) 13:59:07
>>810 有り難うございます。出力されました。
-L/MyDev/wxMac-2.8.7/lib -framework IOKit -framework Carbon -framework Cocoa -framework System -framework QuickTime
/MyDev/wxMac-2.8.7/lib/libwx_mac_richtext-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_aui-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_xrc-2.8.a
/MyDev/wxMac-2.8.7/lib/libwx_mac_qa-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_html-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_mac_adv-2.8.a
/MyDev/wxMac-2.8.7/lib/libwx_mac_core-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_base_carbon_xml-2.8.a
/MyDev/wxMac-2.8.7/lib/libwx_base_carbon_net-2.8.a /MyDev/wxMac-2.8.7/lib/libwx_base_carbon-2.8.a
-framework WebKit -lwxregex-2.8 -lwxexpat-2.8 -lwxtiff-2.8 -lwxjpeg-2.8 -lwxpng-2.8 -lz -lpthread -liconv
>というか一体どうやってビルドできるところまで設定したのよ
XCodeにFinderからてきとーにD&Dしました。
824 :
815 :2008/04/09(水) 14:24:18
>>816 さん
うーむないのしょうかね・・
レスありがとうございましたm(_ _)m
>>823 頼むから、内容を細切れにして、いろんなスレでマルチで聞くのはやめてくれ。
誘導元か、関連するレスのリンクを貼ってくれないと状況が理解できない。
そんなんだと、根本的な問題の原因を見抜けなくてドツボにはまるかもよ。
原因を解決する気があればこうも糞みたいな書き込みを続けないって。
>>822 俺はRubyな人だけどXRCedが一番使いやすいと思ったわ
いいよね
Gladeは安定性が低い
すいません追記です。 上記のソースは1つのLinux環境と2つのWindows home 環境で試したのですが、Linux環境ではリンクにも成功してビルドできるのですが、Windows Home 環境では両方ともリンクに失敗します。 なので、WindowsにインストールされているwxMSWで設定がおかしいところがあるのかなと思うのですが・・
833 :
831 :2008/04/11(金) 18:54:27
すいません自己解決しました。 wx-config --libs で使うライブラリがmsys の /usr/lib になければいけなかったのですが、なぜだか/local/lib にインストールされていたせいでした。 /usr/lib にコピーするだけで解決しました。 wxWidgetsインストール時のバグだったんでしょうか。。
>>829 wxGlade は、次の2点が理由で好きではないのです。
1. 自分の書いたコードと自動生成されたコードがまざるのが不安
2. Output Path に指定したパスが保存したファイル(*.wxg)に入ってしまう。
特に2番は、複数マシンで開発をしているときに困ります。
>>833 >wx-config --libs で使うライブラリがmsys の /usr/lib
>になければいけなかったのですが、なぜだか/local/lib にインストールされていたせいでした。
prefix指定しなかったのならデフォルトで /usr/local/lib にインストールされる。それが普通。
あと別に /usr/lib になければいけないなんてことはなくて
コンパイル時に -L/usr/local/lib つければいいだけ。
wx以前にgccの使い方の話なんでその辺勉強してみるといいかも。
>>834 >1. 自分の書いたコードと自動生成されたコードがまざるのが不安
C++で使ってるけど,wxGladeの吐く.cpp, .hとは別のファイルにそれから
派生したクラスを定義して,実装は派生クラスに書いて,wxGladeの吐く
コードとはほぼ完全に分離できている。
>2. Output Path に指定したパスが保存したファイル(*.wxg)に入ってしまう。
.wxgからの相対パスで指定すればOKかと。
>>835 wx-config って、その -L とかを自動で指定してくれるスクリプトのはずなんだよ。
それが必要なパスを吐かないなら、設定に問題がある。
インストールがうまくいかなかったんじゃないかな。
>>834 自分は Python 形式で書き出しているので、
書き出されたファイルの一部に手を加える必要があります。
(最低でも ID 宣言とか)
相対パスで指定できるのは知らなかったです。
試してみます。
>>837 ど素人なのすが、Windowsではwx-config は msys上でしか使えませんか?
eclipse上で指定したいのですが無理ですか?
バッチファイル作ってラップするとか @c:\msys\1.0\bin\sh.exe --login -c "wx-config %*" こんな感じでwx-config.batとか作るといいかもしれない eclipseでバッチファイルをそのままオプションに指定できるのかどうかはわからないが
wxPythonで画像変形の高速化を行ないたい のですがwxImageの画像データを直接取得する 方法はありませんか。GetData,SetDataでは コピーしか渡らないようでうまく行きません。 PIL,Pygameによる画像変形は転送がネックに なり高速になりませんでした。 PyOpenGLでは画像を直接取得できそうなのですが 画像が大きくなる(2048*2048)とリソースで 問題が出るようで試していません。 御教示お願いします
>>841 wxImageのGetDataならピクセルデータを直接得られるはずだよ。
少なくとも、自分のところではそうなってる
843 :
841 :2008/04/14(月) 01:39:36
>>842 Python上で出来ました?
言葉が足りなかったので補足しますと、
wxImageの画像アドレスを知りたいのです。
ctypesでGetDataから渡された文字列を
強制的に書き換えても画像に反映されないので
コピーが渡されているようです。
高速化するにはDLLから直接書き換えるしか手が
なさそうなのですが、やっぱり無理
かなぁ。メニューのフォントサイズ変えるため
MenuItem.SetFontしたら落ちるし、前途多難…
>>843 wx.ImageのGetDataBufferはダメだった?
845 :
843 :2008/04/14(月) 17:22:28
>>844 御回答有難うございます。
GetDataBufferってあったんですね。_core.py見なおしたら
見つかりました。返却値はbufferオブジェクトですね。
str()はありますがアドレスは隠蔽されてるみたいです。
Pythonからのアクセスはかなり快適で面白いオブジェクト
でしたが…残念。
答えていただけそうなのでもう1件お尋ねします。
wxBitmapを大量に格納しようとするとすぐ落ちて
しまいます。wxImageでは問題無いのでシステムリソースに
格納してるのかとも思っているのですが、その
限界を知る方法がよく分りません。御存知の方が
いましたら御教示お願いします。
Python から wxDC を渡してやって、 DLL 側で画像描画をできないだろうか…と ちょっと思ったり。 ファイルからの Bitmap の読み込みも DLL 側でやる感じで。
847 :
843 :2008/04/14(月) 22:50:17
GetDataBufferの件でやっと気付いた。
bufferオブジェクトってインタラクティブな状態で
見ると実体アドレスが出てる。bufferオブジェク構造体から
アドレスを拾えるみたいです。ctypesで直接書き込んで
確認できました。pyrex使えばなんとかなる…かも
教えていただき有難うございました。
>>846 ちょっと似たことをPILのImageWin.Dibでやってみました。
描画はPILからwxでwxのDCにPILからpasteする方法です。
結果はクリッピングがとても面倒で実用になりません
でした。pythonオブジェクトはpyrexで簡単に
拾えるかもしれませんが私の能力では実現は厳しそうです。
ちょっとお尋ねしたいのですが、ubuntuでwxWidgetsを使って開発していたソースをWindowsの方に移してコンパイルしようとすると、文字化けしました。 ソースの文字コードがUTF-8だったので、UbuntuではwxWidgetsの文字コードがデフォルトでUTF-8になっていて、WindowsではUTF-8ではない(多分S-JIS?)ということだと思うのですが、結局Windowsでは文字コードは何で開発するのがいいんでしょうか? どういう観点から考えて決めればいいのか分からないので、ご助言頂けると幸いです。
>>848 wxWidgets をインスコする際に UTF-8 モードか ANSI モード(すなわち日本語だと shift jis モード)か選択出来るので、
クロスプラットホームのために wxWidgets をつかってるなら使うプラットホームでそれを同じにしておいたほうがいいです。
どっちにするかですが、これからの時代は何も考えず UTF-8 にしておくのがよいと思います。単に業界の趨勢なので。
850 :
848 :2008/04/16(水) 00:01:26
>>849 さん
やはりUTF-8ですか。
,/configure のときに --enable-unicode でいいのですよね。
レスありがとうございましたm(_ _)m
851 :
850 :2008/04/18(金) 12:54:56
すいません ./configure --enable-unicode でmake し直したのですが、 やはりUTF-8のソースをビルドするとインターフェース部分のマルチバイト文字が化けてしまいます。 どうすればUTF-8のソースを文字化けせずにビルドできるようになるでしょうか? Windows Home wxWidgets 2.8.7 です。 どなたか教えていただけると幸いです。
コンパイラにUTF-8を認識させなければならない。BOMありUTF-8にできるならファイルを変換すべきだが、gccでは使えなくなる。 VCならBOM有りの場合にはshift jisに変換後にコンパイルしてくれる。当然、埋め込んだ文字列はMBCSのShift_JISになる。 そこで、Shift_JIS->UTF-8への変換をプログラムでやる必要がでてくる。 もう一つの方法は全て英語で書きASCIIにして、.po/.moファイルを作成しi18nにより日本語を表示する。 この場合全てasciiなので、UTF-8とShift_JISは同じものとなるので、特に問題は生じない。
というかポータビリティーのために wx を使っているのなら、 そもそもマルチバイト文字列をソースコードに書き込むのは ポータビリティー上良くないということを認識しましょう。 コンパイラによって扱いが変わってくるので。 将来誰かが非日本語版のを作る場合とかも考えて、 (オープンソースなら誰か勝手にやるだろうし、会社でやってても 中韓国語版をつくることになるかもしれない) ソースは ascii にして、wx の国際化機能をつかってやるのが吉。 ちょっと手間でも、いま払っておいた手間が後で 格段に仕事を節約することになります
854 :
843 :2008/04/19(土) 01:58:58
>>864 言われた意味がよくわかりました。ConvertToBitmapが
滅茶苦茶遅い!本気でImageからDCに直接描き込もうか
とも考えましたが、別の解決策があったので止めました。
でもScaleやRotateの出力先くらい指定できた方が
扱い良さそう。
実験としてwxPython用のコンボリュ−ション行列と
YUV操作関数作ったけど…誰も要りませんよね
車輪の再発明をしても仕方がありませんし、公開に値するしろものでもありませんので 将来的にもソースは出せないと思います。 ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。
856 :
854 :2008/04/19(土) 05:03:13
>>855 直接wxImageをPythonからいじるノウハウについて
言ってるだけですよ。swig通してオブジェクトを
いじれれば質問もせずに済んだんですけど
858 :
854 :2008/04/19(土) 23:09:46
>>3 のコピペは個々の解決法は不要という事ですね。
wxImageからDCに直接描画するwxPythonライブラリも
作ったけど御忠告に従います。有難うございました。
>>858 いや、
>>3 のコピペは「作ったのに公開しない人」を皮肉ったもので
悩まずどんどん公開すべきという意味だと思います。
口だけで実は何も作ってない奴が成果物提示を要求された時の逃げ口上だろ。
>>862 おぉぉぉ。すばらしい。明日試してみます!
Eclipse CDT と MinGW でwxWidgets使ったプロジェクトの開発しているのですが、gdbでデバッグしようとすると、頻繁にエラーが出て落ちます。 同じ症状のかたいらっしゃるでしょうか? wxWidgets と gdbは相性が悪いのだろうか・・
Linux上では全然問題ないよー MinGW固有の問題かな?
866 :
864 :2008/04/25(金) 00:34:38
むーそうですか。。ありがとうございます。
868 :
845 :2008/04/25(金) 23:36:24
大量のwxBitmap格納で落ちる事への自己レスです。 私の環境はWin98だったのですが、この場合内部で DIBもしくはDDBを作成する為システムリソースを 食い潰す事が原因のようです。Win9xはリソース上限が 2M程度と聞きますが実際はよく分りません。 Win上でスクリプトからなら大量の画像はwxImageで 管理した方がよさそうです。 wxのソースをみてたらwxImageの処理があんなに 遅い訳がわかります。せめてAlphaの有無で ループを別けてくれれば拡縮とかは少しは速く なりそうなんですが…。
まだ Win 98 なのなら、XP 売っているうちに買っておいたほうが良いよ
>>868
870 :
845 :2008/04/26(土) 00:51:40
>>869 そう出来ればいいですねぇ…
リソース浪費するのは同じなのでWin2000以後も
この件に付いては気をつけたほうが良いとも
思います。ソースを追っていませんし管理方法に
詳しくありませんが、wxはDIBとDDBを使い分けてる
ようでDDBならVRAMの容量が処理能力に直結する
気がします。
>>867 wxFileInputStreamで開けばいい。
>>870 Vista WDDM以降、DDBはDIBみたいに振る舞うので注意。
873 :
845 :2008/04/26(土) 18:13:24
>>872 勉強になりました。
M$の言い分としてはVistaが動かせるようなPCなら
気にする事ではないんでしょうねぇ。
874 :
867 :2008/04/26(土) 19:59:52
875 :
デフォルトの名無しさん :2008/04/27(日) 08:11:31
MacのwxPythonでwx.MessageDialogのアイコンがどれ選んでも蛇が入ったロケットみたいなアイコンなんですがバグでしょうか?
仕様です
877 :
874 :2008/04/28(月) 12:19:09
874です。 wxFileConfig::Write(); が、コンパイルには成功するのに正常に動作しない問題が解決しました。 正常に動かないときは wxFileConfig* m_pConfig ..略.. m_pConfig->Write(wxT("sample"), 10); のように、wxFileConfigのポインタからアロー演算子でWriteメソッドにアクセスしていたのですが、 wxFileConfig m_Config(コンストラクタの引数); m_Config.Write(wxT("sample"), 10); のように、ポインタにせずドット演算子でWriteメソッドにアクセスすると、書き込みに成功しました。 これはwxWidgetsのバグなんでしょうか?? どなたか同じ症状の方はいらっしゃるでしょうか?
ポインタだけで実体作ってなかったとかいうオチは許さんぞ。
>>877 そんなバグは聞いたことがない。
m_pConfigの実体を確保し忘れてるとか、多分そんなのが原因だと思う。
880 :
874 :2008/04/28(月) 15:38:11
・・・ #include "wx/wx.h" #include "wx/config.h" #include "wx/fileconf.h" wxString config_file = wxGetCwd(); #if defined(__WXMSW__) config_file += "\\"; #else config_file += '/'; #endif config_file += APP_CONFIG_FILE; // APP_CONFIG_FILEはdefineマクロ wxFileConfig* m_pConfig = new wxFileConfig( wxEmptyString, wxEmptyString, config_file, wxEmptyString, wxCONFIG_USE_LOCAL_FILE); int dt = 10; m_pConfig->Write(wxT("sample"), long(dt)); newで実体確保できてますよね??(おそるおそる) これをビルドしようとするとコンパイルもリンクもできるんですが、 m_pConfig->Write(wxT("sample"), long(dt)); の部分を実行しても何も起きないんです。 Read();は普通に動くんですが・・
ちゃんとdeleteしないと書き込まれないんじゃないか?
Flush()しない場合はデストラクタで書き込まれる、とあるな。 両方やってないから書き込まれない。
883 :
874 :2008/04/28(月) 16:39:36
>>881 さん
>>882 さん
レスありがとうございます。
Write(); のあと Flush(); でいけました!まじありがとうございます!
Flushが必要、という情報が見つけられないのですが、よろしかったらソースを教えて頂けないでしょうか??
あと、「両方やってないから書き込まれない」の「両方」とは、Flush(); と、あともう1つは何でしょうか??
>>883 「両方」じゃなくて「どちらも」の間違いだった。どちらかでも行えば書き込まれる。
あと、人に聞くまえにリファレンスを読め。
886 :
874 :2008/04/28(月) 17:18:22
887 :
851 :2008/05/02(金) 23:40:36
>>852 さん
>>853 さん
めちゃくちゃ遅くなってすいません・・
レスありがとうございましたm(_ _)m
なんか書き込んだと思ったら書き込んでなかった?ようです><
すいませんm(_ _)m
wxPythonの質問なんだけど、ここで大丈夫? 勉強し始めたばかりなんですが、トップフレームにボタンを作って、 このボタンを押すと、別スレッドで重い処理を実行させて、終わったら 「終わりました。」てメッセージボックスを表示させるプログラムを書いてます。 別スレッドのなかでwx.MessageBox("終わりました。","")を実行すると、 Windowsでは普通に表示されてOKボタンでメッセージボックスが閉じますが、 Linux(GTK)だとメッセージボックスが表示されますが、固まってしまいます。 WindowsとLinuxどちらの動作が正常なんでしょうか? (wx.Frameなどを継承していない)別スレッドのクラスからwxを使っていいのでしょうか?
>>889 ありがとうございます。
やっぱり何も対策を取らないと固まるんですね^^;
wx.MessageBox("終わりました。","")の手前にwxMutexGuiEnter()を書いて、
直後にwxMutexGuiLeave()を書いて試しましたが、wxMutexGuiEnter()で
固まってしまいました。たぶんMutexの初期化?が足りないのかもしれません。
http://wiki.wxpython.org/LongRunningTasks ここを参考にwx.PostEventを使って、Windows&Linuxで思い通りの動作になりました。
windows xp MinGW環境ですが、openGLを使いたいと思い、 config.gccのopenglのオプションを有効にしてgccでコンパイルしました。 openGL用のライブラリがリリース版とデバッグ版の2つできたのですが、 2つともファイルサイズが40kb程度しかありません。 これで正しくライブラリができているのでしょうか?
wxStringオブジェクトを走査して特定の文字列が何回出てくるか調べたいんですが、それ用の関数ってないですよね??
>>891 GLCanvasってレンダリングコンテキストのハンドリングぐらいしかやってないんじゃないかな。それだけならそんなもんじゃないかなぁ。
>>892 >それ用の関数ってないですよね??
質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。
自分が既に調べてみつからなかったんだけど ... ということをアピールして、
しかも、自分って正しいですよね、という雰囲気である。
これでは自分で心を閉ざしているようなものであって、
API レファレンスを読めばみつかる API もみつからない。
というのは別にして、wxString::find(const wxString&,size_t) ではだめなの?
なんという紳士
898 :
892 :2008/05/27(火) 02:09:22
レスありがとうございます。 >>質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。 >>自分が既に調べてみつからなかったんだけど ... ということをアピールして、 う、こういう聞き方、あまりよろしくないのですかね?? 単純に「ありませんか??」だとググれと言われてしまうし、かと言って毎回なんか質問書き込む度に既に調べて分からなかったので質問しましたってのは正直億劫だったのでこんな感じの聞き方になっていましたが・・ wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね?? でもwxString::Cmpとforとif使ってなんとかなったので、質問したこと自体は解決しました。 >API レファレンスを読めばみつかる API もみつからない。 これはなんでですか?? この質問の仕方だとなんでAPIリファレンスに書いてあるAPIも見つからなくなる、のでしょう? 突っ込まれて反論してるのではなく、どういう意味か分からなかったので単純に教えて頂きたいな、ということです。
>>898 >毎回なんか質問書き込む度に既に調べて分からなかったので質問しました
答える側になった事を考えれば分かると思うが、これが正解
事前に何を調べて自分としてはどう思っていて何が疑問なのかを丁寧に書く
これしか無いよ
>>898 解決したならいいけどCmp()でどんなコードを書いたの?
>>898 >wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね??
この「ですよね??」という聞きかたが良くないです。
自分はこの API は既に知っているけど ... ということをアピールして、
しかも、自分って正しいですよね、という雰囲気である。
これでは自分で心を閉ざしているようなものであって、
この API が使える API であるということを認識出来ない。
自分はこれまで最初にマッチした部分のインデックスが返ってくるだけだと思っていたんだけれど、
相手が wxString::find を言ったということは、実は二つ目以降も返ってくるんではないか?
と謙虚に考えられなくなるわけです。相手に言われたら、
自分を疑って、もういちど自分で API レファレンスを読んでみればわかるはずで、
こうやって小言を言われる必要もなくなるわけです。というのが、
> この質問の仕方だとなんでAPIリファレンスに書いてあるAPIも見つからなくなる、のでしょう?
>突っ込まれて反論してるのではなく、どういう意味か分からなかったので単純に教えて頂きたいな、ということです。
への返答です。
僕は自分自身が、「ですよね?」「じゃないんですか?」と言いたくなったら、
まず自分を疑うことにしています。
その言葉を発した時点で、考えるのを放棄しているからです。
というのはいいとして、wxString::find(const wxString&,size_t) とわざわざ
オーバーロードしてある引数までかいてあるのは何故だとおもいますか?
それはそのバージョンをつかうと、第二変数でどこから調べるかが指定出来るからです。
そうするとそれを繰り返し呼べばいいわけです。
ちなみに find が大文字か小文字かも違います。
http://docs.wxwidgets.org/2.8.6/wx_wxstring.html#wxstringat をみてください。
ためになる話のような気がするから あとでゆっくり読むぜ
_,,....,,_ _人人人人人人人人人人人人人人人_ -''":::::::::::::`''> ゆっくりしていってね!!! < ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄ |::::::;ノ´ ̄\:::::::::::\_,. -‐ァ __ _____ ______ |::::ノ ヽ、ヽr-r'"´ (.__ ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、 _,.!イ_ _,.ヘーァ'二ハ二ヽ、へ,_7 'r ´ ヽ、ン、 ::::::rー''7コ-‐'"´ ; ', `ヽ/`7 ,'==─- -─==', i r-'ァ'"´/ /! ハ ハ ! iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i | !イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ レリイi (ヒ_] ヒ_ン ).| .|、i .|| `! !/レi' (ヒ_] ヒ_ン レ'i ノ !Y!"" ,___, "" 「 !ノ i | ,' ノ !'" ,___, "' i .レ' L.',. ヽ _ン L」 ノ| .| ( ,ハ ヽ _ン 人! | ||ヽ、 ,イ| ||イ| / ,.ヘ,)、 )>,、 _____, ,.イ ハ レ ル` ー--─ ´ルレ レ´
なんか知らんが賢人が降臨したようだな
当たり前だろ
馬鹿野郎俺に決まってるだろ
908 :
892 :2008/05/27(火) 22:50:50
レスありがとうございます。 >ちなみに find が大文字か小文字かも違います。 これに気づいてませんでした。C++互換というやつがあったんですね・・。 >相手が wxString::find を言ったということは、実は二つ目以降も返ってくるんではないか? これはもちろん考えてます。が、それでも完全に見逃していました。。 wxString::find(const wxString&,size_t) でいけそうです。ありがとうございます。 が・・ >>それ用の関数ってないですよね?? >質問の仕方、心構えが間違ってる。ありませんか?と自然に聞けば良い。 これは分かるんですが・・ >>wxString::Findだと、最初にマッチした部分のインデックスが返ってくるだけですよね?? >この「ですよね??」という聞きかたが良くないです。 これはではどう聞けばよかったんでしょう? これ以外に聞きようが無い気がするんですが・・
909 :
892 :2008/05/27(火) 22:55:44
>>900 こんなの書いてました汗
wxString str_wk;
int count;
wxString source = "なんか色々";
int length = sourceのデータ長
for (int i = 0; i < length; i++){
str_wk = source.Mid(i, 6);
if (0 == str_wk.Cmp(wxT("sample"))){
count++;
}
}
>>908 ですよね?と聞く前に、wxString のメンバ関数一覧を再確認すればよかったんじゃないかな。たぶん。
>>901 のエントリについては、何か考えさせられた。
○(調べたけどわかんなかったので)ありませんか?
△(調べずに)ありませんか? … (ググれと言われる)
×ないですよね? … (ないんですよ。そうでしょう?(同意求む)的な感じ)
って感じなのかな。
912 :
892 :2008/05/27(火) 23:55:56
>>910 再確認して、その上で分からなかった(見逃してた)んです。
なので、言ってしまえば回答に直結するレス頂いてそれでも気づかなかった自分がバカだったってだけの話なのですが汗
その人は嫌み言ってるだけだと思うので気にしないでいいと思うよ まあふと疑問がでてドキュメント見たときに、 そのクラスのあんま関係なさそうだけど他のメソッドもついでに 全部勉強しておいてやろうとかいう感じでやってればスキルもあがるんじゃないでしょうか。
これって、64bit対応してるかな? コンパイラが64bitなら無問題?
すくなくとも wxMac は対応してない。なぜなら GUI が Carbon で、それには 64bit 版がないから。
え”〜、Carbonは64bitには亡くなるのぉ??? wxCocoaの完成を待つしか無い???
>>916 いまんところの Apple の発表は、 Carbon の GUI 部分は 64 bit にしない、Carbon の非 GUi 部分は 64 bit にする、とのことだけど、まあすぐ気の変わる会社だから誰にも分かりません
Qt はもう方針転換して、Cocoa で組みなおしてます。もう Cocoa 64 bit のβ版がでてるはず。
wxMac はメンテナンスはされてるけど、ドキュメントから何から激烈に古いのでこれを機会に wxCocoa を誰か頑張ってくれ。
wxGTKはMacでは動かないの?
wxGTK は OS X 上で X11 を立ちあげて、そのなかで動くというのは可能 Windows でも cygwin とかでX11 サーバをいれとけば wxGTK も動くというのと同じ状況です OS X の WindowServer は X11 ではないので。 まあ X11 は標準でついてくるけど。
正直 OS X で X11+GTK とか勘弁してくれって感じだ…
Mac で Xアプリが動くってのはオマケだね。 クリップボードさえX専用クリップボードだったり、 Windowsの16ビットアプリケーションより連携悪い。
922 :
デフォルトの名無しさん :2008/05/30(金) 16:00:05
wxStreamToTextRedirectorを使っているんですが、 cout << で、マルチバイト文字が化けて表示されてしまいます。 同じような症状の方、また解決方法を分かる方いらっしゃいましたらご教示いただけると嬉しいです。 ちなみにwxMSWをunicodeモードでインストールして使っています。
自分の書き込みを何度も読み返すといいよ。
Code::Blocksのスレが無いので、ここに書かせてくれ。 Code::Blocksのバグなんだ。興味ない人は無視してくれ。 詳細はチラ裏に書いたので、もし偉い人がいたら、本家にバグ報告してほしい。 ここからチラ裏 日本語のMac OS X上のCode::Blocksで、新規プロジェクトをウィザードで作ろうとすると、「Script compile error」というのが出る。 これは、Code::Blockが、ウィザードを記述してるスクリプト(Squirrel)を読み込むときに、U+005CがU+00A5に変換される(ファイルがShift-JISとして読み込まれる)のが原因。 src/sdk/scriptingmanager.cppの中にある、ScriptingManager::LoadScriptがスクリプトをファイルから読み込む関数っぽいので、その中の、cbReadFileContents(f)をcbReadFileContents(f, wxFONTENCODING_UTF8)に置き換えればいい。 だが、俺は英語ができないし、バグ報告のためのユーザアカウントも持っていないので、せめてここに書くぐらいしかできないorz ここまでチラ裏
OS X 上で、外人さんの作ったソフトで、unicode つかってないので、そのバグがでることって多いよね。TeX 用のソフトでそれではまることがしばしば ...
Ubuntu 8.04でwxPythonがシンボル見つからないとかで起動しない。 自分でビルドしようと思ってもコンパイルエラー。swigのバージョンかな? 動かぬなら 動くまで待とう wxPython
待ってねーでバグレポート送れよ
英語がわからないに1票〜
>>928 いや、本家フォーラムではもう話題になってる。日本で話題になって無いからチラ裏してみただけ。
931 :
デフォルトの名無しさん :2008/06/04(水) 00:57:50
なぁ、このフレームワークって人気ないの?
>>931 ん?採用してるプロダクトも多いし
コミュニティも活発じゃん。
なんでそんな事を思うのかい?
933 :
デフォルトの名無しさん :2008/06/04(水) 09:00:21
採用しているプロダクトも少ないし コミュニティも活発じゃないからだろうきっと。
Qtに負けてる?
>>934 Photoshop Elements、Opera、Google Earth、SkypeなんかがQtだね。
確かにちょっとよさそうだし、有料なんでサポートもしっかりしてそうだけど
wxWidgetsをすでに使ってるんだったら乗り換えるほどではないかな・・
あ、そう。 じゃあ乗り換えるのやめる。
937 :
デフォルトの名無しさん :2008/06/04(水) 18:08:03
wxStringに格納されている改行文字を数えるために、for文などと組み合わせて if(string::npos != mml.find(wxT("\n"), i ,len)){ line_count++; } のように書いてみたのですが、改行文字じゃないところまでマッチしてしまいます。 正しい書き方分かる方いらっしゃいましたら教えて頂けると嬉しいです。 環境はWindows wxMSW2.8.7 文字コードはunicodeです。
sizerだったかな? いまいちこの辺の理解ができない。
940 :
937 :2008/06/04(水) 22:27:08
>>939 分かりにくくてすいません。
lenはずっと固定1で、
iは1ループで1ずつ加算していく感じです。
単純に一文字ずつ調べていくように書きました。
あとmmlってのがwxStringオブジェクトです。。
>>940 find は、i 文字目から探しはじめて、はじめにみつかった文字列を返す、ので、
i を1 ずつ加算していくとそりゃおかしくなるでしょうよ
#include <iostream> #include <string> using namespace std; int main(void) { string src = "aaaa\nbbb\nc\n\nddddd\n"; string::size_type pos = 0; size_t count = 0; while ((pos = src.find("\n", pos)) != string::npos) { pos++; count++; } cout << count << endl; return 0; }
944 :
937 :2008/06/06(金) 14:26:46
iを1ずつ加算していくのは他にちょっと事情があったからなのですが・・説明不足でした。 レスありがとうございました。解決しましたm(_ _)m
945 :
デフォルトの名無しさん :2008/06/06(金) 15:05:22
wxRichTextCtrl を使ってみたんですが、マルチバイト文字をテキストコントロールのインターフェースに入力すると、なんか補完ウィンドウ?みたいのが出ます。 これを出ないようにしたいのですが、どうすればいいでしょうか。 リファレンス見ても分かりませんでした。
MacOSX 10.6でCarbon廃止されたら、wxMacもなくなるのかなあ。
10.6で廃止は早すぎるだろう? そのうちなくなるかもしれないが、俺達にはwxCocoaがある! 未だまともに動かないwxCococaがっ
誰も 32bit Carbon を廃止はしないだろう、そんなことしたら MS Office が動かなくなる
MS Office以前にAppleがSnow LepardまでにOS Xの付属アプリを 全部 Cocoa ベースに置き換えられるとは到底思えないんだよなぁ…
950 :
デフォルトの名無しさん :2008/06/08(日) 18:42:06
>>945 です。
補完ウィンドウが出る、というか、日本語を打つと、書いた文字がスペースキーを押すと漢字変換が出来る状態になりますが、
その状態の文字が、文字を打った場所ではなく、なぜかテキストコントロールのインターフェースの一番上の行に毎回表示されてしまう、という現象のようです。(それを補完をウィンドウ?と455で言っていました。)
wxTextCtrlだと普通に打ったマルチバイト文字がその行に表示されるのですが・・wxRichTextCtrlだとなぜかこうなってしまいます。
解決方法見つからず困っています。どなたかアドバイスいただけると幸いです。
>>950 wx のソースコードのバグを取って開発に貢献してください。
バグというか実装されていない機能の中身おくったけどさ、 半年ぐらいしてパッチ当てるよーってメール着たんだが、さらに半年経っても当たる様子無い。 仕方ないんで、ソース取り出してクラス名変えて使ってるよ。
自己解決しました
自己解決したときはどう解決したかかいておいてください あとで同じことにはまる人もいると思うので。
自分のした質問じゃないのに「自己解決しました」とだけ書いて去っていく荒らしもいるから注意な。
自己完結しました
957 :
945 :2008/06/09(月) 11:31:24
解決してません。 やはり自分もwxWidgets自体のバグなのかなと思うのでソースをいじってみることを考えているのですが、 スペースキーで漢字変換できる状態(うまい表現の仕方あったら教えてください・・)の文章の表示位置がおかしい、というのは、wxWidgetsとIMEの連携部分で何かおかしくなっている、ということなのでしょうか。 wxTextCtrlなら正常に動く感じなので、textctrl.hとrichtextctrl.hを比べてみたりしているのですが、どの辺りを見ればいいのか・・
>>957 気になったので調べてみた。
どうやら wxRichTextCtrl は独自の処理を行っていて
riched32.dll などを使っていないようだ。
wxTextCtrl に wxTE_RICH(2) などを付加して作成すると
riched32(20).dll を使う仕組みになっているっぽい。
959 :
957 :2008/06/09(月) 19:22:43
貴重な情報ありがとうございます!
ドキュメントを色々読み直していたのですが、もしかしたら自分のやりたいことがwxTextCtrlでもできるかもしれないような記述を見つけたので、
wxTextCtrlをもうちょっといじってみようかと丁度思っていたところでした。
自分のやりたいことというのが、プログラマ向けのエディタによくある予約語の強調表示なのですが、
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx381.htm ここに、
「例えば、1つ1つの文字に色やフォントを指定することも可能である
(ただし、Windows下では、スタイルをサポートするためにwxTE_RICHスタイルが要求されることに注意すること)。」
のように書いてあります。
さらにその下に
text->SetDefaultStyle(wxTextAttr(*wxRED));
text->AppendText("Red text\n");
text->SetDefaultStyle(wxTextAttr(wxNullColour, *wxLIGHT_GREY));
text->AppendText("Red on grey text\n");
のようなソースが示されていて、なんとなく感じは分かるのですが、
これだとインタフェースに文字を打ち込む際、特定の文字を打ち込んだ時リアルタイムに強調表示するようにできるのかどうか
(もちろんその文字を一部消したら、強調表示をリアルタイムで解除するようにもできるかどうか)分かりません。wxTextCtrlでこのようなことは出来るのでしょうか??質問ばかりですいません。
wxWidgets 一般の話をしているのか、wxMSW の話をしているのか区別をしてくれ ...
961 :
957 :2008/06/09(月) 23:15:37
今はWindowsで開発しているのでwxMSWですが、 wxTextCtrlで強調表示機能実現できるかどうかってプラットフォームに依るのでしょうか?? wxTE_RICHはMSWでしか使えなくて、それ使わないと無理なので他のプラットフォームでは自動的にwxTextCtrlでは実現不可、ってことでしょうか。
>>961 wxTE_RICH は wxMSW 専用。ほかの環境では意味をなさない。
(リッチエディットコントロールを使う指定だから)
>>959 入力した文字列をリアルタイムに強調表示したいのであれば、
OnChar(wxKeyEvent &)
あたりを使えばいいんじゃないかな。やってみないとわからないけど。
>>961 ちょっと説明不足だったけど、強調表示などは
wxTE_RICH を指定しなくても wxTextCtrl::SetStyle() と
wxTextAttr を使えば、実現できるんじゃないかな。
964 :
957 :2008/06/11(水) 00:01:42
>>964 univ ってのは、たぶん Universal Version のこと。
Windows の例で言えば、Windows のコントロールを使わず、
全部自前で処理するようにすること。
いろいろなプラットフォームで共通した動作をするようになる。
966 :
957 :2008/06/18(水) 18:21:31
なるほど、ありがとうございます。 返信遅れてすいません。 EVT_KEY_DOWN とか EVT_CHARとか使って強調表示機能っぽいものが出来始めたのですが、一つ分からないことが出てきました。 EVT_CHARは、ASCII文字の入力のタイミングは拾えるようなのですが、どうも全角文字の入力タイミングは拾えないみたいなんです。 全角文字でも強調表示したい単語があるので、全角文字が一字書き込まれる毎にそのタイミングを拾って、そのイベントが終了したらwxProcessEventでキャレット周辺の文字列を取得して、所定の文字列が含まれていたら強調表示〜みたいなことがしたいのですが、 そもそも全角文字入力の際に発生しているイベントはなんなのでしょう??
>>966 2度EVT_KEY_DOWNが飛んできませんか?
内部で捨てていない限り2度飛んでくるので、
それを漢字1文字分にすればいいと思います。
>>966 キー毎に強調表示するんでなくて、タイマーで1秒ごとに処理するとか ...
なんかnoobっぽい質問なんですが #include <wx/memory.h> して wxDebugContext::PrintStatistics(); すると error: ‘wxDebugContext’ has not been declared というエラーになるんですが、なぜなんでしょうか。 プリプロセッサかなにか定義しないといけないんでしょうか。 ちなみに関係ないと思いますがwx-configには--debugを渡しています。 バージョンは2.8.7.1です。
>>969 noob ってなんだろ…
sample の memcheck.cpp をみてみたけど、 wx/setup.h の下に書いてある
wxUSE_MEMORY_TRACING か wxUSE_DEBUG_CONTEXT を 1 に
しないと使えないみたいだよ。
971 :
969 :2008/06/23(月) 21:52:45
>>970 どうもありがとうございます、コンパイルはできました。
…ですがリンク時に大量のエラーが。
undefined reference to `wxObject::operator new(unsigned int, wchar_t const*, int)'
とか
undefined reference to `wxObject::operator delete(void*)'
とか
/usr/include/wx-2.8/wx/memory.h:329: undefined reference to `wxDebugContextDumpDelayCounter::sm_count'
とか。
うーん。
g++ `wx-config --libs --debug` *.o
リンクコマンドはこんな感じなんですが。
--cflagsも付けないと… wx-config --cflags --libs --debug でどうよ
あ、ごめん、リンクコマンドでしたね
>>971 wx-configだけで実行してみ?
-Lオプションとかちゃんとついてる?
975 :
969 :2008/06/23(月) 23:42:53
$ wx-config --libs --debug -pthread -Wl,-Bsymbolic-functions -lwx_gtk2ud_richtext-2.8 -lwx_gtk2ud_aui-2.8 -lwx_gtk2ud_xrc-2.8 -lwx_gtk2ud_qa-2.8 -lwx_gtk2ud_html-2.8 -lwx_gtk2ud_adv-2.8 -lwx_gtk2ud_core-2.8 -lwx_baseud_xml-2.8 -lwx_baseud_net-2.8 -lwx_baseud-2.8 こんなかんじでした。
>>975 いや、だから、-Lがないじゃん。
--cflagsでも--ldflagsでもいいから、-Lオプションが出るようにしてみ?
977 :
969 :2008/06/23(月) 23:51:19
>>976 うーん、どのフラグを指定しても-Lオプションは出ないみたいです。
ちなみにwx/setup.hをもとに戻してwxDebugContextの部分を消せば、ほかでwxWidgetクラスを参照していても
リンクまでちゃんとできます。
978 :
957 :2008/06/24(火) 00:12:13
テキストコントロールの文字列を変更した直後に発生するEVT_TEXTというイベントがあるのを見つけ、それで解決しました。 レスありがとうございましたm(_ _)m
>>977 あぁごめん、
>>969 からの流れ見てなかった。
自分でUbuntuにwxWidgets入れてみたら、/usr/lib/libwx*.so になってるから、-Lはいらなかった。多分
>>969 の環境も-L要らないんだろう。
で、wx/setup.hを勝手に変えちゃいけないよ。
wx/setup.hは、libwx*.soをビルドしたときに使ったオプションだから、変えたかったら自分でwxWidgetsをビルドしなおさないと。
>>971 979 も書いているけど、ライブラリもリビルドしないと駄目。
リビルド方法は Windows ならやり方わかるんだけど、
Unix 関連だとわかんないや。スマソ。
981 :
969 :
2008/06/24(火) 23:27:51 >>980 なるほど、wxWidgets自体をリビルドですか…
思いのほかめんどいんですね。
ともかく、皆さんどうもありがとうございました。