2ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【GUI】wxWidgets(旧wxWindows) その3【サイザー】

1 :デフォルトの名無しさん:2006/09/09(土) 00:06:30
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)について語りましょう。

本家
 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

2 :デフォルトの名無しさん:2006/09/09(土) 00:07:04
過去スレ
http://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/

3 :デフォルトの名無しさん:2006/09/09(土) 00:17:35
車輪の再発明をしても仕方がありませんし、公開に値するしろものでもありませんので
将来的にもソースは出せないと思います。
ゆくゆくは自作のプログラムに組み込めればそれでいいかな、と。

4 :デフォルトの名無しさん:2006/09/09(土) 00:18:35
ところで
http://www.codeproject.com/useritems/wxwidgets.asp
このページはいろいろ参考になると思うんですが、テンプレに入れませんか?

5 :デフォルトの名無しさん:2006/09/09(土) 00:21:50
書籍のPDF
ttp://www.phptr.com/promotions/promotion.asp?promo=1484&redir=1&rl=1
http://www.phptr.com/content/images/0131473816/downloads/0131473816_book.pdf

6 :デフォルトの名無しさん:2006/09/09(土) 00:35:47
>>1
一応JavaScriptバインディングもあるよ。
wxJS
 http://users.skynet.be/saw/wxJS/

7 :デフォルトの名無しさん:2006/09/09(土) 08:36:39
>>1 乙

>>4は移動になっているらしい。
http://www.codeproject.com/library/wxwidgets.asp

8 :デフォルトの名無しさん:2006/10/03(火) 21:40:46
wxCodeも入れない?
wxTreeListCtrlはWin32 Common Controlにも欲しいと思う。
http://wxcode.sourceforge.net/


9 :デフォルトの名無しさん:2006/10/03(火) 22:19:18
前スレの>>978, 985

wxSocket使おうとしているので、一応確認したが、
受信スレッドを内部で別に立てているなら、
wxUSE_THREADSを1と定義してビルドする必要があるのだろう。

wxMSWだけでの検証ですまんが、コードを追ってみると、

メインスレッドのみ、wxYieldを呼び出している。
wxYieldは内部でwxTheApp->Yield()を呼んでいるだけで
ここがマルチスレッドセーフではない模様。

他のスレッドはwxThread::Yield()を呼んでいる。
wxThread::Yield()の内部はSleep(0)なので、問題なし。

wxUSE_THREADSが無い時点でスレッドを立てるような
物は使ってはいけないのでイベントハンドラを定義せずに
ブロッキングで組む必要があるということじゃないのかな?
ところで、スレッド無しはわざわざヘッダを書き直さないと
そのようにはならないと思うのだが、実行してデバッグしたわけではないので
間違っていたらすまん。
そのうち自分でもテストはしないとだめなんだろうがねぇ。

10 :デフォルトの名無しさん:2006/10/03(火) 23:05:04
>>9
wxUSE_THREADSは1(初期値)のまんまですね
wxWidgets自体のバグの線が高そう
環境はmswです

11 :デフォルトの名無しさん:2006/10/03(火) 23:48:15
メインスレッドは::wxSafeYield()使え、と言ってみる

12 :デフォルトの名無しさん:2006/10/04(水) 02:09:24
言ってみるって言われても、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させるようにするのはどう?

14 :デフォルトの名無しさん:2006/10/04(水) 02:56:03
それなら最初からスレッドでReadしっぱなしのほうがいいなw

15 :デフォルトの名無しさん:2006/10/05(木) 14:10:04
OpenGL用の再描画関数でRefresh()以外の奴って何かないの?
教えてエロい人

16 :デフォルトの名無しさん:2006/10/05(木) 14:29:53



 サ イ サ ゙ ー っ て イ可 ? 



17 :デフォルトの名無しさん:2006/10/06(金) 17:27:55
性帝

18 :デフォルトの名無しさん:2006/10/06(金) 23:36:44
キラーアプリはaudacity?

19 :デフォルトの名無しさん:2006/10/07(土) 00:21:00
>>15
OpenGL描画して最後にwxGLCanvas::SwapBuffer()呼ぶ関数作って
それ呼べばRefresh()呼ばんでもいいんじゃない?

20 :デフォルトの名無しさん:2006/10/07(土) 19:30:39
英語なのが悔やまれる。
だれかサンプルだけでも、日本語に訳してくれ。

