【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
0472デフォルトの名無しさん
2007/10/18(木) 10:10:480473デフォルトの名無しさん
2007/10/18(木) 10:11:31>「wxFormsで始めるwxWidgetsプログラミング」
こういう答えを希望してるわけ?
0474デフォルトの名無しさん
2007/10/18(木) 21:07:420475デフォルトの名無しさん
2007/10/19(金) 09:08:22”クラスライブラリ+IDE”だお。
これだと差分コードしか表れない。
但し、VC++/MFCは除く。
0476デフォルトの名無しさん
2007/10/20(土) 00:09:580477デフォルトの名無しさん
2007/10/22(月) 08:52:03それって何て手書き?
0478デフォルトの名無しさん
2007/10/22(月) 18:37:55いや、MFCは手書き不可みたいに書いてたから。
手書きMFCなんてやる理由はないとは思うけど。
0479デフォルトの名無しさん
2007/10/27(土) 22:42:12ちょうどrich textのサンプルあったので動かしてみましたが、これって日本語入力できないですね。
どうやらeditor boxみたいなおネイティブのコントロール使ってる場合はOKなんですが
自力で作るコントロールの場合はそのままでは無理っぽいです。
そのあたりハンドルできる方法ってないですか?
今はWinowsでVC使って動かしています。
このあたりクロスプラットフォームで日本語入力も完璧なのって結局Javaなんですかね・・・
なるべくならC/C++でやりたいと思ってます。
wxWidgets以外にもいい候補あったら教えてください。
0480デフォルトの名無しさん
2007/10/28(日) 00:27:43自分で実装するか、IIIMF とか Anthy とか使ってみるかじゃないかな。
0481デフォルトの名無しさん
2007/10/28(日) 01:29:400482デフォルトの名無しさん
2007/10/28(日) 01:35:220483479
2007/10/29(月) 00:04:53wxWidgetsだけではやっぱり無理っぽいですね。
インライン入力の制御は面倒なのでできればありもので済ましたいです。
で思いあたったことにマルチプラットフォームといえばOpenOfficeがありました。
あれのtoolkitってどうなってるんですかね。
SDKあるみたいなのでちょっと調べてみます。
0484デフォルトの名無しさん
2007/10/29(月) 00:10:510485デフォルトの名無しさん
2007/10/29(月) 01:27:04Kirix StrataがMozillaベースに変わってるっぽい。
ttp://www.kirix.com/index.html
wxAUIは今後も開発とあるけど。
0486デフォルトの名無しさん
2007/10/30(火) 23:46:59が遅すぎて使えないんだけど・・・。
なんかないですか?
0487デフォルトの名無しさん
2007/11/01(木) 00:29:32思いつきだがそこはImageMagickに任せてしまうとか。
wxImage <-> ImageMagickのイメージ形式
の変換コストが問題になるほどだとあかんけど。
0488デフォルトの名無しさん
2007/11/01(木) 00:51:48パッと見ただけの実に適当な印象だが。
wxImageはRGB24bitのピクセルデータと、8bitのαチャンネルのデータを
別々に持ってるようだねえ。で、イメージの配列には当然のように
バイト単位でアクセスしている。
ネイティブな形式が例えばAGBRなら、さらにそれをいちいち変換して描画
するんだろうね。
いかにも遅そうだねえ。
0489486
2007/11/01(木) 01:21:15>488
レスありがとうございます。
>486
別プロセスで ImageMagick 起動ってことですよね。
たぶんそっちの方がコスト的には高いかと。
うーん。せめて StretchBlt でリサイズしつつメモリに転送とか
できたらいいのに・・・。
0490デフォルトの名無しさん
2007/11/01(木) 01:29:20ん? ライブラリリンクしちゃえば、という積もりだったんだけど。
っても今確認したらGPLかぁ > ImageMagick
0491デフォルトの名無しさん
2007/11/01(木) 08:04:20ポインタで直接処理した後wxBitmapに変換して使用するしかないかと。
画面がリサイズされたときなど必要に応じて最低限の変換で対応するか、
OpenGLあたりを使うほうがよさそう。
0492デフォルトの名無しさん
2007/11/01(木) 15:56:10>LGPLでは動的な(実行時)リンクに限り、GPL/LGPLに従わないソフトウェアでの利用も許容している。
あれ?
wxWigetsってLGPLだから、静的リンクした場合、ソースを公開しなきゃならないの?
0493デフォルトの名無しさん
2007/11/01(木) 16:49:000494デフォルトの名無しさん
2007/11/01(木) 22:11:221. LGPL にソース公開の義務は無い
2. wxWidget は LGPL の制限を緩める為の追加条項を加えたライセンスを採用している
3. 何か契約をする際は必ず原文に目を通した方が良い
0495486
2007/11/02(金) 01:02:56大変失礼しました。
ImageMagickのライブラリってあるんですね。勉強不足でしたorz
wxIMAGE_QUALITY_NORMALで写真の画像をリスケール
したところ、思ったよりも画像が崩れなかったので、
しばらくはコレを使おうと思います。
32x32とかのアイコンとかを拡大するとダメダメだけど・・・
0496デフォルトの名無しさん
2007/11/04(日) 14:03:59ボタンの配置について質問です。
ダイアログで「OK」ボタンと、「キャンセル」ボタンを横並びで表示したいのですが、
縦に並んでしまいます。
どうしたらよいのでしょうか?
0497デフォルトの名無しさん
2007/11/04(日) 15:11:340498デフォルトの名無しさん
2007/11/04(日) 22:22:30エスパー初心者がいってみよう
wxHORIZONTAL
0499デフォルトの名無しさん
2007/11/04(日) 22:50:39・・・ ・・ ・・ ・ ・・・
ディスプレイを縦にするといいと思うよ。
0500デフォルトの名無しさん
2007/11/05(月) 01:10:470501デフォルトの名無しさん
2007/11/06(火) 01:08:10サンプルを見てもよくわかりません。
ほかにわかりやすいサンプルはありませんか?
サンプル:console.cpp 3238行目
0502デフォルトの名無しさん
2007/11/06(火) 04:34:480503デフォルトの名無しさん
2007/11/09(金) 00:20:09GtkmmとwxWidgetsのどちらを使うか迷っています
既に両方使ったことのあるかたにアドバイスを
頂きたいのですが
0504デフォルトの名無しさん
2007/11/09(金) 00:54:22wxWidgets の方がアプリを使ってて気持ちいい
0505デフォルトの名無しさん
2007/11/09(金) 02:01:39これまで打ち込んだやつがヒストリーとして表示するように
したいんだけどこういうのはなんか用意されているでしょうか?
0506デフォルトの名無しさん
2007/11/09(金) 04:37:15すごく分かりやすい説明です
本当にありがとうございました
とりあえず両方やってみます
wxWidgetsで分からないときは
ここを頼りにしていますので
よろしくお願いします
0507デフォルトの名無しさん
2007/11/09(金) 05:54:31> wxWidgetsで分からないときは
なんたらoverview
リファレンス
本体ソースコード
サンプル
の順かなあ、俺が頼りにしたのは。
0508デフォルトの名無しさん
2007/11/14(水) 03:42:08wxBlog見たらver3.0でつきそうな感じだね。
0509デフォルトの名無しさん
2007/11/14(水) 12:03:091,ゴッドサイザー
2,アステサイザー
3,三ツ矢サイザー
4,グレンサイザー
0510デフォルトの名無しさん
2007/11/14(水) 13:59:57Unicodeがどうのこうのとあるんですが、Unicodeビルドしなくても
デフォルトでUnicodeビルド扱いになるということなんでしょうか?
0511デフォルトの名無しさん
2007/11/14(水) 23:46:59このページ見て設定してみたけどコンパイルできません。
wx/wx.h がNo such file or directoryとなりインクルードできないです。
どうしたらよいのでしょうか?
0512デフォルトの名無しさん
2007/11/14(水) 23:58:010513デフォルトの名無しさん
2007/11/15(木) 00:00:090514デフォルトの名無しさん
2007/11/15(木) 00:25:150515デフォルトの名無しさん
2007/11/15(木) 00:36:15C:\MinGW\includeにはなくて、
C:\msys\1.0\home\Owner\wxMSW-2.8.6\include
にあります。
C:\msys\1.0\home\Owner
にファイルを作りコンパイルしたところできませんでした。
0516デフォルトの名無しさん
2007/11/15(木) 00:48:08`wx-config --cxx` -o hoge.exe hoge.cpp `wx-config --cflags --libs`
みたいにしてコンパイルしれ
0517デフォルトの名無しさん
2007/11/15(木) 01:01:32今までやってた
$g++ -c hello.cpp 'wx-config --cppflags'
ではできないみたいですね。
0518デフォルトの名無しさん
2007/11/15(木) 01:52:510519デフォルトの名無しさん
2007/11/15(木) 03:49:16・今までANSIとUnicodeの二つのビルドがあったのが、一つになる。
・wx内部では全部Unicodeで処理するが、APIはANSIとUnicode両方が用意される。
・ANSIのAPIは逐一Unicodeにエンコードして処理する。
ってところだと思う。
0520デフォルトの名無しさん
2007/11/15(木) 05:35:38それのプログラム見たらわかるけど効率悪い
自分で組んだ方がいいよ
0521デフォルトの名無しさん
2007/11/15(木) 05:37:35wxImageにラップするようだけど
それを待ってもいいかも
0522デフォルトの名無しさん
2007/11/23(金) 00:52:43**********************
* *
* A *
* *
* *
**********************
* B * C *
**********************
以上のようなレイアウトで、
・縦幅が変化した場合はAのみ
・横幅が変化した場合はAとC
それぞれ動かしたいのですが、
いったいどうやってサイザーを設定すればいいのでしょうか?
よろしくお願いします。
0523デフォルトの名無しさん
2007/11/23(金) 01:32:23試してないけどこんなんでどう?
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指定すれば、領域を埋めるようにサイズ変更される。
0524デフォルトの名無しさん
2007/11/23(金) 02:02:10それでできました!
CにEXPANDを指定したら、縦に広がったりしてかなり困っていました。
サイザーってそういうふうになっているんですね。
どうもありがとうございます。
0525デフォルトの名無しさん
2007/12/01(土) 22:18:22> font.GetPointSize();
だと値が表示されている高さよりも明らかに小さくなります。
正確な値を得るにはどうすればいいのでしょうか?
よろしくお願いします。
0526デフォルトの名無しさん
2007/12/01(土) 23:15:350527デフォルトの名無しさん
2007/12/02(日) 00:51:21それなら、ポイントをピクセルに直すにはいったいどうすればいいのでしょうか?
解像度とか関係ありそうなのですが、よく分からないのです。
0528デフォルトの名無しさん
2007/12/02(日) 01:38:57wxDC::GetCharHeight()
がそれっぽいですがベースラインより下の部分も含んでるのかどうかはわかりません
0529デフォルトの名無しさん
2007/12/02(日) 20:09:11それを参考にして書いていたら、wxWindowにも
同じ名前のドンピシャなメソッドがあることが分かりました。
ありがとうございました。
0530デフォルトの名無しさん
2007/12/05(水) 20:34:52切り替えは出来ないものなのでしょうか。サンプルのsplitterに、statbarからの表示/非表示
切り替えコードを追加してみたのですが、初回の非表示(失敗)後に、分割ウィンドウの
サイズが変更不能となってしまいます。
0531530
2007/12/05(水) 21:18:50wxStatusBar* statbar = GetStatusBar();
:
statbar->Hide();
//SetStatusBar(NULL); // <- 親フレームと分割ウィンドウの連動が解除されてしまうのでコメントアウト
SendSizeEvent(); // 非表示部が即時更新されないので追加
:
0532デフォルトの名無しさん
2007/12/13(木) 16:52:55変数ウォッチとは、プログラムのデバッグ時にint型やクラス型で定義された変数の
名前や中身や型を表示するものです。
変数の名前や型だけを表示するならばwxListCtrlでもwxDataViewCtrlでも何を使ってもいいのですが、
メンバをもつ変数を表示させることを考えると、
どうしてもオブジェクトをツリー形式で表示させたくなります。
また、デバッグ中にウォッチする変数を新たに追加したくなった場合にも
簡単に追加できるものがいいのです。
つまるところ、
・できれば名前や型などの欄が作れる
・ツリー形式で表示できる
・新規のアイテムが簡単に追加できる
これらのことができるコントロールを探しています。
個別の条件を満たすものは見つかるのですが、そのすべてを満たすものが見つからず苦心しています。
(ちなみに、VS2005ではwxDataViewCtrl(wxGrid)のアイテム中にwxTreeCtrlのようなものを表示しています)
条件に合うコントロールがあれば教えていただきたいのです。
よろしくお願いします。
0533デフォルトの名無しさん
2007/12/14(金) 18:55:29http://homepage2.nifty.com/bkclass/doc_wxcode.html
0534デフォルトの名無しさん
2007/12/15(土) 01:40:55wxCoreというのは初めて知りました。
サンプルも動かしてみたのですが、これは素晴らしいですね。
どうもありがとうございました。
0535デフォルトの名無しさん
2007/12/16(日) 20:16:12ウィンドウのクライアント領域のサイズを得ることはできますか?
0536デフォルトの名無しさん
2007/12/16(日) 20:20:35ウィンドウのクライアント領域のサイズ
0537デフォルトの名無しさん
2007/12/16(日) 21:21:45すいません。説明が足りませんでした。
クライアント領域からスクロールバーの領域を除くためには
1,スクロールバーが表示されているかを検出する
2,表示されていたら、そのスクロールバーのサイズ分だけクライアント領域から除く
という主順を踏む必要があります。ところが自分にはこの二つともやり方が分かりません。
例えば、スクロールーバーはコントロールの内容によって表示されたり消えたりしますよね。
HasScrollbarメソッドはどうもスクロールバーの非表示を検出してくれないようで、
ウィンドウスタイルによって値が決まってしまいます。
つまり、スクロールバーが表示されているかを正しく知る方法が自分には分かりません。
また、普通のウィンドウクラスにはスクロールバーのサイズを得るメソッドが無い
(多分どこかにはあると思うのですが自分は知らない)
のでスクロールバーのサイズを得ることもできません。
0538デフォルトの名無しさん
2007/12/16(日) 22:22:35void 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.
0539デフォルトの名無しさん
2007/12/16(日) 22:57:22またまたすいません。
対象としているコントロールにはwxTextCtrlやwxTreeCtrlなどの
wxScrolledWindowを継承しないものも含まれています。
0540デフォルトの名無しさん
2007/12/16(日) 23:22:23さすがにエスパーはいないぜ
自分で英語のリファレンス読めよ糞
0541デフォルトの名無しさん
2007/12/17(月) 17:40:00コントロールのリファレンスを読みたいのですが、教えて頂けないでしょうか?
0542541
2007/12/17(月) 17:57:54これがコントロールリファレンスですか。
>Members
ってのがメソッドで、
>Derived from
というのが派生元クラスでしょうか?
イベントも理解できれば完璧ですが、wx-Devがイベントハンドラ作ってくれるから、理解しなくても良いかなぁ?
0543541
2007/12/17(月) 18:33:28でも、WxButton::Enable(bool)が候補に出ないなぁ。コンパイルはトオタケド
0544デフォルトの名無しさん
2007/12/17(月) 18:42:19virtual bool Enable(bool enable = true)
0545デフォルトの名無しさん
2007/12/28(金) 10:15:540546545
2007/12/28(金) 10:18:150547545
2007/12/28(金) 11:18:39仕様ですか?
0548デフォルトの名無しさん
2007/12/28(金) 12:34:30EVT_WINDOW_CREATE
0549デフォルトの名無しさん
2008/01/05(土) 18:48:32wxのサンプルについてくるのでも必ず
(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だかららしいのですが。
0550デフォルトの名無しさん
2008/01/07(月) 02:47:580551549
2008/01/07(月) 03:37:44ありがとうございます。
環境を書き忘れてました、すいません。
当方64bitのGentooでしたのですが、試しに32bitのDebianで試してみたところ
segfaultで落ちることは無いようです。Glib-Object-WARNINGはuimを切ると出なくなりました。
wxGTKのバージョンは2.8.7.1です。
もしかしたら私の環境だけなのかと思い書かせて頂いた次第です。
0552デフォルトの名無しさん
2008/01/07(月) 04:20:210553549
2008/01/08(火) 00:14:53どうやらwxGTKのバグのようでした。どうもありがとうございました。
0554デフォルトの名無しさん
2008/01/10(木) 00:53:45でセルにプルダウンなメニューを出しているのですが、動作がおかしいのです。
Windowsでは期待道理に動くのですが、Linuxだと候補から選択してもセルに
値が入りません。
ttp://d.hatena.ne.jp/Megumi221/20071123
の方も同様にいわれているのですが、どなたか解決された方いらっしゃらない
でしょうか?
Linuxのgtkとかのライブラリ依存なのでしょうか・・・
0555554
2008/01/10(木) 23:50:380556デフォルトの名無しさん
2008/01/11(金) 03:40:29ってそれはえなりだよ
0557デフォルトの名無しさん
2008/01/12(土) 19:53:060558デフォルトの名無しさん
2008/01/20(日) 23:45:50どうしても解決しないので質問させてください。
環境は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' は内部コマンド外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。
というエラーになります。。
どうすればよいのでしょうか??どなたかご教示頂けると幸いです。
0559デフォルトの名無しさん
2008/01/21(月) 03:02:40やってもダメでしょうよ。
0560デフォルトの名無しさん
2008/01/21(月) 11:12:14MSYSを導入して、rxvt上で実行しろ
0561デフォルトの名無しさん
2008/01/21(月) 11:16:12http://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`
の間違いでした。
0562デフォルトの名無しさん
2008/01/21(月) 11:33:27回答ありがとうございます。MSYSは入ってます。
MSYSを導入して、rxvt上で実行 というのは、C:\MSYS\1.0\bin\rxvt.exe を立ち上げて
そこからg++ 〜 でコンパイルしろってことでいいんでしょうか。
家帰ったら試してみます。ありがとうございます。
0563デフォルトの名無しさん
2008/01/21(月) 12:20:12$ wx-config --cflags
とでも打ってみるんだな
どんな効果がでるか一発で分かる
0564デフォルトの名無しさん
2008/01/21(月) 13:05:17操作可能なプログラムまたはバッチファイルとして認識されていません。
というエラーになります。。
0565デフォルトの名無しさん
2008/01/21(月) 13:17:20windows のコマンドラインじゃなくて
ユニックス系の shell でやらなきゃ ...
0566558
2008/01/21(月) 14:00:43564は自分じゃないですよ。
多分あまりにも基本的な部分で間違ってるので他の方に茶化されたのだと・・
でも
> wxWidgets はユニックス系なので、
> windows のコマンドラインじゃなくて
> ユニックス系の shell でやらなきゃ ...
ここらへんわかってなかったのでご指摘いただけてラッキーでした。
ありがとうございます。
シェルの勉強等まだ手をつけておらずほぼ全く分からないもので・・
初心者質問ばかりしてすいません >564さん
>563さん
ありがとうございます。帰ったら試してみます。
0567デフォルトの名無しさん
2008/01/22(火) 00:24:02Windowsでやるよりはるかに簡単だから。ネットの情報もほとんどUNIX系だし。
一旦それでやってればWindowsでもすぐできるようになると思う。
UNIX系の情報を見ながらWindowsで一発でやるには両方の知識が必要。
0568デフォルトの名無しさん
2008/01/22(火) 02:55:34xrcの存在意義を無視してるのは分かるのですが、
ソースは簡潔&実行時にはファイル一つ、にどうしてもしたくて..
0569デフォルトの名無しさん
2008/01/22(火) 05:10:430570デフォルトの名無しさん
2008/01/22(火) 05:32:32xrcのデータを実行ファイルに持たせることなら普通に出来る。ドキュメント読め。
0571デフォルトの名無しさん
2008/01/22(火) 17:11:00ご指摘されたとおり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の方が簡単なのであればそっちでやってみることにします。
ありがとうございました。
0572デフォルトの名無しさん
2008/01/22(火) 17:22:09■ このスレッドは過去ログ倉庫に格納されています