-
- 1
- 2010/04/09(金) 15:12:36
-
クロスプラットフォーム 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/
-
- 421
- 2012/02/24(金) 03:27:42.33
-
no
-
- 422
- 2012/03/17(土) 10:54:20.81
-
>>246
>なんでいつも質問した後は簡単に見つかるんだろう…
安心しろ
それはRubber Duckingと言って有名なテクニックだ
http://www.aoky.net/articles/john_graham_cumming/talking_to_porgy.htm
-
- 423
- 2012/03/18(日) 06:42:47.35
-
wxPythonで使える俺俺モジュールの作り方を教えてくだされ
-
- 424
- 2012/03/23(金) 11:08:49.75
-
サイザーage
-
- 425
- 2012/03/23(金) 11:24:00.67
-
コ
-
- 426
- 2012/04/30(月) 23:02:22.27
-
hoshu
-
- 427
- 2012/05/07(月) 23:39:02.10
-
wxFormBuilderで出力したコードで日本語が文字化けすると思ったら
BOMなしUTF8とVSの問題だった
-
- 428
- 2012/05/19(土) 11:47:34.43
-
Windows, Linux環境で使えるアプリを作っているのだが
Windowsの場合はバイナリを配布すればいい
Linuxの場合はソース互換だからソースを配布するべきなんだよな?
-
- 429
- 428
- 2012/05/19(土) 11:51:05.86
-
あとwx2.9をFedora15 x86_64でビルドしてインストールしたんだが
なぜか実行時にwxCSConvでコケる。同じ症状の方おまへんか〜?
この現象はwx2.8では起きてない。
(gdb) backtrace
#0 0x000000000079c785 in wxCSConv::DoCreate() const ()
#1 0x000000000079d7bd in wxCSConv::wxCSConv(wxFontEncoding) ()
#2 0x000000000079dacd in wxGet_wxConvLocalPtr() ()
#3 0x00007ffff3a79018 in _GLOBAL__sub_I_strconv.cpp () from /usr/local/lib/libwx_baseu-2.9.so.3
#4 0x0000003c4400e2b6 in call_init.part.0 () from /lib64/ld-linux-x86-64.so.2
#5 0x0000003c4400e393 in _dl_init_internal () from /lib64/ld-linux-x86-64.so.2
#6 0x0000003c440016ca in _dl_start_user () from /lib64/ld-linux-x86-64.so.2
#7 0x0000000000000001 in ?? ()
#8 0x00007fffffffe815 in ?? ()
#9 0x0000000000000000 in ?? ()
-
- 430
- 2012/06/13(水) 22:49:56.47
-
EVT_CLOSE に対して Close(True) しても終了出来ません
-
- 431
- 2012/06/25(月) 07:17:22.37
-
http://cametan-001.tumblr.com/post/5864304659/wxpython
-
- 432
- 2012/07/04(水) 17:16:02.11
-
ほす
ttp://www.youtube.com/watch?v=8v52QIP4L9Y
-
- 434
- 2012/07/05(木) 16:30:39.73
-
wxWidgetsでShift_JISからUTF-8変換
ttp://nantonaku-shiawase.hatenablog.com/entry/2012/05/16/031005
wxNotebookとwxAuiNotebookの違い
ttp://nantonaku-shiawase.hatenablog.com/entry/20120211/1328967345
-
- 435
- 2012/07/08(日) 23:42:42.45
-
>>430
EVT_CLOSEのハンドラの処理では終了処理した後event.Skip(false);
Closeを呼ぶとまたハンドラが呼ばれる
-
- 436
- 2012/07/09(月) 07:12:24.08
-
http://wxpython.org/docs/api/wx.CloseEvent-class.html
You should check whether the application is forcing the deletion of the window
using CanVeto(). If it returns False, you must destroy the window using wx.Window.Destroy.
If the return value is True, it is up to you whether you respond by destroying the window or not.
For example you may wish to display a message dialog prompting to save files or to cancel the close.
-
- 437
- 2012/07/13(金) 19:00:38.12
-
ソースに
const char sjis[3] = {0x88, 0xa2, 0x00};
wxString s(sjis, wxCSConv(wxT("CP932")));
cout << s.mb_str(wxConvUTF8) << endl;
という部分があるとリンク時に下のようなエラーになります。
"hoge.sln" (Rebuild target) (1) ->
(hoge:Rebuild target) ->
hoge.obj : error LNK2001: 外部シンボル ""class wxMBConvUTF8 & wxConvUTF8" (
?wxConvUTF8@@3AAVwxMBConvUTF8@@A)" は未解決です。
hoge.obj : error LNK2001: 外部シンボル ""public: static unsigned int const
wxStringBase::npos" (?npos@wxStringBase@@2IB)" は未解決です。
..\hoge.exe : fatal error LNK1120: 外部参照 2 が未解決です。
何が足りないのでしょう?
-
- 438
- 2012/07/13(金) 20:37:03.69
-
ヘッダファイルの読み込みかライブラリのリンクを行ってない
VC++なんて捨ててMinGWでやろうぜ!
MinGW + EclipseCDTで環境用意すればいい
-
- 439
- 2012/07/13(金) 20:49:50.67
-
どのライブラリが足りないのか判らないんで
どのライブラリに含まれているかを教えろ
-
- 440
- 2012/07/13(金) 21:49:44.49
-
>103-
ttp://diary.imou.to/~AoiMoe/2004.09/middle.html#2004.09.13
-
- 441
- 2012/07/14(土) 23:52:18.18
-
c++とwxWidgetsを勉強中です。
わからないことがあるので教えていただけませんか。
void functestFrame::OnButton2Click(wxCommandEvent& event)
{
wxString str1 = L"まっぎょ";
functestFrame::wxStringfunc(&str1);
}
void functestFrame::wxStringfunc(wxString* str)
{ wxMessageBox(*str);}
4-10はコンパイルと実行できました。
void functestFrame::OnButton3Click(wxCommandEvent& event)
{
wxArrayString temp1;
temp1.Add(wxT("ぽけもん"));
functestFrame::wxArrayStringfunc(&temp1);
}
void functestFrame::wxArrayStringfunc(wxArrayString *arraystring)
{
for (int i=0 ; i< *arraystring.GetCount() ; i++)
{*arraystring.Item(i);}
}
コンパイルエラーがでます。
C:\Users\x\Desktop\functest\functestMain.cpp||In member function 'void functestFrame::wxArrayStringfunc(wxArrayString*)':|
C:\Users\x\Desktop\functest\functestMain.cpp|169|error: request for member 'GetCount' in 'arraystring', which is of non-class type 'wxArrayString*'|
C:\Users\x\Desktop\functest\functestMain.cpp|170|error: request for member 'Item' in 'arraystring', which is of non-class type 'wxArrayString*'|
||=== Build finished: 2 errors, 0 warnings (0 minutes, 1 seconds) ===|
wxstringと同じ方法をしているつもりなのですが、どのようにすればコンパイルができるのでしょうか?
-
- 442
- 2012/07/15(日) 11:07:19.04
-
>>441
ちょっとしたコードを書いてみた
http://pastebin.com/KCE8eyDe
コンパイルが通らない原因
wxArrayStringの通常変数とポインタ変数の違いがわかっていない
C++では実体に対しては「.」でアクセス、ポインタ変数に対しては「->」アロー演算子でアクセスする
参考:http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/prog1/13-03.html
× arraystring.GetCount();
○ arraystring->GetCount();
あと関数の入り口で「wxArrayString *arraystring」と宣言されているならば
その関数内部では「*arraystring」ではなく「arraystring」でアクセスする
「*」をつけてしまうと「arraystring」のポインタのポインタになってしまう
void functestFrame::wxArrayStringfunc(wxArrayString *arraystring)
{
for (int i=0 ; i< *arraystring.GetCount() ; i++)
{*arraystring.Item(i);} ← ここもいまいち何をしようとしてるかわからん
}
-
- 443
- 2012/07/15(日) 11:14:03.55
-
あと細かいことを言うと文字列の宣言を以下のようにしているようだが
wxString str1 = L"まっぎょ";
せっかく用意されているので「wxT」マクロを使った方がいい
wxString str1 = wxT("まっぎょ");
これでどのような環境でも日本語が変数に入れられるはず
-
- 444
- 2012/07/15(日) 21:32:47.77
-
>>442
ありがとうございます。
サンプルをコンパイルして、実行できました。
通常変数と、ポインタ変数ですか。
リンク先を読んで理解します。
すみません、あと一点教えてください。
wxStringは、通常変数? wxArrayStringは、ポインタ変数?を利用しているというころでしょうか?
下記マニュアルをどのように調べればよいのでしょうか?
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx368.htm
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx32.htm
-
- 445
- 2012/07/16(月) 05:30:47.00
-
>>444
>wxStringは、通常変数? wxArrayStringは、ポインタ変数?を利用しているというころでしょうか?
C/C++ではクラスや変数の宣言時に実体を宣言するかポインタで宣言するか決められるので
その質問はそもそもちょっとポイントがずれている
【ポインタ】
例えば
wxButton *btn1 = new wxButton(panel, wxID_BUTTON1, wxT("ボタン1"));
はwxButtonクラスをポインタ変数で宣言している
*btn1内のクラスメソッドをいじるには「*btn1->GetLabel();」と書く必要がありますよ、と
普通は大きなクラスはポインタ変数でインスタンスを作って宣言したほうが良い
【実体】
wxString myTestStr;
myTestStr = wxT("テスト文字列");
myTestStr.IsEmpty(); ← 空文字であるかどうか調べてる
>下記マニュアルをどのように調べればよいのでしょうか?
もうお気づきかもしれないが
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx368.htmに載っているのは
wxStringという「クラス」についてのリファレンス
wxString::Hogehoge のように「::」がくっついた後半部分がそのクラスが使用出来るメソッド(関数)
myTestStr.IsEmpty(); ← wxStringのIsEmptyというメソッドをつかっている
自分が欲しい機能をクラスリファレンスで探し、クラスを宣言してどのように使えるかは
メソッド部分を見れば良いということ。
-
- 446
- 2012/07/16(月) 07:23:17.68
-
DLLよりもstaticの方が配布サイズ小さくなるな
-
- 447
- 2012/07/16(月) 10:56:52.47
-
逆でわ?
-
- 448
- 2012/07/16(月) 11:06:12.02
-
DLLリンクで作るともちろんexeは小さくなるけど
DLLも一緒に配布するとなるとでかくなるって意味
-
- 449
- 2012/07/16(月) 11:08:34.14
-
そりゃあんたのプログラムの規模が小さいだけでわ?
-
- 450
- 2012/07/16(月) 11:12:44.68
-
いや先入観無しで聞いてくれ
最初はそう思ってたんだが
確かにDLLリンクで作るとexeはめっちゃ小さい
しかし実際そこそこの規模のプログラム書いて
staticで作ってみて出来たexeが
(前者のexeに必要なDLLを合わせたサイズに比べると)
意外と小さい
-
- 451
- 2012/07/16(月) 11:15:19.52
-
exe だけ配布汁!
-
- 452
- 2012/07/16(月) 11:22:57.42
-
そりゃDLLはwxWidgets全部入りだしな
-
- 453
- 2012/07/16(月) 12:51:54.82
-
規模によるとしか言いようがない
-
- 454
- 2012/07/16(月) 12:57:22.32
-
MFC 最強ですねわかります
-
- 455
- 2012/07/16(月) 13:25:13.34
-
DLLはwxWidgetsのシンボル全部入ってるけど、
staticリンクだと本体が使うシンボルだけ.aから
引っ張ってくるんだから、そうなるのは当たり前
-
- 456
- 2012/07/16(月) 14:12:18.33
-
規模によるとしか言いようがない
-
- 457
- 2012/07/16(月) 14:13:00.02
-
DLL ってなんのためにあるんだっけ?
-
- 458
- 2012/07/16(月) 14:13:47.36
-
ワロタ
-
- 459
- 2012/07/16(月) 14:34:56.55
-
wxWidgetsで作ったexeが一個(あるいは少数)しかないときはそうなるのは当たり前。
DLLのメリットが生きるのはOS等のようにexeが無数にあってさらに共通部分(API)が多い場合。
趣味でやってるならSTATICでいいんじゃね?
-
- 460
- 2012/07/16(月) 14:56:37.82
-
めずらしくwxWidgetsスレが伸びている・・・
-
- 461
- 2012/07/16(月) 15:55:58.62
-
規模によるとしか言いようがない
-
- 462
- 2012/07/16(月) 15:56:38.27
-
2.9.4 出たからな
-
- 463
- 2012/07/16(月) 16:19:03.02
-
2.9.4 はまだ Development だよね。
いつ Stable になるんだよ、まったく。
-
- 464
- 2012/07/16(月) 16:28:29.73
-
馬鹿には無理
-
- 465
- 2012/07/16(月) 17:57:49.06
-
馬鹿には無理さんは帰って、どうぞ
-
- 466
- 437
- 2012/07/16(月) 19:32:54.08
-
事故解決しました。
リンカ設定ではディレクトリで vc_dll の方を指定していたのですが、
PreprocessorDefinitions に WXUSINGDLL が抜けていたため、
static link しようとしてシンボル未解決になっていたようです。
-
- 467
- 2012/07/16(月) 19:53:09.82
-
つttp://wiki.wxwidgets.org/Microsoft_Visual_C%2B%2B_Guide#Project_properties
-
- 468
- 2012/07/16(月) 19:55:20.02
-
そうそう。
それです。
-
- 469
- 2012/07/17(火) 23:59:29.64
-
>>445
レスありがとうございます。
>>その質問はそもそもちょっとポイントがずれている
ポインタ渡し、参照渡しを調べていたのですが、勘違いしていたようです。
int,charなどの型の場合・関数の場合・クラスの場合と大体は似ているようですが、
クラス内の機能を使用するときには、->を使わないとだめなことがなんとなくわかりました。
void functestFrame::OnButton2Click(wxCommandEvent& event)
{
wxString str1 = wxT("まっぎょ");
functestFrame::wxStringfunc(&str1);
}
void functestFrame::wxStringfunc(wxString* str)
{ wxMessageBox(*str);
str -> Last();}
教えてもらったとおりやると、コンパイルと実行ができ、str.Lastとやればコンパイルエラーがでました。
間接参照演算子の*strの使い方で勘違いしていました。
あくまで、データをみるだけで、クラス等のpointer渡しの場合かつその機能を使う
場合は、->を使うんですね。
ありがとうございました。
-
- 470
- 2012/07/18(水) 09:07:55.01
-
全然違うw
C++の初心者用入門本読んで勉強汁
-
- 471
- 2012/07/18(水) 13:24:00.41
-
wxWCharBuffer の使い方が良く判りません。
このページを共有する
おすすめワード