21 :デフォルトの名無しさん:2006/10/07(土) 23:19:02
あんまり使ってる人いないのかな?


22 :デフォルトの名無しさん:2006/10/07(土) 23:25:36
Linux使ってる奴なんて相手にしない が正解。

23 :デフォルトの名無しさん:2006/10/07(土) 23:39:23
リファレンスなら日本語訳されてるぞ
英語っていってもほとんど基礎英語レベルのことしかない
これがわからない人はそもそも言語の構造がわかってないんだろう
MFCでも先に勉強したほうが早いよ

24 :デフォルトの名無しさん:2006/10/08(日) 23:42:49
DialogBlocksで

wxDialogにwxButton貼り付けたんだけど
Dialogのサイズ変更するとボタンが
最大化しちゃうんだが、何が原因なのかな?


25 :24:2006/10/08(日) 23:47:54
適当にToolbar挿入してみたら直った。
Toolbar必須なのか...

26 :デフォルトの名無しさん:2006/10/09(月) 00:35:06
貼付けてるのが一個だけだったら最大化してた
もうひとつ何か貼れば最大化しなかったよ

27 :デフォルトの名無しさん:2006/10/09(月) 01:31:08
>>20
結構細々としているからねwxWidgetsは。
俺はサンプルに日本語コメントを付けまくってしょっちゅう見返してるよ。

28 :デフォルトの名無しさん:2006/10/09(月) 01:46:20
sizer

29 :デフォルトの名無しさん:2006/10/09(月) 01:59:55
俺は英語だけど、どっかのサイトで公開しているPDFを読んでます。
それなりにいいと思うぞ。
ただだし。

30 :デフォルトの名無しさん:2006/10/09(月) 02:46:03
英語より、日本語を読みたい。
英語は疲れるよ。

31 :デフォルトの名無しさん:2006/10/09(月) 16:28:27
挙げ

32 :デフォルトの名無しさん:2006/10/13(金) 17:19:02
ウィンドウをクローズすると、登録したイベントハンドラが全部呼ばれるって、
何この糞仕様。

33 :デフォルトの名無しさん:2006/10/14(土) 00:11:57
2.7.1 リリース

34 :デフォルトの名無しさん:2006/10/14(土) 00:27:08
7なんか怖くて使う気にならない

35 :デフォルトの名無しさん:2006/10/14(土) 00:38:34
日本語マニュアルまだ〜?

36 :9:2006/10/14(土) 01:13:36
コーディングした結果としては、ソケットのイベントもその他のイベントも全てメインスレッドのみで動いてるな。
wx関連のほとんどの機能はメインスレッド以外でやってはいけない感じなのかもしれない。


37 :デフォルトの名無しさん:2006/10/14(土) 03:39:53
>>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、何だけど...
でかすぎー

41 :デフォルトの名無しさん:2006/10/15(日) 18:42:04
MFCだってmfcのランタイムまでいれたら相当でかいな

42 :デフォルトの名無しさん:2006/10/15(日) 19:44:40
stripしてexepacker通したらそこそこ小さくなるでよ
まぁでかいのはでかいが

43 :40:2006/10/15(日) 22:09:44
>>42
そうですか、でかいですか。どうもです。


44 :デフォルトの名無しさん:2006/10/21(土) 15:05:41
wxChar *をchar *に変換する方法ってありますでしょうか。
char *しか受け付けない関数があるんです。

45 :デフォルトの名無しさん:2006/10/21(土) 20:48:25
wx{MB,WX,WC}2{MB,WX,WC} (関数)
エンコーディングを特定したければwxMBConv系を直接使う

46 :デフォルトの名無しさん:2006/10/21(土) 22:33:57
wxWC2MBを試してみていますが、うまくいきません。
三番目のsize_t nにはwchar_tの文字列のサイズを渡せば良いのでしょうか。

47 :デフォルトの名無しさん:2006/10/25(水) 14:15:34
警告: dereferencing type-punned pointer will break strict-aliasing rules
って警告が大量に出るんですが、これどうにかならないでしょうか?

