facebook twitter hatena line google mixi email
★お気に入り追加


  • 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/

ここまで見た
  • 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

ここまで見た
  • 324
  •  
  • 2011/12/22(木) 18:52:26.42
>>323
すいません、プリコンパイル済みヘッダを再作成してみたらうまくいきました。
スレ汚しすいません……

ここまで見た
  • 325
  •  
  • 2011/12/22(木) 19:21:01.94
MinGW勢はいないのか
どいつもこいつもマイクロソフトの犬だな

ここまで見た
  • 326
  •  
  • 2011/12/23(金) 01:55:47.35
mingwの時点でOSはWindowsなのに
>どいつもこいつもマイクロソフトの犬だな
とか書くのかよw

ここまで見た
  • 327
  •  
  • 2011/12/23(金) 02:50:47.72
確かにそうだな、ちょっとWindows捨ててくる

ここまで見た
  • 328
  •  
  • 2011/12/23(金) 16:08:42.36
wxWidgetsはWindows以外はおまけだろ。
Win32のラッパーとしての価値しかないと思っている。

ここまで見た
  • 329
  •  
  • 2011/12/23(金) 16:11:37.68
>>326
ナイス

ここまで見た
  • 330
  •  
  • 2011/12/23(金) 16:12:34.17
>>328
元々 wxWindows だからなぁ

ここまで見た
  • 331
  •  
  • 2011/12/24(土) 17:54:24.54
migw もなぁ…64bit対応がなぁ…
wxruby とか使いたくても使えないよ

しかしひとはビルドしろという
なんどでもビルドしろという
びるどしろー

ここまで見た
  • 332
  •  
  • 2011/12/25(日) 00:36:14.77
rubyるど

ここまで見た
  • 333
  •  
  • 2011/12/25(日) 08:31:41.01
MSWでwxListCtrlを使ってみたらDESELECTEDイベントが通知されないバグがあったので
クリックやキボード操作が行われる度に選択状態を自分でチェックしてDESELECTEDイベントを送るようにしたら
アイテムが1個の時に何故かマウスイベントが消し去られるバグまで出てきて
もう八方塞がりです
なにこれ馬鹿

ここまで見た
  • 334
  •  
  • 2011/12/25(日) 12:00:56.99
wxLC_VIRTUALの呪い

ここまで見た
  • 335
  •  
  • 2011/12/25(日) 13:04:57.85
そういうのってバグ報告できないのかな?

ここまで見た
  • 336
  •  
  • 2011/12/25(日) 21:34:01.11
馬鹿が使うと馬鹿っぽく振舞います

ここまで見た
  • 337
  •  
  • 2011/12/27(火) 11:01:32.77
明らかに開発陣はWindowsでテストしてないな
昔よりバグが悪化してるwww

ここまで見た
  • 338
  •  
  • 2011/12/27(火) 12:10:40.98
最近wxTreeCtrl使ってるけどイベント通知できんわ
仕様がわかってないだけかも知れんが、バグだったら報告しなきゃだな

ここまで見た
  • 339
  •  
  • 2011/12/27(火) 16:48:41.14
できるよ

ここまで見た
  • 340
  •  
  • 2011/12/27(火) 19:07:54.63
最新バージョンってバグ多いの?
これから使うか悩んでるので教えてださい。

ここまで見た
  • 341
  • 338
  • 2011/12/27(火) 23:00:49.89
今日ちょっとwxTreeCtrlの全イベント試してみたが、特に問題なかった。環境はMSW(MinGW)

>>340
英語が多くてドキュメントがAPIリファレンスしかないのがある意味バグw
この前wxXMLをHTMLに使ったら一気にバグってワロタ(当たり前だけど)

それさえ超えればいいものだと思います

ここまで見た
  • 342
  •  
  • 2011/12/27(火) 23:36:17.73
自分の無能を環境のせいにすんなやぼけ

ここまで見た
  • 343
  •  
  • 2011/12/28(水) 08:03:39.44
バグとか明らかに仕様とは違う動きをしたりすることは多々あるけど
もともとネイティブAPIをラップしただけだから誤魔化せるかもしれない
結局のところネイティブレベルの知識とwxWidgetsの中身まで調べないといけないので時間はかかる
それでもネイティブコンパイル出来ないC#も嫌だし、MFCよりは遥かにましだけどw
ネイティブレベルのことをしたくてGUIも楽に作りたいって要求に答えてくれるものがないもんな


ここまで見た
  • 344
  •  
  • 2011/12/28(水) 15:34:13.86
>>341
英語なのはキツイけどほかに良いライブラリも見当たらないし我慢するw

