【GUI】wxWidgets(旧wxWindows) その3【サイザー】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2006/09/09(土) 00:06:30本家
http://www.wxwidgets.org/
wxWindows日本語プロジェクト
http://wxwindowsjp.sourceforge.jp/
Let's wxWidgets
http://dot-gray.s33.xrea.com/
(*)準備中(*)
http://www.geocities.co.jp/SiliconValley-Cupertino/8526/
wxWindowsで始めるC++ GUIプログラミング
http://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/
dW : Linux : wxWindowsの概要
http://www-6.ibm.com/jp/developerworks/linux/010413/j_l-wxwin.html
SunWorld Online:wxWindows――無名だが成熟したGUIツールキット
http://www.idg.co.jp/sw/back/200102/20010219_01_report.html
0002デフォルトの名無しさん
2006/09/09(土) 00:07:04http://pc8.2ch.net/test/read.cgi/tech/1097524712/
http://pc5.2ch.net/test/read.cgi/tech/1052186697/
主な言語バインディング
wxPython
http://www.wxpython.org/
wxPerl
http://wxperl.sourceforge.net/
wxRuby
http://wxruby.rubyforge.org/wiki/wiki.pl
wx4j
http://www.wx4j.org/
wx.NET
http://wxnet.sourceforge.net/
wxLua
http://www.luascript.thersgb.net/
wxHaskell
http://wxhaskell.sourceforge.net/
0003デフォルトの名無しさん
2006/09/09(土) 00:17:35将来的にもソースは出せないと思います。
ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。
0004デフォルトの名無しさん
2006/09/09(土) 00:18:35http://www.codeproject.com/useritems/wxwidgets.asp
このページはいろいろ参考になると思うんですが、テンプレに入れませんか?
0005デフォルトの名無しさん
2006/09/09(土) 00:21:50ttp://www.phptr.com/promotions/promotion.asp?promo=1484&redir=1&rl=1
http://www.phptr.com/content/images/0131473816/downloads/0131473816_book.pdf
0006デフォルトの名無しさん
2006/09/09(土) 00:35:47一応JavaScriptバインディングもあるよ。
wxJS
http://users.skynet.be/saw/wxJS/
0007デフォルトの名無しさん
2006/09/09(土) 08:36:39>>4は移動になっているらしい。
http://www.codeproject.com/library/wxwidgets.asp
0008デフォルトの名無しさん
2006/10/03(火) 21:40:46wxTreeListCtrlはWin32 Common Controlにも欲しいと思う。
http://wxcode.sourceforge.net/
0009デフォルトの名無しさん
2006/10/03(火) 22:19:18wxSocket使おうとしているので、一応確認したが、
受信スレッドを内部で別に立てているなら、
wxUSE_THREADSを1と定義してビルドする必要があるのだろう。
wxMSWだけでの検証ですまんが、コードを追ってみると、
メインスレッドのみ、wxYieldを呼び出している。
wxYieldは内部でwxTheApp->Yield()を呼んでいるだけで
ここがマルチスレッドセーフではない模様。
他のスレッドはwxThread::Yield()を呼んでいる。
wxThread::Yield()の内部はSleep(0)なので、問題なし。
wxUSE_THREADSが無い時点でスレッドを立てるような
物は使ってはいけないのでイベントハンドラを定義せずに
ブロッキングで組む必要があるということじゃないのかな?
ところで、スレッド無しはわざわざヘッダを書き直さないと
そのようにはならないと思うのだが、実行してデバッグしたわけではないので
間違っていたらすまん。
そのうち自分でもテストはしないとだめなんだろうがねぇ。
0010デフォルトの名無しさん
2006/10/03(火) 23:05:04wxUSE_THREADSは1(初期値)のまんまですね
wxWidgets自体のバグの線が高そう
環境はmswです
0011デフォルトの名無しさん
2006/10/03(火) 23:48:150012デフォルトの名無しさん
2006/10/04(水) 02:09:24勝手に書き換えるのは気持ち悪いでしょう
00139
2006/10/04(水) 02:15:41ソースを追ってみたが、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させるようにするのはどう?
0014デフォルトの名無しさん
2006/10/04(水) 02:56:030015デフォルトの名無しさん
2006/10/05(木) 14:10:04教えてエロい人
0016デフォルトの名無しさん
2006/10/05(木) 14:29:53サ イ サ ゙ ー っ て イ可 ?
0017デフォルトの名無しさん
2006/10/06(金) 17:27:550018デフォルトの名無しさん
2006/10/06(金) 23:36:440019デフォルトの名無しさん
2006/10/07(土) 00:21:00OpenGL描画して最後にwxGLCanvas::SwapBuffer()呼ぶ関数作って
それ呼べばRefresh()呼ばんでもいいんじゃない?
0020デフォルトの名無しさん
2006/10/07(土) 19:30:39だれかサンプルだけでも、日本語に訳してくれ。
0021デフォルトの名無しさん
2006/10/07(土) 23:19:020022デフォルトの名無しさん
2006/10/07(土) 23:25:360023デフォルトの名無しさん
2006/10/07(土) 23:39:23英語っていってもほとんど基礎英語レベルのことしかない
これがわからない人はそもそも言語の構造がわかってないんだろう
MFCでも先に勉強したほうが早いよ
0024デフォルトの名無しさん
2006/10/08(日) 23:42:49wxDialogにwxButton貼り付けたんだけど
Dialogのサイズ変更するとボタンが
最大化しちゃうんだが、何が原因なのかな?
002524
2006/10/08(日) 23:47:54Toolbar必須なのか...
0026デフォルトの名無しさん
2006/10/09(月) 00:35:06もうひとつ何か貼れば最大化しなかったよ
0027デフォルトの名無しさん
2006/10/09(月) 01:31:08結構細々としているからねwxWidgetsは。
俺はサンプルに日本語コメントを付けまくってしょっちゅう見返してるよ。
0028デフォルトの名無しさん
2006/10/09(月) 01:46:200029デフォルトの名無しさん
2006/10/09(月) 01:59:55それなりにいいと思うぞ。
ただだし。
0030デフォルトの名無しさん
2006/10/09(月) 02:46:03英語は疲れるよ。
0031デフォルトの名無しさん
2006/10/09(月) 16:28:270032デフォルトの名無しさん
2006/10/13(金) 17:19:02何この糞仕様。
0033デフォルトの名無しさん
2006/10/14(土) 00:11:570034デフォルトの名無しさん
2006/10/14(土) 00:27:080035デフォルトの名無しさん
2006/10/14(土) 00:38:3400369
2006/10/14(土) 01:13:36wx関連のほとんどの機能はメインスレッド以外でやってはいけない感じなのかもしれない。
0037デフォルトの名無しさん
2006/10/14(土) 03:39:53ん〜。そうでもないよ。
受信用スレッド作ってそこでソケットごにょごにょやってたことあるし。
ってそういう話では無い?
自分で何か修正したような記憶があったりなかったり。。。
2.6が出た頃の話だったと思うので、あまり真に受けんといてください。
00389
2006/10/14(土) 20:18:52俺も送信用スレッドは使ってるけどね、wxのINPUTイベントやCLOSEイベントなんか
はメインスレッドでイベントでもらってRead/Destroyなどをするようにしてる。
Read/Writeを交互に行うようなプロトコルにしているため、
Writeをしながら、Readを呼び出しても問題が無いかどうかは検証していない。
また、排他制御をSingle Thread Execution Patternで避けれるから、一概に悪いとは言えないけどね。
送信・受信と別々につなげてそれぞれブロッキングで別スレッドを立てるほうがいいのかもしれないけど
Nagleがらみで送受信を分けるとラグが発生しそうだしなぁ。
0039デフォルトの名無しさん
2006/10/15(日) 14:33:000040デフォルトの名無しさん
2006/10/15(日) 18:34:022.6.3のサンプルのminimalをbccでコンパイルしたら、exeサイズ約1.9MB、何だけど...
でかすぎー
0041デフォルトの名無しさん
2006/10/15(日) 18:42:040042デフォルトの名無しさん
2006/10/15(日) 19:44:40まぁでかいのはでかいが
0044デフォルトの名無しさん
2006/10/21(土) 15:05:41char *しか受け付けない関数があるんです。
0045デフォルトの名無しさん
2006/10/21(土) 20:48:25エンコーディングを特定したければwxMBConv系を直接使う
0046デフォルトの名無しさん
2006/10/21(土) 22:33:57三番目のsize_t nにはwchar_tの文字列のサイズを渡せば良いのでしょうか。
0047デフォルトの名無しさん
2006/10/25(水) 14:15:34って警告が大量に出るんですが、これどうにかならないでしょうか?
0048デフォルトの名無しさん
2006/10/26(木) 00:17:38ノ /,.-‐'"´ `ヾj ii / Λ
,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
ノ/,/ミ三ニヲ´ ゙、ノi!
{V /ミ三二,イ , /, ,\ Yソ
レ'/三二彡イ .:ィこラ ;:こラ j{
V;;;::. ;ヲヾ!V ー '′ i ー ' ソ
Vニミ( 入 、 r j ,′
ヾミ、`ゝ ` ー--‐'ゞニ<‐-イ
ヽ ヽ -''ニニ‐ /
| `、 ⌒ ,/
| >┻━┻'r‐'´
ヽ_ |
ヽ _ _ 」
ググレカス [ Gugurecus ]
( 2006 〜 没年不明 )
0049デフォルトの名無しさん
2006/10/26(木) 00:48:490050デフォルトの名無しさん
2006/11/04(土) 02:25:220051デフォルトの名無しさん
2006/11/05(日) 19:06:100052デフォルトの名無しさん
2006/11/05(日) 20:24:22ボタンとか、絶対位置指定できる点はいいとは思うけど。
DialogBlocksはちょっと複雑なの書くとエラーがでるんだが・・・
0053デフォルトの名無しさん
2006/11/09(木) 01:32:48つまづいてます
メインの処理とかはどうでいいのですが、常駐アプリとして使うことを考慮して
1. 常に手前に表示
2. 透明度を変えられる
3. キーボードとかマウスとかのイベントを下のウィンドウにスルー
を実現したいのですが3番目を実現する方法がわかりません
0054デフォルトの名無しさん
2006/11/09(木) 02:36:59005553
2006/11/09(木) 18:20:15私のグーグル力が確かならVetoはwxNotifyEventではじめて定義されてるので
wxNotifyEventを継承していないwxMouseEventに対しては呼べないと思うのですが・・・
wxNotifyEvent
ttp://www.wxwidgets.org/manuals/2.6.3/wx_wxnotifyevent.html
0056デフォルトの名無しさん
2006/11/09(木) 20:38:2611月13日に2.8.0リリース予定だそうだ
005753
2006/11/09(木) 23:02:03ttp://forums.belution.com/ja/vc/000/172/70.shtml
Win32APIネイティブでここまでゴリゴリやってできないとなると
それをクロスプラットフォームGUIライブラリに求めるのは酷だと思うのであきらめます
ありがとうございました
0058デフォルトの名無しさん
2006/11/12(日) 18:29:20なんか、そんな話が出てたような気がするんで。
そのソースってまだ公開されてないですよね?
0059デフォルトの名無しさん
2006/11/12(日) 22:16:52おまいら、何でGUI君でんの?
0060デフォルトの名無しさん
2006/11/12(日) 22:21:340061デフォルトの名無しさん
2006/11/12(日) 22:25:370062デフォルトの名無しさん
2006/11/12(日) 22:35:240063デフォルトの名無しさん
2006/11/14(火) 12:45:50EVT_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
■ このスレッドは過去ログ倉庫に格納されています