-
- 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/
-
- 272
- 2011/11/08(火) 20:52:59.24
-
サンプルにある"dialogs"が参考になるんじゃないかな、
"File operations->Open files"というのがある。
-
- 273
- 2011/11/08(火) 21:01:42.80
-
>>271
レスありです。全コードではありません。
改行などを削除しています。
wxSmithで作成していますので、どのようなソースが必要になりますか?
プロジェクトフォルダを見ると、bin/obj/wx_pch.h.gch/wxsmithフォルダと
filename.cbp/filename.depend/filename.layout/filenameApp.cpp/filenameApp.h/filenameMain.cpp/filenameMain.h/resource.rc/wx_pch.hファイルがあります。
filenameMain.cppの内容は以下のとおりです。
/***************************************************************
* Name: filenameMain.cpp
* Purpose: Code for Application Frame
* Author: ()
* Created: 2011-11-08
* Copyright: ()
* License:
**************************************************************/
#include "wx_pch.h"
#include "filenameMain.h"
#include <wx/msgdlg.h>
//(*InternalHeaders(filenameFrame)
#include <wx/intl.h>
#include <wx/string.h>
//*)
//helper functions
enum wxbuildinfoformat {
short_f, long_f };
wxString wxbuildinfo(wxbuildinfoformat format)
-
- 274
- 2011/11/08(火) 21:03:08.95
-
{
wxString wxbuild(wxVERSION_STRING);
if (format == long_f )
{
#if defined(__WXMSW__)
wxbuild << _T("-Windows");
#elif defined(__UNIX__)
wxbuild << _T("-Linux");
#endif
#if wxUSE_UNICODE
wxbuild << _T("-Unicode build");
#else
wxbuild << _T("-ANSI build");
#endif // wxUSE_UNICODE
}
return wxbuild;
}
//(*IdInit(filenameFrame)
const long filenameFrame::ID_BUTTON1 = wxNewId();
const long filenameFrame::ID_TEXTCTRL1 = wxNewId();
const long filenameFrame::ID_BUTTON2 = wxNewId();
const long filenameFrame::ID_TEXTCTRL2 = wxNewId();
const long filenameFrame::ID_BUTTON3 = wxNewId();
const long filenameFrame::ID_TEXTCTRL3 = wxNewId();
const long filenameFrame::ID_BUTTON4 = wxNewId();
const long filenameFrame::ID_TEXTCTRL4 = wxNewId();
const long filenameFrame::ID_PANEL1 = wxNewId();
//*)
-
- 275
- 2011/11/08(火) 21:04:37.12
-
BEGIN_EVENT_TABLE(filenameFrame,wxFrame)
//(*EventTable(filenameFrame)
//*)
END_EVENT_TABLE()
filenameFrame::filenameFrame(wxWindow* parent,wxWindowID id)
{
//(*Initialize(filenameFrame)
wxFlexGridSizer* FlexGridSizer1;
Create(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY"));
FlexGridSizer1 = new wxFlexGridSizer(0, 3, 0, 0);
Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxSize(560,106), wxTAB_TRAVERSAL, _T("ID_PANEL1"));
Button1 = new wxButton(Panel1, ID_BUTTON1, _("Label"), wxPoint(8,24), wxSize(72,24), 0, wxDefaultValidator, _T("ID_BUTTON1"));
TextCtrl1 = new wxTextCtrl(Panel1, ID_TEXTCTRL1, _("Text"), wxPoint(104,24), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL1"));
Button2 = new wxButton(Panel1, ID_BUTTON2, _("Label"), wxPoint(8,48), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON2"));
TextCtrl2 = new wxTextCtrl(Panel1, ID_TEXTCTRL2, _("Text"), wxPoint(104,48), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL2"));
Button3 = new wxButton(Panel1, ID_BUTTON3, _("Label"), wxPoint(8,72), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON3"));
TextCtrl3 = new wxTextCtrl(Panel1, ID_TEXTCTRL3, _("Text"), wxPoint(104,72), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL3"));
Button4 = new wxButton(Panel1, ID_BUTTON4, _("Label"), wxPoint(8,96), wxDefaultSize, 0, wxDefaultValidator, _T("ID_BUTTON4"));
-
- 276
- 2011/11/08(火) 21:05:18.62
-
TextCtrl4 = new wxTextCtrl(Panel1, ID_TEXTCTRL4, _("Text"), wxPoint(104,96), wxSize(456,22), 0, wxDefaultValidator, _T("ID_TEXTCTRL4"));
FlexGridSizer1->Add(Panel1, 1, wxALL|wxEXPAND|wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 0);
SetSizer(FlexGridSizer1);
FlexGridSizer1->Fit(this);
FlexGridSizer1->SetSizeHints(this);
Connect(ID_BUTTON1,wxEVT_COMMAND_BUTTON_CLICKED,(wxObjectEventFunction)&filenameFrame::OnButton1Click);
//*)
}
filenameFrame::~filenameFrame()
{
//(*Destroy(filenameFrame)
//*)
}
void filenameFrame::OnQuit(wxCommandEvent& event)
{
Close();
}
-
- 277
- 2011/11/08(火) 21:06:07.61
-
void filenameFrame::OnAbout(wxCommandEvent& event)
{
wxString msg = wxbuildinfo(long_f);
wxMessageBox(msg, _("Welcome to..."));
}
void filenameFrame::OnButton1Click(wxCommandEvent& event)
{
wxString CurrentDocPath;
wxString Filename;
wxArrayString Filenames;
wxString GetDirectory;
wxFileDialog* OpenDialog = new wxFileDialog(
this,wxEmptyString,wxEmptyString,wxEmptyString,wxEmptyString,wxFD_MULTIPLE,wxDefaultPosition);
if (OpenDialog->ShowModal() == wxID_OK)
{
CurrentDocPath = OpenDialog->GetPath();
Filename << OpenDialog->GetFilename();
GetDirectory << OpenDialog->GetDirectory();
//Filenames << OpenDialog->GetFilenames[0];
TextCtrl1->SetLabel(CurrentDocPath);
TextCtrl2->SetLabel(Filename);
TextCtrl3->SetLabel(GetDirectory);
//TextCtrl4->SetLabel(Filenames);
}
OpenDialog->Destroy();
}
-
- 278
- 2011/11/08(火) 21:58:12.30
-
連続投稿規制 5回でなるんですねが・・・
こんな感じです。
配列・ポインタなど、マニュアルを目を通したのですが、完全に理解していません。
とりあえず色々さわりながら理解していこうかと考えています。
>>272
ありがとうです。
sampleフォルダの中のですね。
当初この中を探したのですが、wxSmithでのプロジェクトがなかったのであきらめていました。
dialogs.cppの790行目からそれらしい記載があったので参考にしてみます。
ありがとうでした。
-
- 279
- 2011/11/08(火) 22:45:02.83
-
迷惑な香具師だな
-
- 280
- 2011/11/09(水) 07:33:07.56
-
>>278
長いときはcodepadとかideone使おうぜ・・
-
- 281
- 2011/11/09(水) 08:19:10.74
-
会社から帰ったら考えてみるわ>>278
-
- 282
- 2011/11/09(水) 14:01:41.90
-
>>280
そのような場所があるとは知りませんでした。
次からそうします。
スレ汚しすみませんでした。
あと、/sample/dialogs/dialogs.cppの該当部分を、コピペしただけで複数ファイルの選択と、表示ができました。
意味を調べながら理解していきます。
ありがとうでした。
-
- 283
- 2011/11/09(水) 17:58:05.53
-
中学生か
まあがんがれや
-
- 284
- 2011/11/22(火) 02:03:10.37
-
ubuntuでwxWidgetsの勉強中なのですが、samplesフォルダ内のサンプルソース(c++)をいくつか実行してみようと思い、付属のmakefile.cpp及びmakefile.unxをmakeコマンドで実行しようとするとコンパイルに失敗します。
端末より
g++ -c foo.cpp `wx-config --cppflags`
という形でコンパイルしてみてもエラーが出ます。
コンパイルに失敗したサンプルソースはlistbox.cppとlisttest.cppです。
なにかコンパイル時に指定しなければいけないファイルなどがあるのでしょうか?
どなたか教えてください
-
- 285
- 2011/11/22(火) 07:25:11.04
-
wxをビルドしてインストした?
-
- 286
- 2011/11/22(火) 12:20:24.62
-
>>284
エラーメッセージ貼ってよね!
-
- 287
- 284
- 2011/11/22(火) 16:11:40.78
-
>>285
早速の返信ありがとうございます。
僕が変な勘違いをしてない限りwxはインストール済みだと思います。
>>1のリンクにある
wxWindowsで始めるC++ GUIプログラミング
ttp://www.h3.dion.ne.jp/~k5_n/wxwin/
wxWidgets でクロスプラットフォーム GUIアプリを作ろう
ttp://0xcc.net/pub/uu-2004-08/
に書かれている簡単なソースや、自分で作った幾つかのソースは動きますので。
>>286
返信ありがとうございます。
今すぐにエラーを貼るのは難しいので、数時間後にまた貼らせて頂きます。
-
- 288
- 284
- 2011/11/22(火) 21:45:18.75
-
listtestでは、makefile.unxと手打ちのコンパイルでは同じエラーが出ました。
makefile.gccはmakeコマンド自体が失敗していたようなので、環境の違いが原因だと思います。
以下、listtestのmakefile.unxに対するエラーの一部(エラーが167行もあるため省略します。)です。
In file included from listtest.cpp:48:0:
listtest.h:29:34: エラー: ISO C++ では型の無い ‘wxDECLARE_NO_COPY_CLASS’ の宣言を禁止しています [-fpermissive]
listtest.h:96:39: エラー: ISO C++ では型の無い ‘wxDECLARE_NO_COPY_CLASS’ の宣言を禁止しています [-fpermissive]
listtest.h:189:36: エラー: ISO C++ では型の無い ‘wxDECLARE_NO_COPY_CLASS’ の宣言を禁止しています [-fpermissive]
listtest.cpp:73:19: エラー: ‘wxIntPtr’ was not declared in this scope
listtest.cpp:73:35: エラー: ‘wxIntPtr’ was not declared in this scope
listtest.cpp:73:51: エラー: ‘wxIntPtr’ was not declared in this scope
listtest.cpp:73:78: エラー: expression list treated as compound expression in initializer [-fpermissive]
listtest.cpp:74:1: エラー: expected ‘,’ or ‘;’ before ‘{’ token
listtest.cpp: コンストラクタ ‘MyFrame::MyFrame(const wxChar*)’ 内:
listtest.cpp:194:50: エラー: オーバーロードされた ‘wxIcon(const char* const [37])’ の呼び出しは曖昧です
listtest.cpp:194:50: 備考: 候補:
/usr/include/wx-2.8/wx/generic/icon.h:35:5: 備考: wxIcon::wxIcon(const wxString&, wxBitmapType, int, int) <near match>
/usr/include/wx-2.8/wx/generic/icon.h:35:5: 備考: 第 1 引数を ‘const char* const [37]’ から ‘const wxString&’ へ変換する方法が不明です
/usr/include/wx-2.8/wx/generic/icon.h:31:5: 備考: wxIcon::wxIcon(char**, int, int) <near match>
/usr/include/wx-2.8/wx/generic/icon.h:31:5: 備考: 第 1 引数を ‘const char* const [37]’ から ‘char**’ へ変換する方法が不明です
/usr/include/wx-2.8/wx/generic/icon.h:30:5: 備考: wxIcon::wxIcon(const char**, int, int) <near match>
-
- 289
- 2011/11/22(火) 22:33:02.64
-
サンプルはどこから持ってきたやつなの?
インストールしてるwxWidgetsとサンプルのバージョンは同じ?
そもそもインストールはどうやってしたの?
パッケージから入れたの? それともソースからビルドしたの?
とまあ、気になる点はいろいろですが、
とりあえずパッケージからwxWidgetsの開発環境をインストールして、
同じバージョンのサンプルをコンパイルするのは、
最初に書かれてる方法で普通にできます。
ソースからビルドすれば付属してるサンプルも一緒にコンパイルしてくれるはずです。
-
- 290
- 2011/11/23(水) 00:13:32.17
-
>>288
そのエラーメッセージは最初の方は含まれてる?
wxのincludeが読み込めてないように思える。includeのエラーが最初にないかい?
-
- 291
- 2011/11/23(水) 03:07:47.66
-
>>288
makefile.gccはMinGW用のMakefileじゃなかったっけ?
make -f <対象のMakefile> でだいたい行けるはず
-
- 292
- 2011/11/23(水) 03:19:45.38
-
そもそもLinuxでwxWidgetsやろうと思ったら
?wxWidgetsのソースダウンロード
?./configure <- 自分が欲しいオプション ->
?make && make install
?samplesフォルダにあるソースコードを「make」コマンドでコンパイル
で終わるはずなんだがなあ
-
- 293
- 2011/11/23(水) 07:52:23.63
-
MinGWでwxWidgetsやろうとしたら面倒すぎて死んだ
-
- 294
- 2011/11/23(水) 15:36:30.36
-
>>293
大丈夫、慣れたらできる(マゾ)
-
- 295
- 2011/11/23(水) 15:48:53.79
-
>>284
しかもよく見たらコマンド間違えてるな
× g++ -c foo.cpp `wx-config --cppflags`
○ g++ -c foo.cpp `wx-config --libs` `wx-config --cxxflags` -o foo
ライブラリにリンクしてないから実行ファイルができてない可能性が
-
- 296
- 2011/11/23(水) 21:59:05.34
-
>>293
wxDev-C++
http://wxdsgn.sourceforge.net/
みたいなのもあるから暇なときに試してみたら?
VC++でやるよりは楽かも…、しれません。
-
- 297
- 2011/11/24(木) 00:18:52.26
-
devC++は好きで昔から結構使ってるけど
やっぱvc版インストしてvcの統合環境でやったほうがデバッグは楽だよ
使うまではdevCのパッケ導入が楽かも知れんけどw
(最近はc#が色々楽すぎるんでwx自体全然使って無いけど・・・)
-
- 298
- 2011/11/24(木) 06:38:20.30
-
VC++2008EnterpriseEditionでやったらめちゃくちゃ簡単だった
-
- 299
- 2011/11/24(木) 14:16:50.31
-
hosyu
-
- 300
- 284
- 2011/11/28(月) 13:24:44.41
-
レスの間が開いてすみません。みなさん色々とアドバイスありがとうございます。
>>289
よくわからないうちからいろいろなサイトをまわって色々試してたせいで若干記憶が曖昧で申し訳ないのですが、インストールは確かパッケージから入れたと思います。
サンプルのバージョンが2.9.2なのですが、コンパイルエラーを見る限り、2.8のライブラリを読んでいるみたいなので、安定版と最新版を両方入れてたみたいです。
改めて2.8.12を公式から落としてきて、そのサンプルでコンパイルしてみたらうまくいきましたので、ご指摘の通りサンプルとwxWidgetsのバージョンが違ったみたいです。ありがとうございました。
>>290
エラーメッセージは先頭の部分でした。ありがとうございました。
>>291
そうみたいですね。makefile.unxでうまくいきました。ありがとうございました。
>>295
今まで下記サイトを参考に
http://0xcc.net/pub/uu-2004-08/
% g++ -c hello.cpp `wx-config --cppflags`
% g++ -o hello hello.o `wx-config --libs`
というようにコンパイルしてたんですけど良くなかったでしょうか。
-
- 301
- 2011/11/28(月) 19:19:16.59
-
>>300
> 今まで下記サイトを参考に
> http://0xcc.net/pub/uu-2004-08/
>
> % g++ -c hello.cpp `wx-config --cppflags`
> % g++ -o hello hello.o `wx-config --libs`
>
> というようにコンパイルしてたんですけど良くなかったでしょうか。
それならOK、コマンド1行でやるか2行でやるかの違い
ただ wx-config --cppflagsとwx-config --libsが何を表しているのか
includeとかlibってどういうものなのかググって意味を考えたほうがいいよ
-
- 302
- 2011/12/05(月) 19:16:58.26
-
LinuxでパッケージからwxWidgetsを入れた場合、setup.hはどこにあるのでしょうか?
wxUSE_ACCESSIBILITYを有効にしようと思ってファイル検索したら大量にかかったので幾つか内容を変更してみても有効にならなかったので。
-
- 303
- 2011/12/05(月) 19:26:14.75
-
パッケージはバイナリしか入ってない、つまりオプションを切り替えるのは不可能では?
ソースからビルドした方がいいと思われ
-
- 304
- 2011/12/05(月) 19:31:56.85
-
>>303
ありがとう。ソースから入れなおしてみる。
-
- 305
- 2011/12/05(月) 19:45:40.51
-
>>302
Linuxでは通常はソースのパッケージが別に用意されてるよ。
ディストリによるけど後ろに-develみたいなのがついたパッケージ
を入れるとソースが入る。
-
- 306
- 2011/12/05(月) 21:19:08.30
-
>>305
そのレスを見る前に入れなおしてしまった…教えてもらったのに申し訳ないです。
オプションの切り替えは結局setup.hをいじれば良いのでしょうか?
-
- 307
- 2011/12/05(月) 21:34:18.68
-
>>306
./configure -h で付けられるオプションが見れるからやってみ、その中にwxUSE_ACCESSIBILITYも入ってるだろう
-
- 308
- 2011/12/05(月) 21:38:07.80
-
$ ./configure -h | grep accessibility
--enable-accessibility enable accessibility support
あったあった。何に使うのかわからんけどどうぞ。
-
- 309
- 2011/12/06(火) 11:00:02.97
-
>>307,308
何から何まですみません。
-
- 310
- 255
- 2011/12/06(火) 11:57:28.16
-
wxAccessibleってマニュアルに
For details on the semantics of functions and types, please refer to the Microsoft Active Accessibility 1.2 documentation.
とか、
Availability: only available for the wxMSW port.
とかあるけどlinuxで意味あるのか?
-
- 311
- 2011/12/06(火) 14:11:37.79
-
>>310
下のサイト
http://www14.ocn.ne.jp/~bkclass/doc_wxsamples.html
を見て、サンプルのソース実行して勉強してたんですけど、accessっていうサンプルをコンパイルして実行をしようとすると、
"This sample has to be compiled with wxUSE_ACCESSIBILITY"
というメッセージが出たので、
Windowsのみ本体のwxUSE_ACCESSIBILITYを1にする、とは書いてあったんですが、動いてないということはLinuxでも必要なのかと勝手に思い込んでこちらで聞いてみたんですが、やっぱりLinuxでは意味が無いんでしょうか…
-
- 312
- 311
- 2011/12/06(火) 14:27:45.09
-
度々すみません。
こちらでもマニュアルを確認したら、accessはWindowsのみと書いてありました。
今度からはマニュアルを良く読んで、わからなかったらこちらで聞きたいと思います。
自分自身でもあんまりにゆとりすぎて反省してます…。
みなさん大変ご手数をおかけしました。
-
- 313
- 2011/12/07(水) 15:35:36.35
-
ほとんどのゆとりにくらべたらまだましなほうだわ
-
- 314
- 2011/12/07(水) 19:17:24.24
-
ゆとりはHSPとかC#に行くだろうからこっちには来ないだろうな
あとC++のGUIライブラリで有名で日本語ドキュメントがあるのはQtとかgtkだろうからさらにやる人は減る
最後にwxWidgetsは英語の知識とC++のオブジェクト指向がわかってないとできないから挫折する人も多いだろう
とゆとりが言ってみる
-
- 315
- 2011/12/07(水) 20:24:22.32
-
wxWidgets > Qt >>> こえられないかべ >>> GTK
-
- 316
- 2011/12/11(日) 22:40:24.44
-
wxWidgets > Qt なの?
-
- 317
- 2011/12/15(木) 13:37:15.62
-
いわゆるビジュアルプログラミング言語は
生産性を改善するという触れ込みでありながら、事実上普及していない
何でかは知らんけど、同じ大きさのモニタに表示できる情報量で
テキストに負けちゃうからっていう説を聞いたことがあるような
-
- 318
- 2011/12/16(金) 01:32:59.64
-
|....,,__
|_::;; ~"'ヽ
| //^''ヽ,,)
| i⌒"
| ∀`) < 誰もいない きのこるならいまのうち
|⊂
| ノ
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
|( ´∀`) < きのこ のこーのこ げんきのこ ♪
|(ノ |つ
| |
⊂ _ ノ
""U
_,,,......,,__
/_~ ,,...:::_::;; ~"'ヽ
(,, '"ヾヽ i|i //^''ヽ,,)
^ :'⌒i i⌒"
(´∀` )| < エリンギ まいたけ ブナシメジ ♪
⊂| (ノ |
| |
ヽ _ ⊃
.U""
|
| ミ
| ミ サッ!
| ミ
|
-
- 319
- 2011/12/16(金) 06:38:53.32
-
下記のページ
http://docs.wxwidgets.org/2.8/wx_wxcommandevent.html
でwxCommandEventを勉強していたのですが、
GetIntとGetSelectionの違いがよく分かりません。
GetIntは
wxCommandEvent::GetInt
int GetInt()
Returns the integer identifier corresponding to a listbox, choice or radiobox selection (only if the event was a selection, not a deselection), or a boolean value representing the value of a checkbox.
と書いてあり、GetSelectionは
Returns item index for a listbox or choice selection event (not valid for a deselection).
と書いてあるのですが、GetIntの選択されたリストボックスに対応付けられたInt型と言うのはGetSelectionで返される値と何か違うものなのでしょうか?
-
- 320
- 2011/12/16(金) 13:32:13.51
-
ver 2.8.12
include/wx/event.h
538: int GetSelection() const { return m_commandInt; }
554: int GetInt() const { return m_commandInt; }
-
- 321
- 2011/12/22(木) 01:35:21.75
-
リストボックスの中に、入れ子でリストボックスを作りたいと思いマニュアルを見て、wxListBoxのメンバ関数であるCreate関数を利用すれば2段階リストが構成できるということまではわかったのですが、Create関数の使い方がいまいちわかりません。
お手数ですが、どなたか使い方を教えていただきませんでしょうか。
-
- 322
- 2011/12/22(木) 06:52:48.65
-
了解
-
- 323
- 2011/12/22(木) 18:41:37.88
-
wxRegExを使うため、wxregexライブラリをビルドし、成功しました。
しかし、いざプログラムで「wxRegEx」クラスを使おうとすると、「error C2065: 'wxRegEx' : 定義されていない識別子です」というエラーが出て、全く使えません。
思いつく方が居たらお願いします。
OS: Windows 7
wxWidgets: 2.9.1
コンパイラ: Visual C++ 2010 Express
このページを共有する
おすすめワード