やりたいこと、
カレンダーの月日を選択時に、カレンダーの値を参照する
該当月日の項目をセルに表示する
カレンダー選択毎にセルの表示が変わる
結果
//カレンダーの名前 m_calendar1
m_calendar1 = new wxCalendarCtrl(this, wxID_ANY, wxDefaultDateTime, wxDefaultPosition, wxDefaultSize, wxCAL_SHOW_HOLIDAYS);
//カレンダーの値を変更したときにする処理
//m_calendar1->Bind(wxEVT_CALENDAR_SEL_CHANGED, [this](wxCommandEvent& event) {
//上記のように、wxEVT_CALENDAR_SEL_CHANGEDにすると、月選択時にも反応してしまう為、不適切(日にちを選択してないのに反応してしまう)
m_calendar1->Bind(wxEVT_CALENDAR_DAY_CHANGED, [this](wxCommandEvent& event) {
//カレンダーから日付のデータを取得するxmdという変数を用意 型はwxDateTime
auto ymd = m_calendar1->GetDate();
//カレンダーから年、月、日を取得するが、何故か月は-1されているため、+1する
std::string ySTR = std::to_string(ymd.GetYear());
std::string mSTR = std::to_string(ymd.GetMonth()+1);
std::string dSTR = std::to_string(ymd.GetDay());
//試しにメッセージボックスで表示
wxMessageBox(ySTR+" " + mSTR +" " +dSTR);
});
問題無く、選択した日付が表示された。
Comments