[wxWidgets]ドロップダウンリストの内容をファイルに出力
C++のwxWidgetsでドロップダウンリストの内容をファイルに出力する僕の初めてのGUIプログラムを作れた。
起動すると以下のようなダイアログが出て,ドロップダウンリストからテキストを選択できる。OKを押すと,同じディレクトリに選んだ内容が書かれたtest.datができる。
レイアウトなどめちゃくちゃだけどとりあえずやりたいことができた。後は取得した値を使って処理をしてファイルに出力するコードをかければいい。
入力のところだけGUIにできればとりあえず満足。わからなくて泣きべそかきそうだったけどできてよかった。
ソースコードは以下。
//
C++ drop-down.cpp
//
Author: SENOO, Ken
//
(Last Update: 2014-09-11T00:06+09:00)
//
Lincense: MIT
/*
起動したらドロップダウンリストがついたダイアログがでて,ドロップダウンから文字を選んでOKを押すと,同じディレクトリに選択内容が書かれたtest.datができる。
*/
#include
“wx/wx.h”
#include
<iostream>
#include
<string>
#include
<fstream>
//
アプリケーションクラス
class
MyApp: public wxApp{
public:
virtual bool
OnInit();
//
イベントハンドラ。ドロップダウンリストで選んだ内容をプリントしたい
void
Hi(wxCommandEvent &event){
std::fstream file;
file.open(“./test.dat”,
std::ios::out);
file <<
event.GetString() << std::endl;
file.close();
};
};
//
OnInitメソッド
bool
MyApp::OnInit(){
int
ID_MYDIALOG=1;
//
ダイアログのテキスト
wxArrayString str;
str.Add(_(“hi”));
str.Add(_(“nihao”));
//
ダイアログを表示する
wxDialog *dialog=
new wxDialog(NULL, ID_MYDIALOG, wxString(_(“hi”))); // ダイアログの定義
wxChoice *choice =
new wxChoice(dialog, 2, wxPoint(20,100), wxDefaultSize, str); //
ドロップダウンリスト
wxButton *button =
new wxButton(dialog, wxID_OK, _(“OK”), wxPoint(10, 10),
wxDefaultSize); //OKボタン
dialog->Show(true);
//ここで表示
Bind(wxEVT_COMMAND_CHOICE_SELECTED,
&MyApp::Hi, this, 2 ); // イベントを関数に割り当てる
};
IMPLEMENT_APP(MyApp)
以下のコマンドでコンパイルする。
g++
-o drop-down.{exe,cpp} `wx-config –cppflags –libs`
ただし、このプログラムはwxWidgetw 2.9.0以降でないと動作しない。Bind関数が対応していないため。