f

2014-09-11

[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関数が対応していないため。

0 件のコメント:

コメントを投稿