48 :デフォルトの名無しさん:2006/10/26(木) 00:17:38
      , イ)ィ -─ ──- 、ミヽ
      ノ /,.-‐'"´ `ヾj ii /  Λ
    ,イ// ^ヽj(二フ'"´ ̄`ヾ、ノイ{
   ノ/,/ミ三ニヲ´        ゙、ノi!
  {V /ミ三二,イ ,  /,   ,\  Yソ
  レ'/三二彡イ  .:ィこラ   ;:こラ  j{
  V;;;::. ;ヲヾ!V    ー '′ i ー ' ソ
   Vニミ( 入 、      r  j  ,′  
   ヾミ、`ゝ  ` ー--‐'ゞニ<‐-イ
     ヽ ヽ     -''ニニ‐  /
        |  `、     ⌒  ,/
       |    >┻━┻'r‐'´
      ヽ_         |
         ヽ _ _ 」    

  ググレカス [ Gugurecus ]
  ( 2006 〜 没年不明 )

49 :デフォルトの名無しさん:2006/10/26(木) 00:48:49
……ググレカスって現代人だったのか

50 :デフォルトの名無しさん:2006/11/04(土) 02:25:22
どちらかというと古代ギリシャ人

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番目を実現する方法がわかりません

54 :デフォルトの名無しさん:2006/11/09(木) 02:36:59
evt.veto

55 :53:2006/11/09(木) 18:20:15
>>54
私のグーグル力が確かならVetoはwxNotifyEventではじめて定義されてるので
wxNotifyEventを継承していないwxMouseEventに対しては呼べないと思うのですが・・・

wxNotifyEvent
ttp://www.wxwidgets.org/manuals/2.6.3/wx_wxnotifyevent.html

56 :デフォルトの名無しさん:2006/11/09(木) 20:38:26
2.7.2出たね

11月13日に2.8.0リリース予定だそうだ

57 :53:2006/11/09(木) 23:02:03
マウスクリックイベントをスルーする方法
ttp://forums.belution.com/ja/vc/000/172/70.shtml

Win32APIネイティブでここまでゴリゴリやってできないとなると
それをクロスプラットフォームGUIライブラリに求めるのは酷だと思うのであきらめます
ありがとうございました

58 :デフォルトの名無しさん:2006/11/12(日) 18:29:20
これって、3.0になるとSTLとか使ってモダンなAPIになるんでしょうか?
なんか、そんな話が出てたような気がするんで。
そのソースってまだ公開されてないですよね?

59 :デフォルトの名無しさん:2006/11/12(日) 22:16:52
さて、ややこしい話が出たところで、また俺がRADネタを振ろうかね。
おまいら、何でGUI君でんの?

60 :デフォルトの名無しさん:2006/11/12(日) 22:21:34
CUIじゃ時代遅れだから。

61 :デフォルトの名無しさん:2006/11/12(日) 22:25:37
そういう意味じゃないと思うよww

62 :デフォルトの名無しさん:2006/11/12(日) 22:35:24
俺は Mac と Solaris かな。

63 :デフォルトの名無しさん:2006/11/14(火) 12:45:50
wxPythonのGridの質問です。

EVT_GRID_CELL_CHANGEの時に新しく行を追加すると
無限ループになってしまいます。
エラーを見ると、新しい行でEVT_GRID_CELL_CHANGEが起きてるのでなくて
最初にEVT_GRID_CELL_CHANGEを起こした行で再帰になってるようなのですが
これを回避する方法はありますか?
やりたいことは MS Accessのテーブルみたいに、
空白行に何か書込んだら、新しい空白行を追加したいのです。

class MyGrid(wx.grid.Grid):
 def __init__(self, parent):
  wx.grid.Grid.__init__(self, parent, -1, size=(200, 100) )
  self.CreateGrid(1,1)
  self.Bind(wx.grid.EVT_GRID_CELL_CHANGE, self.OnCellChange)

 def OnCellChange(self, event):
  Row = event.GetRow()
  print "%d: EVT_GRID_CELL_CHANGE" % Row
  self.InsertRows(Row + 1, 1, 1)

結果:
0: EVT_GRID_CELL_CHANGE
 (・・数十行繰り返し・・)
0: EVT_GRID_CELL_CHANGE
Traceback (most recent call last):
File ****, line 15, in OnCellChange
Row = event.GetRow()
RuntimeError: maximum recursion depth exceeded

64 :507:2006/11/14(火) 14:19:45
>>59
うぃんどうず
率直なところ使い勝手はあまり良くない

65 :デフォルトの名無しさん:2006/11/14(火) 16:26:12
これって半透明なウィンドウつくれるの?

66 :デフォルトの名無しさん:2006/11/15(水) 23:21:20
多分半透明は無理

67 :デフォルトの名無しさん:2006/11/15(水) 23:28:33
>>63
OnCellChangeで再帰呼び出しチェック用のフラグ立てて、
再帰だったら何もしないでreturnすりゃいいんじゃない?

68 :デフォルトの名無しさん:2006/11/16(木) 01:22:30
これ、使い方がMFCにそっくりだね。
ちょっとウザイ

サイズがでかいのはどうにかならないかな?
メモ帳を作ったら、3Mあったよ。
ありえねー

69 :デフォルトの名無しさん:2006/11/16(木) 10:40:39
>>68
ダイナミックリンクにすればいい。

70 :デフォルトの名無しさん:2006/11/16(木) 12:26:43
>>67
フラグのタイミングをいろいろ試して、
  ・・・
  self.FlagRec = 0

 def OnCellChange(self, event):
  Row = event.GetRow()
  self.FlagRec += 1
  print "%d: %d: EVT_GRID_CELL_CHANGE" % (self.FlagRec, Row)
  if self.FlagRec == 1:
   self.InsertRows(Row + 1, 1, 1)
   self.FlagRec = 0

としたらうまくいきました。
あと、InsertRows じゃなくて AppendRows を使えば再帰が起らず思い通りになりました

71 :毛の生えたブリーフ:2006/11/20(月) 20:42:19
http://wxbasic.sourceforge.net/

私はwxBasicを使っています。結構高速に動くし、楽チンです。

frame = New wxFrame(NULL, -1 "テスト")
frame.Show(True)

このたった二行で、窓が開きます。
暇ができたら自分のサイトに解説を書こうと思っています。

72 :デフォルトの名無しさん:2006/11/20(月) 20:58:18
? USING

73 :デフォルトの名無しさん:2006/11/20(月) 21:05:55
import Graphics.UI.WX
main = start $ frame [text := "test", visible := True]

wxHaskellでも二行、と意地を張ってみるテスト

74 :デフォルトの名無しさん:2006/11/20(月) 21:18:48
Haskell 奇麗だなあ

75 :デフォルトの名無しさん:2006/11/20(月) 21:44:54
どこがきれいなんだよ。わけわかんねーよ

76 :毛の生えたブリーフ:2006/11/20(月) 22:37:32
'--------GUIの作成と表示
frame = New wxFrame(NULL, -1, "テスト")
button = New wxButton(frame, -1, "押してね")
frame.Show(True)
'-------イベントハンドラの作成
Function click(event)
wxMessageBox( "ボタンを押したね", "ボタンイベント", wxOK + wxICON_INFORMATION, frame )
End
End Function
'---------イベントとイベントハンドラの関連づけ
Connect(button, wxEVT_COMMAND_BUTTON_CLICKED, "click")


たったこれだけです。ですが、、、、wxWidgetsのドキュメントを
読みこなすのは正直きついですね。wxBasicのウィジェッツはバージョンが
古いので、本家から古めのドキュメントを取ってきて読んでいます。

77 :毛の生えたブリーフ:2006/11/21(火) 21:09:59
スレタイの「サイザー」とは何か?

これは本当に奥が深いものです。
76のコードではウィンドウいっぱいにボタンが表示されます。

wxButton(frame, -1, "押してね", wxPoint(40,50), wxSize(50,80))

などにしても駄目です。どうしてか・・・・・三日悩んで見つかったもの
それが「サイザー」

78 :デフォルトの名無しさん:2006/11/21(火) 22:18:10
 サ イ サ ゙ ー っ て イ可 ? 

79 :デフォルトの名無しさん:2006/11/21(火) 22:51:55
シンセ?

80 :デフォルトの名無しさん:2006/11/21(火) 23:02:53
サイズ、サイザー、・・・

81 :デフォルトの名無しさん:2006/11/23(木) 01:54:34
サイゼリヤ

82 :デフォルトの名無しさん:2006/11/23(木) 04:57:53
退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマと対極に位置する存在



眠い・・・・('A`)

83 :デフォルトの名無しさん:2006/11/23(木) 08:26:57
>>82
[退かぬ、媚びぬ、省みぬの三拍子を持ったプルグラマ]と対極に位置する存在
退かぬ、媚びぬ、省みぬの三拍子を持った[プルグラマと対極に位置する]存在

('A`) ドッチ?

84 :毛の生えたブリーフ:2006/11/23(木) 09:11:52
南斗聖拳のみたいなツールキットですね。

ところで
問1、 神魔血破弾を必殺技とする鬼哭霊気の物語のタイトルは
問2、 「アステカの星」を額に持つ、プロレスの星の男の名は
問3、 「三ツ矢」と言えば
問4、 ベガ星連合軍から滅ぼされたグレン星の守護ロボットの名は

85 :デフォルトの名無しさん:2006/11/27(月) 10:15:55
>>83
超遅くなりましたが後者デス

        il||li  
      ∧∧     
     /⌒ヽ)  
..,,....〜(,_,,,).....,,,,....もうだめぽ

86 :デフォルトの名無しさん:2006/12/15(金) 23:04:27
2.8.0リリース
http://jaist.dl.sourceforge.net/sourceforge/wxwindows/changes-2.8.0.txt

87 :デフォルトの名無しさん:2006/12/16(土) 09:32:16
バージョンアップのペースが速いような…

88 :デフォルトの名無しさん:2006/12/19(火) 18:22:17
サイザー専用JAVA演習場
http://pc8.2ch.net/test/read.cgi/tech/1165571435/

89 :デフォルトの名無しさん:2006/12/19(火) 18:42:02
サイザーナックル

90 :デフォルトの名無しさん:2006/12/31(日) 16:43:52
バグらしき物を発見したんですがどこかに報告した方がいいんでしょうか?
バージョンはwxMSW-2.8.0です。

// src/common/dynarray.cpp 379行目から
void name::insert(iterator it, const_iterator first, const_iterator last) \
{                                          \
 size_t nInsert = last - first, nIndex = it - begin();            \
 if (nInsert == 0)                                \
  return;                                    \
 Grow(nInsert);                                 \
                                          \
 memmove(&m_pItems[nIndex + nInsert], &m_pItems[nIndex],     \
     (m_nCount - nIndex)*sizeof(T));                  \
 for (size_t i = 0; i < nInsert; ++i, ++it, ++first)              \
  *it = *first;                                 \
 m_nCount += nInsert;                            \
}

Growによって配列が再確保されるとitがdeleteされた領域を指してしまいます。
Growの後に it = begin() + nIndex; を挿入すれば大丈夫っぽいです。

91 :デフォルトの名無しさん:2006/12/31(日) 22:20:34
>>90
sourceforgeでバグレポできる。

92 :デフォルトの名無しさん:2007/02/14(水) 07:29:33
シンセサイザーのサイザー?

93 :デフォルトの名無しさん:2007/02/14(水) 18:03:27
Delphiみたくポトペタ開発できますか?

94 :デフォルトの名無しさん:2007/02/14(水) 19:40:56
VisualWxってどうですか?

95 :デフォルトの名無しさん:2007/02/15(木) 05:30:10
Sizer

96 :デフォルトの名無しさん:2007/02/15(木) 08:56:49
VisualWx使ったアプリというかサンプルアプリがネットに転がってないですか?

97 :デフォルトの名無しさん:2007/02/15(木) 19:44:08
cygwin+gcc3.4.4+wxMSW-2.8.0+wxGladeでhelloworld作ったんだけど
-mno-cygwin付けてコンパイルしようとするとエラーが起きる。どうしよう

g++ -c -mno-cygwin -Os -O4 -Wall `wx-config --cppflags` -I/usr/local/mingw/include hello.cpp
/usr/local/include/wx-2.8/wx/utils.h:21 から include されたファイル中,
/usr/local/include/wx-2.8/wx/cursor.h:41 から,
/usr/local/include/wx-2.8/wx/event.h:22 から,
    :
    :
/usr/local/lib/wx/include/msw-ansi-debug-static-2.8/wx/setup.h:808:1: 警告: this is the location of the previous definition
g++ -o hello.exe hello.o -mno-cygwin -mwindows `wx-config --libs` -L/usr/local/mingw/lib
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_textctrl.o):textctrl.cpp:(.rdata$_ZTV10wxTextCtrl[vtable for wxTextCtrl]+0x3b0):
undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<_mbstate_t>, std::_Ios_Openmode)'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_textcmn.o):textcmn.cpp:(.rdata$_ZTV14wxTextCtrlBase[vtable for wxTextCtrlBase]+0x3b0):
undefined reference to `std::basic_streambuf<char, std::char_traits<char> >::seekpos(std::fpos<_mbstate_t>, std::_Ios_Openmode)'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_gsockmsw.o):../src/msw/gsockmsw.cpp:421: undefined reference to `___assert'
/usr/local/lib/libwx_mswd_core-2.8.a(corelib_gsockmsw.o):../src/msw/gsockmsw.cpp:454: undefined reference to `___assert'
    :
    :
/usr/local/lib/libwx_based-2.8.a(baselib_datetime.o):../src/common/datetime.cpp:2283: undefined reference to `_gmtime_r'
collect2: ld はステータス 1 で終了しました
make: *** [hello.exe] エラー 1

