サンプル・プログラム
リソースの準備
ResEdit を起動したら、「メニュー→ファイル→新規プロジェクト」を選択し、Locationにプロジェクト isleap2 のフォルダを、Nameに resource を入力し、Finishする。
右ペインのツールボックスから Static Text をドラッグしてきて、ダイアログ上に配置する。ここに閏年の判定結果を表示する。
左下のプロパティで、IDを IDC_LABEL と入力する。C++プログラムの方から、このIDを参照することになる。
入力ができたら、保存する。
プログラムの解説
0007: // 初期値 ============================================================
0008: #include <windows.h>
0009: #include <commctrl.h>
0010: #include <stdio.h>
0011: #include <string>
0012: #include <stdlib.h>
0013: #include <time.h>
0014: #include "resource.h"
0015: using namespace std;
"windows.h" はWindowsアプリを作るために必要なヘッダdata。
"resource.h" は、ResEdit で作ったリソースIDなどが入っている。
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: }
イベントが発生すると、uMsg にイベントの種類が渡される。
WM_INITDIALOG はダイアログの初期化、WM_CLOSE は終了アイコンが押下されたときに発生するイベントである。今回は、この2つしか使用しない。
0060: /**
0061: * Windowsメインプログラム
0062: * @param HINSTANCE hInstance
0063: * @paramm HINSTANCE hPrevInstance
0064: * @param LPSTR lpCmdLine
0065: * @paramL int nShowCmd
0066: * @return intリターンコード
0067: */
0068: int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) {
0069: DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC)DlgProc);
0070: return 0;
0071: }
プロジェクトのビルドと実行
リンカーー・フラグに "-mwindows -static -lstdc++ -lgcc -lwinpthread" を、その他のオブジェクトとしてリソースから生成されるオブジェクト "resource.o" を追加してやる。
参考サイト
- PHPで閏年かどうか判定する:ぱふぅ家のホームページ
- PHPでWindowsアプリケーションウィンドウに表示する:ぱふぅ家のホームページ