>>343
バグがあるってのはちょっと残念だなぁ
ネイティブレベルの知識もそんなに無いし不安だ・・・
けど、大きなバグじゃないのなら少し使ってみようと思います。

ここまで見た
  • 345
  •  
  • 2011/12/29(木) 15:13:49.10
649 デフォルトの名無しさん [sage] 2011/12/29(木) 14:50:37.28 ID: Be:
学生プログラマ日本一決定戦(予選は社会人も参加可)
ttp://codevs.jp/howto.html
現在予選開催中
応募締切 2012.1.6 12:00

おもしろいことやっているじゃん。誰か今から参加しろよ。

ここまで見た
  • 346
  • 本田
  • 2011/12/31(土) 22:24:08.47
>>340
http://www.wxwidgets.org/
wxWidgets 2.9.3 Released
2011-12-14

While this is still officially a development release because some API details are still not frozen,
we believe that 2.9.3 can be used in production environment,
especially for the new projects for which (small) changes in behaviour since 2.8 are not a problem.
Give it a try and let us know what do you think!

ここまで見た
  • 347
  •  
  • 2012/01/01(日) 00:03:23.71
2.8もバグ多い

ここまで見た
  • 348
  •  
  • 2012/01/01(日) 11:14:18.13
サイザーage

ここまで見た
  • 349
  • 2012/01/01(日) 12:26:18.78
今年のおみくじは大吉を良く目にする

ここまで見た
  • 350
  • 2012/01/01(日) 13:38:44.46
今年はwx使うことあるかなー

ここまで見た
  • 351
  •  
  • 2012/01/04(水) 16:51:15.64
wxWebViewって縦書きに対応してる?

ここまで見た
  • 352
  •  
  • 2012/01/05(木) 01:29:02.25
wxTextCtrlの内容を一行ずつ読み込みたいです。
行数を調べるのに以下のやり方でいいのかと考えたのですがエラーがでます。

size_t abc = wxTextCtrl::TextCtrl1.GetNumberOfLines();

コンパイルすると以下のエラーがでます。

C:\Users\x\Desktop\practice\practiceMain.cpp||In member function 'void practiceFrame::OnButton2Click(wxCommandEvent&)':|
C:\Users\x\Desktop\practice\practiceMain.cpp|225|error: 'TextCtrl1' is not a member of 'wxTextCtrl'|

http://docs.wxwidgets.org/2.9.3/classwx_text_file.html
ここを見るとメンバー関数と書いているようなのですが、何か考え違いをしていると思うのですが・・
教えてください。

ここまで見た
  • 353
  •  
  • 2012/01/05(木) 01:32:45.50
>>352
wxTextCtrlではなくwxTextFileとあるけように思える。
IDE使ったほうがいいんじゃない?

ここまで見た
  • 354
  •  
  • 2012/01/05(木) 02:10:29.44
>>353
レスありがとうございます。

リンクを間違っていました。 以下を参考にしました。
http://wxwindowsjp.sourceforge.jp/docs/html/wx/wx381.htm#wxtextctrlgetnumberoflines

IDEは、CODE::BLOCKS SVN:7550を使用しています。

試しに以下のことをやってみたのですがエラーがでました。
int abc = TextCtrl1.GetNumberOfLines(TextCtrl1);
C:\Users\x\Desktop\practice\practiceMain.cpp|225|error: request for member 'GetNumberOfLines' in '((practiceFrame*)this)->practiceFrame::TextCtrl1', which is of non-class type 'wxTextCtrl*'|
int abc = TextCtrl1.GetNumberOfLines();
C:\Users\x\Desktop\practice\practiceMain.cpp|225|error: request for member 'GetNumberOfLines' in '((practiceFrame*)this)->practiceFrame::TextCtrl1', which is of non-class type 'wxTextCtrl*'|

wxTextCtrl1は、CODE::BLOCKSのGUIの部品を貼り付けています。

ここまで見た
  • 355
  •  
  • 2012/01/05(木) 02:31:38.99
>>354
全体のコード見てないからなんとも言えないが、TextCtrlはprivateとかで宣言しないと外から触れんぞ


Frame.h
private :
wxTextCtrl* m_text;

Frame.cpp

// メソッド内にテキストコントロール配置
m_text = new (.....);

m_text->Hogehoge();

ここまで見た
  • 356
  •  
  • 2012/01/05(木) 12:59:53.67
>>355
レスありがとう。

int abc = TextCtrl1 -> GetNumberOfLines();

と書けば、エラーなくコンパイルできました。

本当にありがとうでした。


ここまで見た
  • 357
  •  
  • 2012/01/05(木) 17:12:08.35
>>356
それじゃあコンパイルできても内部処理書く段階で死にそうなのでアドバイス