98 :デフォルトの名無しさん:2007/02/15(木) 19:48:21
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
http://namazu.org/~satoru/pub/uu-2004-08/

ここ参考にしました

99 :デフォルトの名無しさん:2007/02/15(木) 21:43:53
>>97
gmtime_rが見て意義。

100 :デフォルトの名無しさん:2007/02/16(金) 03:32:09
wxGladeでなんとか簡単なGUIをつくりはじめたんだけど、参考に出来るコードがたくさん
載ってるページってない?

101 :デフォルトの名無しさん:2007/02/16(金) 08:58:54
つ VisualWx

102 :デフォルトの名無しさん:2007/02/16(金) 18:26:44
>>100
samplesというディレクトリに60万行ほど載ってるけど、まだ足りないの?

103 :デフォルトの名無しさん:2007/02/18(日) 01:33:16
>>102
samplesにはプルダウンメニューのサンプルがないよね。コンボボックスはあるけど。
どのクラスを使えばいいんだろう?

104 :デフォルトの名無しさん:2007/02/18(日) 14:13:59
>103
wxComboBoxのwindow styleにwxCB_DROPDOWNとか
wxCB_READONLYを指定すればいいんじゃない?

105 :デフォルトの名無しさん:2007/02/18(日) 15:50:22
wxChoiceのことか?

