1read 100read
2012年07月プログラム78: 【GUI】wxWidgets(旧wxWindows) その5【サイザー】 (496) TOP カテ一覧 スレ一覧 2ch元 削除依頼
【Java】Wicket【HTML】 (589)
リファクタリングをただのコード修正と思ってる人へ (274)
MFC相談室 mfc22d.dll (304)
C++/TemplateMetaProgramming (493)
★初心者にVisual C++を教えるスレ★ Part38 (665)
C/C++の宿題片付けます 160代目 (615)

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


1 :2010/04/09 〜 最終レス :2012/11/01
クロスプラットフォーム GUI ライブラリの wxWidgets (旧 wxWindows)についてのスレ。
本家
 ttp://www.wxwidgets.org/
wxWindows日本語プロジェクト
 ttp://wxwindowsjp.sourceforge.jp/
Cross-Platform Programming with wxWidgets
 ttp://wxwidgets.info/
Let's wxWidgets
 ttp://dot-gray.s33.xrea.com/
wxWindowsで始めるC++ GUIプログラミング
 ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
 ttp://0xcc.net/pub/uu-2004-08/
前スレ
【GUI】wxWidgets(旧wxWindows) その4【サイザー】
http://pc12.2ch.net/test/read.cgi/tech/1214657360/

2 :
>>1


3 :
早すぎね?

4 :
関連スレ
【RAD統合環境】 Qt 総合スレ 7 【Win/Mac/Linux】
http://pc12.2ch.net/test/read.cgi/tech/1270309416/

5 :
早すぎだろ

6 :
>>1


7 :
このスレッドは天才pンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
                  京都大学霊長類研究所

8 :
━━━━━━━━〓〓〓〓〓〓〓〓 アイちゃんキター 〓〓〓〓〓〓〓〓━━━━━━━━
とりあえず>>1

9 :
>>1

10 :
   ┌─┐
   │●│
   └─┤
   _   ∩
  ( ゚∀゚)彡
┌─┬⊂彡
│●│ R!R!
└─┘      R!R!

11 :
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)

12 :
このRめ

13 :
.Netスタイルのメニュー表示できないの?
http://www.dotup.org/uploda/www.dotup.org798064.gif
左:.Net 右:wx

14 :
>>13
無理なような希ガス。自作するしかないような…(ツールバーならwxAuiでそれらしく見せれるけど)

15 :
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)

16 :
wxPython で作った pnl (=wx.Panel) に書いた画像は取得&保存できた
from wx.lib.colourchooser.canvas import BitmapBuffer
import wx
bb = BitmapBuffer(width, height, wx.Colour(0, 0, 0))
bb.Blit(0, 0, width, height, wx.WindowDC(self.pnl), 0, 0)
bmp = bb.GetBitmap()
bmp.SaveFile(u'できたよ.png', wx.BITMAP_TYPE_PNG)
ちなみに Win32API を使うとこんな感じになるみたい
ttp://www.sm.rim.or.jp/~shishido/wincap.html

17 :
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)

18 :
    ヘ⌒ヽフ
   ( ・ω・) dd
   / ~つと)

19 :
クライアント領域だけ透過させることって出来ないか?

20 :
出来る

21 :
こういう画像表示をwxPythonでやりたいのですけど
Osiva transparent image viewer, Kent Stork
http://www.noping.net/kent/osiva/
画像を、ウインドウ枠無しで、デスクトップにずらずらと表示したいのですが、どこらへんをとっかかりにして始めたらいいのか分かりません。
「このサンプルが役に立つんじゃねえか?」みたいな意見を聞かせてもらえると嬉しいです。
はねまわるウインドウな例
http://python.matrix.jp/projects/wxPython/bounds.html
たぶんこのサンプルが役立ちそうな気はしてるんですが、このサンプルでは1つのframeしか表示してなくて…
複数のframeを表示することなんて、wxWidgetsで可能なんでしょうか?
もし、できないとしたら、frameの代わりに何が使えそうなのでしょうか…?
あるいは、1つの透明なframeの中に、個別にbitmapを表示する感じになるのでしょうか?

