0から始めるVisualStudio2022:ソフト開発塾

前回作った、テンプレートを利用して
時刻表示を行ってみた。
プロジェクト名は、Dialog006として
ソース dialog.cppに少し追加(WM_PAINT)
    case WM_PAINT:
        hdc = BeginPaint(hDlg, &ps);
        mm_leng = GetTimeFormatA(LOCALE_SYSTEM_DEFAULT, TIME_FORCE24HOURFORMAT, NULL,NULL, mm_buff,sizeof(mm_buff));
        if (mm_leng > 0) {
            mm_leng--;
            TextOutA(hdc, 0, 0, mm_buff, mm_leng);
        }
        EndPaint(hDlg, &ps);
        break;
と、時刻表示ができた。
しかし、このままでは、表示時刻が変わらない!!
そこで、タイマー
    case WM_INITDIALOG:
        SetTimer(hDlg, IDT_TIMER1, 1000, (TIMERPROC)NULL);
        break;
終了時に、タイマーを破棄するため
    case WM_DESTROY:
        KillTimer(hDlg, IDT_TIMER1);
        break;
タイマーのイベントで、
InvalidateRect 関数で、WM_PAINT イベントを発生させる。
    case WM_TIMER:
        switch (wPara)        {
        case IDT_TIMER1:
            InvalidateRect(hDlg,NULL,false);
            break;
        }
        break;
はい!出来上がり。

#define IDT_TIMER1                      1



Top