第十三回-03 ドット演算子とアロー演算子
http://brain.cc.kogakuin.ac.jp/~kanamaru/lecture/prog1/13-03.html

あとこことかも役に立つ

●C++編(言語解説) トップページ
http://www.geocities.jp/ky_webid/cpp/language/index.html

ここまで見た
  • 358
  •  
  • 2012/01/05(木) 21:49:09.86
>>357
ありがとうございます。
ゆっくり読みます。

ここまで見た
  • 359
  •  
  • 2012/01/06(金) 15:41:25.76
テキストファイルを読み込む時に、utf-8のファイルの場合はreadして読み込むことができます。
テキストファイルがsjisの場合、次のようなエラーメッセージが表示されます。
[Faild to convert file "z:\test.txt" to unicode

http://docs.wxwidgets.org/2.9.3/classwx_text_file.html
http://docs.wxwidgets.org/2.9.3/classwx_conv_auto.html
上記を読むと、wxConvAuto機能を使用すると自動的にコンバートしてくれるように記載されているように見えます。

それで、openするときに、wxConvAuto()を付け加えてみたのですがエラーがでます。
wxConvAutoは付けても、付けなくても同じ現象です。
tfile.Open(file,wxConvAuto());

TextCtrl1->SetValue(str);
に、utf-8のファイルを読み込むと内容が反映されます。
sjisだとオープン時に(本当にオープンするときのエラーかどうかはわかりませんが・・・)上記エラーがでます。
またTextCtrl1にはテキストファイルの内容が反映されません。

どこが悪いか教えてください。


ここまで見た
  • 360
  •  
  • 2012/01/06(金) 15:42:52.53
すいません、ソースコードは短めなので、こちらに書きます。

wxString file,str,s,number;
wxTextFile tfile;

wxFileDialog fdlog(this,_T("テキスト読み込みファイルの選択"),
wxEmptyString, wxEmptyString, wxEmptyString,
wxFD_OPEN);
if(fdlog.ShowModal() != wxID_OK) return;
{
file.Clear();
file = fdlog.GetPath();
tfile.Open(file,wxConvAuto());
wxLogMessage(_T("オープンできました。"));
str = tfile.GetFirstLine();
s = str;
str += '\n';
while(!tfile.Eof())
{
s= tfile.GetNextLine();
str += s;
str += '\n';
}
TextCtrl1->SetValue(str);
wxLogMessage(_T("読み込み完了しました"));
tfile.Close();

こんな感じです。


ここまで見た
  • 361
  •  
  • 2012/01/06(金) 16:25:17.96
wxTextCtrlの中身を印刷したいのですが、どのようにすればいいのかいまいち分かりません。
どこかにwxTextCtrlのアドレスか何かを渡せばよいのでしょうか?教えてください

ここまで見た
  • 362
  •  
  • 2012/01/06(金) 18:45:10.90
>>360
過去スレにもSJIS読み込みについての事例が沢山あるが、wxWidgetsのライブラリによるSJIS→UTF-8の変換は全く期待できない
結論としては「UnicodeビルドしてUTF-8で読み込め」でFAだとおもう

おすすめはlibiconvでUTF-8に変換してからwxWidgets内に読み込む
iconvはwikipediaにもサンプルコードがあるから、使うのは難しくないはず http://ja.wikipedia.org/wiki/Iconv

>>361
wxWidgets2.9.3のクラスリファレンス見れ、いっぱい使えそうなのあるぞ

wxPrintData
wxPrintDialog
wxPrintDialogData
wxPrinter
wxPrinterDC
wxPrintout
wxPrintPreview

ここまで見た
  • 363
  • 361
  • 2012/01/06(金) 19:18:13.20
印刷の件ですが、wxPrinterDCにwxTextCtrlの値を渡せばWindowsでは印刷することができました。

しかし、LINUX(ubuntu11.10)環境下では、印刷プレビューを見る限りではうまくいっている様に思えるのですが、実際に印刷してみると(test wordsと言う文字を1部だけ印刷しようとしました。)、
1枚目のプリントに下記のようなエラーが印刷され、その後プリンタが無限に白紙を出しつづけるという不具合が起こりました。

%!PS-Adobe-3.0 %%Creator: Gnome Print Version 2.18.8 %%CreationDate: D:201201061

この不具合は、wxWidgets2.8.12の印刷用のサンプルプログラムprintingの内容を印刷しようとしても起きてしまったので、
参考にしたサンプルその物がどこかおかしいか、こちらの印刷まわりの設定がおかしいかのどちらかだと思うので、とりあえず上記のエラーを調べてみます。


>>362
レスありがとうございます。
一応読んではいたのですが、いまいちよく分からなかったのでここに頼ってしまいました。住みません。

ここまで見た
  • 364
  •  
  • 2012/01/06(金) 19:42:20.71
さっきShift_JISで読み込むのは無理だと言ったがそれは嘘だ(コマンドー風に)

下みたいなテストプログラムで普通にShift_JIS読み込めてワロタ
2.9.3パない

// テキストファイルの読み込み
wxTextFile file(wxT("./Shift_JIS.txt"));
file.Open(wxConvAuto(wxFONTENCODING_CP932));
wxString test = file.GetFirstLine();

frame->SetStatusText(test);
frame->Show(true);

ここまで見た
  • 365
  •  
  • 2012/01/07(土) 21:53:08.88
>>362>>364
レスありがとうございます。
試しに以下のように入力してコンパイルしてみました。

wxTextFile file(wxT("c:\\Shift_JIS.txt"));
file.Open(wxConvAuto(wxFONTENCODING_CP932));
wxString test = file.GetFirstLine();

コンパイルすると、下記エラーがでます。
C:\Users\x\Desktop\practice\practiceMain.cpp|154|エラー: no matching function for call to 'wxConvAuto::wxConvAuto(wxFontEncoding)'|

wxwigetsは,2.8.12を使用しています。
コンパイルが通らない原因が、わからにので2.9.3のソースをダウンロードしてコンパイルを試しています。


cドライブ直下に、MinGWとmsysというのを導入後、msys.batで端末?を起動しました。
そこで、./configure --disable-shared --enable-monolithic --enable-unicodeと行い、make make installまでは行いました。
make installした成果物?をwindowsの実行環境にどうもっていくか調べているところです。

何が悪いか手探りなので的外れなことしてるような気もするんですが、これしかできないのでとりあえず2.9.3の環境を作ってみます。

ここまで見た
  • 366
  •  
  • 2012/01/07(土) 22:42:42.75
>>365
やりかたは間違ってないとおもうので頑張って
今ちょっとクラスリファレンス見てたけど

wxTextFileの部分で::Openで取れる引数が2.8から2.9で変わってるみたい

wxWidgets 2.8

bool Open(wxMBConv& conv = wxConvUTF8) const
bool Open(const wxString& strFile, wxMBConv& conv = wxConvUTF8) const

wxWidgets 2.9

bool Open (const wxMBConv &conv=wxConvAuto()) const
bool Open (const wxString &strFile, const wxMBConv &conv=wxConvAuto()) const

OpenメソッドにwxConvAuto()をとれるのが新機能みたい。2.8にはないんだな、これが。

ここまで見た
  • 367
  •  
  • 2012/01/08(日) 00:03:23.41
>>366
わざわざ調べてくれてありがとうございます。

2.8にはない新機能だったんですね。
2.9.3にする励みになりました。

code::blocksで、コンパイル済みのものを入れるだけで1週間くらいかかった記憶があります。
コンパイルなど慣れないことをするので、今回も同じくらい時間かかるかもしれません。

でも2.9.3にする気にになりました。
ありがとうございました。

ここまで見た
  • 368
  •  
  • 2012/01/09(月) 00:02:24.31
Mingwをcドライブ直下にインストール
PATHに、C:\MinGW\bin;C:\MinGW\mingw32\binを追加
c:\wxWigets-2.9.3を解凍

下記を参考にしました。
http://wiki.codeblocks.org/index.php?title=Compiling_wxWidgets_2.8.6_to_develop_Code::Blocks_%28MSW%29
オプションはcode::blocksで使用する場合のofficial supportと書いていたので下記とおりにしています。

コマンドプロンプトで下記実行
C:\Users\x>SET PATH=c:\mingw\bin;c:\mingw\mingw32\bin
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release clean
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=release
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug clean
c:\wxWidgets-2.9.3\build\msw>mingw32-make -f makefile.gcc MONOLITHIC=1 SHARED=1 UNICODE=1 BUILD=debug
c:\wxWidgets-2.9.3\lib\gcc_dll>copy *.dll %windir%

code::blocksの設定
settings>Enviroment>Enviromet variables
WSWIN=C:\wxWidgets-2.9.3
settings>Grobal Variable Editor
current varibale:wx
base: ${WXWIN}
include: ${WXWIN}\include
lib: ${WXWIN}\lib

開発環境のコンパイルが初めてで、これでいいのか不安ですが、code::blocks上のプロジェクトのコンパイルが通りました。

お絵かきランド
フリックゾンビ
ここまで見た

★お気に入り追加

このページを共有する
facebook twitter hatena line google mixi email
おすすめワード