22 :
可能

23 :
>>21
サンプルの
  app = wx.App(False)
  frame = MainFrame()
  app.SetTopWindow(frame)
  frame.Show()
のところを
  app = wx.App(False)
  frame = MainFrame(None)
  frame1 = MainFrame(None)
  frame2 = MainFrame(None)
  app.SetTopWindow(frame)
  frame.Show()
  frame1.Show()
  frame2.Show()
と書き換えて実行してみ

24 :
WinMainから始まる既存のC&Win32ソースに
wxを組み込むのはどうすればいいのでしょうか?
SDKメインフォーム+モードレスダイアログ
のダイアログ部分を差し替えるイメージです
以下のソースではOnRunを呼ぶと制御が戻ってきません。
それ用のthreadを作れば何とかなるのですが
もっとシンプルに出来た記憶があったのですが・・・
wxApp* app = new MyApp();
wxApp::SetInstance(app);
int argc=0; wxChar** argv=NULL;
wxEntryStart(argc,argv);
wxTheApp->CallOnInit();
wxTheApp->OnRun();
while(GetMessage(&msg , NULL , 0 , 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
wxTheApp->OnExit();
wxEntryCleanup();

25 :
答えは前スレにて

26 :
>>25
前スレのどこ?アンカおねがい
とりあえずOnRunをコメントアウトしたら上手く動いているようではあるけど
もっときれいにやれてた気がするんだよなぁ

27 :
>>23
ありがとうございます!
やってみたらframeが複数表示できました。
件のサンプルを参考にして勉強したいと思います。

28 :
>>24
wx.netに入ってるwx-c.dllを使う

29 :
wxWidetsをlinuxでコンパイルしてdemoやsamplesが正常に動くことを確認.
しかし
そのlinuxにOSXからssh-Xとかssh -Yとかで接続して,
sapmeles/openglのcubeとかisosurfとかpenguinを実行すると
ウインドウは出てくるけどopenglの描画がされないんだけど仕様なの?
ssh越しでもdemo(lifeとか)やopenglを使わないsamplesは普通に動くんだけど.

30 :
WindowsのwxWidgetsってウィンドウの状態おかしくなってHideやShowが効かなくなったりIsShownOnScreenが変な値返してると思ってたら
他プロセスからのShowWindow、SendMessage、PostMessageとかメッセージ全部拾わずそのままDefWindowProcに渡してイベント上げてこない
そのくせ、自分自身でウィンドウの表示状態管理してるから不整合起きまくり
HWND取得してWin32APIで状態確認してWin32APIで処理しなきゃダメだ
自プロセスが出した命令のイベントしか上げてこないならEVT_SHOWなんていらないだろ

31 :
>>29
オーバーレイをお古
かくかくのろのろだけど

32 :
>>31
駄目.なんにも変わらない.

33 :
gtkより歴史が古いことに驚愕

34 :
gtkは糞

35 :
>>34
頑張って置き換えてくれ

36 :
gtkしかよう知らん.あれは糞なのか?
qtとwxだとどっちが糞なんだ

37 :
ライセンス的には一部デフォルト設定から機能オフしないといけないけどwxが自由度高い

38 :
>>37
その辺の話ってどこかにまとまってたりしますか?

39 :
http://bf109.seesaa.net/article/9267915.html

40 :
スレ2にまとめがあったけど
GPL - コピペしてもリンクしても感染
LGPL - 動的リンクすれば影響しないが、静的リンクやコピペでは感染
wx - バイナリになっていれば煮ても焼いてもいい。コピペでは相変わらず感染
ということでいいのかな。
>>37は知らないがどういうこと?

41 :
>>40
wxが余計に解らない
LGPLをゆるくしたものじゃね?

42 :
567 デフォルトの名無しさん [sage] 2009/10/17(土) 02:23:53 ID: Be:
    http://www.wxwidgets.org/about/newlicen.htm
    The wxWindows Licence is essentially the L-GPL (Library General Public Licence)
    wxWindows ライセンスは 本質的にはLGPL
    QtがLGPLになって企業サポートがついたいま
    wxWindowsに利点があるのだろうか?

43 :
wxそのものに手を加える場合はLGPL。
単に自分のアプリを作るためのライブラリとして考える場合はバイナリで
自由に使える。ソースコードつけなくてもリンクしようが配布しようが自由。

44 :
はじめまして。
wxWidgets(wxWindows)日本語ドキュメントプロジェクトの方々に連絡を取った所
既に更新停止しているとの事なので、プロジェクトを移管して頂きSourceForge.netで
新たにプロジェクトを作りました。これからv 2.8 の翻訳を完成に向けて開始したい
と思っています。
https://sourceforge.net/projects/wxwidgetsjpdoc/
翻訳作業の出来る方募集中です。どうぞご参加ください。

45 :
そうなのかー、乙です。
wxはポータブルなんで、日本でももうすこし広がるといいですね。

46 :
wxErlang って組み込みになったのか。
http://www.erlang.org/doc/apps/wx/
Erlang/OTP R13A (2009-04-03) から、公式配布物に含む。 (最新はR14A)

47 :
Rubyスレで聞いたけど判る人がいないっぽいのでこちらに・・・
wxRuby 0.6.0betaを使ったアプリをwxruby.so同梱で配布する場合に適用されるライセンスは
どのようになりますか?
バイナリファイルでの配布なら?任意のライセンスを適用出来るみたいですが
インタプリタ系の言語でバイナリファイルでの配布とか言われても難しいですし・・・
(exerbで配布したとしてもexeファイルの実態はインタプリター+ソースコードだし)
よろしくお願いします

48 :
orz = 3

49 :
そういうのわ御社の法務部で聞いてください

50 :
すみません、誰か教えてください。
wxFormBuilderで作成されたForm内のm_textCtrlXXへの参照・代入ってどうやればいいんですか?
環境はVC++です。

51 :
内容を読み書きしたいってことかな
ttp://docs.wxwidgets.org/stable/wx_wxtextctrl.html
GetValue、GetLineText
SetValue、AppendText
この辺りだろう、ってか公式のリファレンスに網羅されてるからすぐ見たほうがいいよ

52 :
お返事ありがとうございます。
wxFormBuilderで作成されたクラスがMyFrame1として、
MyFrame1::m_textCtrl28->SetValue(s);
とかやってみたけど、ビルドが通ってくれないのです。
(申し訳ございません、C++よくわかってない人です)
wxFormBuilderの場合、ここみたいに
http://wiki.wxformbuilder.org/Tutorials/UsingSubclass
サブクラス化してアクセスするのが正解なのでしょうか。
試してみたけど、なんか上手くいかないんです。

53 :
いちおう追記しておきますが、wxFormBuilderベースでプログラム作って、ボタンを押して反応するところまでは成功しまています(一日かかりましたが)。
文字列操作しようとしたらまたハマってしまって困っているのです。

54 :
インスタンス化されたMyFrame1からアクセスしないと駄目です
MyFrame1 frame;
frame->m_textCtrl28->SetValue(wxT("moji"));
この場合外側からのアクセスなのでm_textCtrl28のpermissionはpublicになってないといけない
クラスの扱いはC++の基本なのでまずそちらから勉強した方がライブラリの理解も早くなります

55 :
ごめん3行目ミスw
frame.m_textCtrl28->SetValue(wxT("moji"));

56 :
おおお!
MyFrame1 frame;
としてみたところ、
frame.
の入力で
frame.m_textCtrl28->SetValue
までVCの補完が効くようになりました!
いけるかなと思ったのですが、ビルドしてみると
「'MyFrame1' : クラス、構造体、共用体に既定のコンストラクタがありません。」
のエラーになってしまいます。
なにはともあれ真理に近づきつつあるようです。ありがとうございます。
C++の勉強します。

57 :
MyFrame1 frame;
frame = new MyFrame1(NULL);
frame->m_textCtrl28->SetValue(wxT("moji"));
じゃだめ?

58 :
>>57
ありがとうございます。
やはり
「'MyFrame1' : クラス、構造体、共用体に既定のコンストラクタがありません。」
になってしまいます。
コードが継ぎ足し実験しまくりなのが不安なので、シンプルなコードで最初か
らやり直してみようと思います。

59 :
MyFrame1 *frame = new MyFrame1(NULL);
じゃない?newを受けるのはポインタ
というかもう少しC の勉強してからのほうがいいと思ふぞ

60 :
>>59
ありがとうございます。
まだ継ぎ足し実験コードのままなのですが、試してみました。
MyFrame1 *frame = new MyFrame1(NULL);
frame->m_textCtrl28->SetValue(wxT("moji"));
としてみたところ、
「protected メンバ (クラス 'MyFrame1' で宣言されている) にアクセスできません。」
というエラーが。
m_textCtrl28をprotectedメンバで宣言しているのはwxFormBuilderが吐き出し
たコードで、これはwxFormBuilderとしては「編集しちゃアカん」そうなので
すが、m_textCtrl28をpublicメンバで宣言するように直したところ、ビルドが
通りました。でもSetValue(wxT("moji"))の効果はありませんでした。
うーん、勉強します。シンプルなコードでも試してみます。

61 :
日記

62 :
君にとっては新たな発見なのかも知れないが
ここ見てるひとは当たり前過ぎてただのノイズ
wx やりたいのは解るがしばらく我慢して
もう少し C++ の勉強してから改めて取り組んだ方が良い

63 :
C++のクラスの複雑さは異常

64 :
Windows XP上のmingw+msys(最新安定板)でmakeしたのですが、ld: final link failed memory exhausted エラーでリンクに失敗します。wxMSW(安定板)とwxWidgets-2010-06-30
物理メモリーは2G近くの空き、システムドライブも20G近く空いています。
ネットでエラーを調べてLDFLAGSに-Wl,--no-keep-memoryを追加してみましたが同じ所でエラーになりました。
誰かタスケテorz

65 :
無視してもう一回make

66 :
>>65
既に3回くらいやりましたが駄目でしたorz

67 :
3回とも同じ結果?
同じ場所で止まる?

68 :
>>67
wxmsw291u_core_gcc_custom.dllを作成中にエラーになるのは同じで、その中でcould not read symbols: Memory exhaustedが起こる、読み込み中のオブジェクトファイルは違う事があるようです。

69 :
cleanしちゃだめだぞ

70 :
ビルドごとにディレクトリ作ったか?configureは試したか?

71 :
色々と調べたので中間?報告
ttp://comments.gmane.org/gmane.comp.gnu.mingw.devel/3728
多分、同じ現象が報告されていてgcc4.5では起きて4.4では起きないようです。
但しPF使用量を調べると、Win上のメモリ上限の遥か手前で落ちていました。
msysのデフォルトのulimitの仮想メモリの上限が約2GBでこれに抵触したようです。
現在msys上でrootを取得してulimitを変更する方法を検索中です。
・・・msysはsuが壊れてるとかイミフ(ry
>>69
cleanはconfigureの--enable-debugフラグを変更した時にしかしていません。
その他はLDFLAGSのみを変更してmakeを試しました。
>>70
ディレクトリは変更していません。configureをやり直した場合はcleanで対応しました。
wxWidgetsではなくてmsys固有の問題の可能性があります。
その場合にはmingw相談室で質問後結果報告させて頂きますね。<その方が良いですよね?自信がないです・・・。

72 :
なんかサイザーの処理が最適化されていないのか、複雑なレイアウトを組むと
再描画に凄く時間が掛かる。
何か回避策や対策などがあるようならば教えてください。

73 :
wxを窓から捨てる

74 :
RADツール使ってサイザーやスペーサーを極力使わない構造を見つける

75 :
リサイズしないウィンドウにしても、再描画時にサイザーの計算を
しているっぽいので、そこをもう計算させないっていう様な設定が
出来たらしたいのです。
結局、複雑にサイザー使ってボタンとかびっちり詰め込むと
サイザーの計算が重くなるのは仕方ないなとも思うので、
固定さえ出来れば問題なくなるはずです。

76 :
各コントロールごとに座標を想定してたりしないか?そういう使い方するもんじゃない
ボックス系のサイザーとグリッド系のサイザーを適切に使えば綺麗にまとまるし
さほど重くもならないと思うんだけど

77 :
あとコントロール、サイザー共にExpandとStretch(proportion)はちゃんと個別に見直すべき
そのあとでBorder、埋めきれないとこはSpacer

78 :
wxFormBuilder 3.1
Python対応
C++で日本語でもANSIで吐けるようになってるのを確認

79 :
>>76
ちょっと見直してみたら、ボックスサイザーを入れ子にしてる所があるな。
そういうのは、グリッド系にすべきって事かな。

80 :
サイザーごときで重くなるって
100個とか1000個単位で
びっしり詰めてるのか?

81 :
とりあえず、コントロールは100個近く詰まってはいる。
動作が重いというか、ウィンドウを(最小化などから)表示した時に
普通はパッというぐらいの速度で表示されるけど、それがパラパラっと
コントロールが配置されるのが見えるって感じ。

82 :
>>78
wxFormBuilderって物凄く安定しているのがスゲーと思った。
こういうのって不安定なものが多いから感心した。
ちなみに、Windows版。

83 :
以前に作ったコントロール90くらいのダイアログ見つけたからwxFormBuilder通して見てみたけど
C2D E6600でもこの程度では特に重いとは感じない、というか変化がない
SS見せてくれたら試しに組んでみてもいいよ

84 :
透過GIFを背景画像の上にぺたぺた貼り付けたいんだけど、透過GIFを入れたwxStaticBitmap
を配置するだけだと背景色で透過部分がfillされます。styleをTRANSPARENTにしても効かない。
ウィンドウのDCを取得して、wxDC::DrawBitmapで地道に描かないとだめですかね?

85 :
styleをTRANSPARENT
SetMaskColour

86 :
wxTextCtrlでカーソル位置にテキストを挿入するのってどうやるのが楽?
GetInsertionPointの前後で分割して、入れたい値を合成して
再挿入、ってやったけど
どうも改行があると値がずれるようなんで困ってて。

87 :
自己解決。Replace使えば良かったのか。
スレ汚しすまんかった。

88 :
>>86-87
普通にWriteTextで
キャレット位置に挿入(選択状態なら置換)出来るのでは?

89 :
>>88
……その通りでした。
ちゃんと隅々までドキュメント読むべきでした。
遅くなったけどどうもありがとう。


90 :
>>83
その後、同一マシン上のVMwareでWindows2000とWindows7を実行して試してみたら、
Windows7上では同じ遅さだったけど、Windows2000ではめっちゃ速かったから
少なくともサイザーが遅いって事はなさそう。
ただ、VS2010上でビルド出来ないし、新しいプラットフォームの追従はあまり
早くないね。3.0が出てくれれば解決するのかな。

91 :
>>90
単にスワップ起こしてるだけじゃねーの?
2GB程割り振って検証してみたら?

92 :
>>90
VS2010のx64でビルドして使ってるけど、特においらの範囲では問題ないな。
VC6プロジェクトがVS2010で変換できないってことなら、VC2005か、VC2008で変換してからVS10で開けば通るよ。
2.9.xならVC8,VC9用のプロジェクトもある。

93 :
>>92
> VS2010のx64でビルドして使ってるけど、特においらの範囲では問題ないな。
再描画の時に「パッ」じゃなくて「パラ」って感じなんで、まぁ問題っていうほど
じゃないんだけどね。
> VC6プロジェクトがVS2010で変換できないってことなら、VC2005か、VC2008で変換してからVS10で開けば通るよ。
なるほど、その手があるのか。ありがとう。

94 :
wxURLのProxy処理にバグがある・・・?
GETしたいURL: http://www.google.com/
使うProxy: localhost:8080
このとき、Proxyへリクエストヘッダを見てみると
GET http://www.google.com/ HTTP/1.0
Host: localhost
になってて、Proxyがlocalhostの/を取りに行こうとする。
RFCをちゃんと読んでないのでこれも正しいのかもしれないけど、
一般的なブラウザだと
GET http://www.google.com/ HTTP/1.0
Host: www.google.com
になってる。
送信先がhttpならHostをwww.google.comに書き換えないといけない
(実際そうしてみたら手元の環境では動く)と思うんだが、俺間違ってる?
一応最新のソースをTrunkから落としてきてるけど、こんな単純なところでミス
してたらテスト通らないだろうし…
俺が何かくだらないミスしてる気がしてならないので、誰かツッコミ入れて下さい。

95 :
>送信先がhttpならHostをwww.google.comに書き換えないといけないと思うんだが、俺間違ってる?
あってる

96 :
wxURL_NOHOST

97 :
これかな
http://yomi.mobi/read.cgi/pc8/pc8_tech_1097524712/515-

98 :
wxRIchTextCtrlの日本語インライン入力パッチありませんか?

99 :
おや規制明けてる。
>>98
もう解決してる気がするけど、OS毎で処理系が全く異なる上、
日本と中国と韓国くらいしか影響がないのでそんな便利なパッチはたぶん無い。
RichTextはわからんが、Win上のwxStyledTextCtrlと同じなら、
MSWWindowProcをオーバーライドして、
WM_IME_STARTCOMPOSITION、WM_IME_COMPOSITIONあたりを捕捉、
Caretの位置から自分で逐次IMEの位置情報を変更してやればいいと思う。
しかし上でwxURLの話もされてるけど、HTTP通信周りの処理、
結構ボロボロだなコレ。
そういう用途で使ってるユーザがほとんどいないんだろうが・・・。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
monazilla Part 6 (631)
Java低速GUI Swing & JavaFX 10 (376)
NetBeans Part6 (869)
Google Maps API 質問箱 (323)
「コンパイラ・スクリプトエンジン」相談室15 (595)
Borland C++ Compiler オ ワ タ (313)
--log9.info------------------
ささみさん@がんばらない アニメ化決定 (649)
【値打ち】スマイルプリキュア アンチスレ【0円】 (438)
ジュエルペット サンシャイン (806)
生徒会役員共 2本目 (487)
こえでおしごと!アニメ化 (239)
ロッテのおもちゃ (853)
緋弾のアリア 4 (699)
ましろ色シンフォニー -Love is pure white- (478)
STAR DRIVER 輝きのタクト 4 (345)
パパのいうことを聞きなさい! (654)
日常 アニメ化決定!3 (359)
この中に1人、妹がいる! (210)
俺たちに翼はないアニメ化決定 (641)
新テニスの王子様 (490)
Dororonえん魔くんメ〜ラめら! (402)
緋色の欠片(ヒイロノカケラ) アニメ化 (562)
--log55.com------------------
フジテレビのメジャー優先報道
親会社の税制優遇をやめさせろ
外国人枠を撤廃すべき!!野球の普及のためにも!
玉蹴り不祥事スレ
野球豚はなんで毎年金で揉めるの?
野球なんか見てるのは年寄りばっかという悲しい現実
【WBC】日本人だけが必死になってる・・orz
なぜ野球が絡むと視聴率が下がるのか?