106 :デフォルトの名無しさん:2007/02/18(日) 18:21:10
>>105
wxChoiceとwxComboBoxってどう違うん?

107 :デフォルトの名無しさん:2007/02/18(日) 18:30:04
wxChoiceは、あらかじめ用意されたリストから選ぶだけ。いわゆるプルダウンメニュ−。
wxComboBoxは、プルダウンメニュー+「メニューにない物も入力出来るテキストボックス」

108 :デフォルトの名無しさん:2007/02/23(金) 11:07:22
OSがT-Engineとかでウィンドウシステムが無いものにポーティングすることは可能ですか?

109 :デフォルトの名無しさん:2007/02/24(土) 08:44:46
VisualWx使ってみたが、MicrosoftとかBorlandのRADとは
比べ物にならないな。
糞。


110 :デフォルトの名無しさん:2007/02/24(土) 16:36:05
エディタ手打ちで済むものをいちいちポトペタしなくてもいいじゃないか。



111 :デフォルトの名無しさん:2007/02/25(日) 01:24:44
いや、やっぱエディタ打ちはやってて面倒だよ・・・。

112 :デフォルトの名無しさん:2007/02/25(日) 01:27:39
アセンブラがあれば(ry

113 :デフォルトの名無しさん:2007/02/25(日) 03:00:56
ハンドアセンブルしてバイナリを直接入力すれば(ry

114 :デフォルトの名無しさん:2007/02/26(月) 04:44:02
テキストコントロールの各行に対する行数(行番号)を表示させたいんだけど、
(行番号があらかじめ書いてある原稿用紙に書き込む感じにしたい)
なんかいい方法ない?

115 :デフォルトの名無しさん:2007/02/26(月) 08:12:02
>>114
行番号表示用のウィンドウを作るのが多分一番楽

116 :114:2007/02/27(火) 01:48:30
>>115
はい。それも考えたんですが、本文の行数が多い場合に縦にスクロールさせると、
行番号表示用の行数とずれてしまうという問題があり、詰まっています。
なにかいい手はないでしょうか?

117 :デフォルトの名無しさん:2007/02/27(火) 10:53:40
>>116
テキストコントロールの内容を変更するたびに、
行頭に行番号を追加するようにすればいいんじゃね?

118 :デフォルトの名無しさん:2007/02/27(火) 17:01:25
114, 116はかなりの初心者かな?

119 :114:2007/02/27(火) 23:27:54
>>118
いままで簡単なスクリプトを書いて仕事(研究員)に使う程度だったのですが、
GUIつきのプログラムを作れば使いやすくなるし、同僚に自慢できるし、
上司によりアピールできるし。。。と思って始めたばかりです。

私のような初心者でも簡単なGUIが作れるという点ではwxwidgetsは素晴らしいと思います。
ただ、少し凝ろうとすると急にハードルが高く感じられます。今回の行番号表示など。
テキストエディタの表示オプションによくあったので、簡単に出来るのではと思ったのですが。


120 :デフォルトの名無しさん:2007/02/28(水) 00:59:27
> 少し凝ろうとすると急にハードルが高く感じられます。

GUIフレームワークって何でもそうです。あらゆるものを御仕着せで用意するのは無理。
用意された機能を利用して実現できればそれでいいわけで、
これくらいはまだすんなり実現できる範疇に入るでしょうよ。

>>116は要はテキストコントロールをスクロールさせたら行番号表示が一緒に
動かないからずれるってことでしょ? それなら行番号表示の方も一緒に動かせればいい。

ということで次のステップはイベント処理ですね。
テキストコントロールのスクロールが発生したときを捕捉して、そのスクロール
量を知り、行番号表示の方に指定量のスクロールをさせる。

121 :デフォルトの名無しさん:2007/02/28(水) 01:09:23
じゃあちょっと難しく感じるかもな。
基本的には、番号用のウインドウを作る→さもメインのパネルの一部かのように組み込む→
(位置を計算して)番号出す→スクロールイベントを取得→表示のアップデート(スクロール)
って流れかねえ。

>テキストエディタの表示オプションによくあったので
なんかこう、GUIをべたーっとした一枚の絵のように考えていたら
簡単にはできないよw

あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。

122 :114:2007/02/28(水) 03:32:32
>>120,121
アドバイスありがとうございます。イベント処理はいままで扱ったことが
ないので、調べてみます。

>あと、この場合情報としての価値は低いが使用言語も書いたほうがいいよ。
失礼しました。
Windows XP, ActivePerl-5.8 でwxPerlを使っています。
wxPerlは比較的マイナーなようですね。

123 :デフォルトの名無しさん:2007/02/28(水) 06:37:40
C++ならwxScintillaがつかえるが、他の言語ではラッパーか書かないとだめかも?


124 :デフォルトの名無しさん:2007/02/28(水) 13:10:52
117だけど、wxpythonで作ってみた

import wx
import re

class MyApp(wx.PySimpleApp):
def OnInit(self):
Frame = wx.Frame(None, -1, "Text Edit", size=(400,400))
self.Btn = wx.Button(Frame, -1, "Set Number")
self.Btn.Bind(wx.EVT_BUTTON, self.SetNum)
self.TxtBox = wx.TextCtrl(Frame, -1, "One\nTwo\n", style=wx.TE_MULTILINE)
self.SetNum(wx.Event)
MySizer = wx.BoxSizer(wx.VERTICAL)
MySizer.Add(self.Btn, 0, wx.FIXED_MINSIZE | wx.LEFT | wx.RIGHT | wx.TOP, 20)
MySizer.Add(self.TxtBox, 1, wx.EXPAND | wx.ALL, 20)
Frame.SetSizer(MySizer)
Frame.Show(1)
return 1

(つづく)

125 :デフォルトの名無しさん:2007/02/28(水) 13:13:13
def SetNum(self, event):
Text = self.TxtBox.GetValue()
OldLines = Text.split('\n')
NewLines = []
Count = 1
for OldLine in OldLines:
NewLine = re.sub('^([ \d]+: )?', '%4d: ' % Count, OldLine)
NewLines.append(NewLine)
Count += 1
self.TxtBox.SetValue('\n'.join(NewLines))

app = MyApp()
app.MainLoop()

30分くらいで単純に作ったので、細かいツッコミは無しでお願いします。

32 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.02.02 2014/06/23 Mango Mangüé ★
FOX ★ DSO(Dynamic Shared Object)