サンプル・プログラム
リソースの準備
前回との違いは、西暦年を入力するための Edit Control と、年数を1ずつ増減できる Spin Control を加えた部分である。
また、アプリケーションのアイコン "application.ico" を「メニュー→リソースの追加→アイコン」を使って追加した。icoファイルは、Photoshop等であらかじめ作成しておく。
プログラムの解説
0020: //char*バッファサイズ
0021: #define BUFFER_SIZE 255
0022:
0023: //西暦年の最小値と最大値
0024: #define YEAR_MIN 1
0025: #define YEAR_MAX 9999
0026:
0027: //現在のインターフェイス
0028: HINSTANCE hInst;
ユーザー入力の範囲として、西暦年の最小値と最大値を定義する。
0031: /**
0032: * テキストボックスから整数を取得
0033: * @param HWND hDlg ダイアログID
0034: * @param unsigned id テキストボックスID
0035: * @return int取得値
0036: */
0037: int getIntEditBox(HWND hDlg, unsigned id) {
0038: char buff[BUFFER_SIZE + 1];
0039: GetDlgItemText(hDlg, id, buff, sizeof(buff));
0040:
0041: return atoi(buff);
0042: }
0044: /**
0045: * テキストボックスに整数を代入
0046: * @param HWND hDlg ダイアログID
0047: * @param unsigned id テキストボックスID
0048: * @param int i 設定値
0049: * @returnなし
0050: */
0051: void setIntEditBox(HWND hDlg, unsigned id, int i) {
0052: char buff[BUFFER_SIZE + 1];
0053: snprintf(buff, sizeof(buff), "%d", i);
0054: SetDlgItemText(hDlg, id, buff);
0055: }
0031: /**
0032: * ダイアログボックス
0033: * @param HWND hDlg
0034: * @paramm UINT uMsg
0035: * @param WPARAM wParam
0036: * @paramL PARAM lParam
0037: * @return INT_PTR CALLBACK
0038: */
0039: INT_PTR CALLBACK DlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
0040: char buff[255];
0041:
0042: time_t t = time(0); //現在時刻
0043: tm* now = localtime(&t); //ローカルタイム
0044: int year = now->tm_year + 1900; //西暦年を取り出す
0045: bool res = isleap(year); //閏年かどうか判定する
0046:
0047: switch(uMsg) {
0048: case WM_INITDIALOG:
0049: snprintf(buff, sizeof(buff), "%d年は 閏年%s", year, (res ? "です." : "ではありません."));
0050: SetDlgItemText(hDlg, IDC_LABEL, buff);
0051: break;
0052: case WM_CLOSE:
0053: EndDialog(hDlg, 0);
0054: break;
0055: }
0056: return 0;
0057: }
Spin Control がクリックされると、WM_NOTIFY イベントが発生する。増加か減少かを判断し、西暦年の増減を行い、うるう年判定結果をテキストボックスに代入する。
プロジェクトのビルドと実行
Debugフォルダに出力される isleap3.exe は約1.3Mバイトである。
正式配賦するexeファイルをビルドするときは、「メニュー→プロジェクト→ビルド構成→アクティブにする→Release」を選ぶ。すると、約100Kバイトのコンパクトなexeファイルがビルドされる。
参考サイト
- PHPでWindowsアプリケーションウィンドウに表示する:ぱふぅ家のホームページ