| UpdateWindow(HWND hWnd)画面が書き変わったことをウィンドウズに知らせ、表示してもらいます。その結果、WM_PAINT(その他のよく使うメッセージ)が着くので、自前で画面に表示するときは、OnPaint関数で処理をします。  OnPaint関数の例画面で時刻が刻々と変わるようにしてみましょう。そのため、秒が変わったらWM_TIMER(その他のよく使うメッセージ)が着くので、即表示するためのOnTimer関数も使用します。一定時間の刻みはOnCreate関数内のSetTimer関数で100ミリ秒後とに刻むように用意してあります。 gszDateAndTime[256]という文字型の配列を用意し、時刻を覚えておきます。これをOnTimerとOnPaintで使用します。MessageにWM_PAINTメッセージがきます。wParamとlParamには決められた情報が着ます。 
 
  
    | OnPaint(HWND hWnd, 
    UINT Message, WPARAM wParam, LPARAM lParam) |  
    | { |  
    |  | PAINTSTRUCT ps; |  
    |  | HDC hDC; |  
    |  | RECT rc; |  
    |  | CHAR sz_message[] = "成功した!!!! Escキーを押すと終了します"; |  
    |  | COLORREF old_color; |  
    |  |  |  
    |  | hDC = BeginPaint(hWnd, &ps); |  
    |  |  |  
    |  | if(hDC){ |  
    |  |  | GetClientRect(hWnd, &rc); |  
    |  |  |  |  
    |  |  | // 文字色を青色にします |  
    |  |  | old_color = SetTextColor(hDC, RGB(0,0,0xff)); |  
    |  |  | if(old_color != 
    CLR_INVALID){ |  
    |  |  |  | DrawText(hDC, sz_message, 
    strlen(sz_message), &rc, DT_CENTER | DT_VCENTER); |  
    |  |  |  | if(*gszDateAndTime){ |  
    |  |  |  |  | DrawText(hDC, gszDateAndTime, 
    strlen(gszDateAndTime), &rcDateAndTime, DT_CENTER | 
    DT_VCENTER); |  
    |  |  |  | } |  |  
    |  |  |  | SetTextColor(hDC, 
    old_color); |  
    |  |  | } |  
    |  | } |  
    |  |  |  
    |  | EndPaint(hWnd, &ps); |  
    | } |  |  秒が変わったら表示するため、OnTimer関数内で秒の変化を記録します。そのためgszDateAndTimeという文字型の配列を用意します。MessageにWM_TIMERメッセージ(その他のよく使うメッセージ)がきます。wParamとlParamには決められた情報が着ます。 
 
  
    | OnTimer(HWND hWnd, UINT 
    Message, WPARAM wParam, LPARAM lParam) |  
    | { |  
    |  | HDC hDC; |  
    |  | RECT rc; |  
    |  | TEXTMETRIC textmetric; |  
    |  | SYSTEMTIME localtime; |  
    |  | COLORREF old_color; |  
    |  | CHAR sz_day[][3] = {"日", "月", "火", "水", 
    "木", "金", "土"}; |  
    |  |  |  
    |  | GetLocalTime(&localtime); |  
    |  | wsprintf(gszDateAndTime, "%u-%02u-%02u (%s) %02u:%02u:%02u:%03u", localtime.w Year, localtime.wMonth, localtime.wDay, sz_day[localtime.wDayOfWeek], localtime.wHour, localtime.wMinute, localtime.wSecond, localtime.wMilliseconds);
 |  
    |  |  |  
    |  | hDC = GetDC(hWnd); |  
    |  |  |  
    |  | if(hDC){ |  
    |  |  | GetTextMetrics(hDC, &textmetric); |  
    |  |  | GetClientRect(hWnd, &rc); |  
    |  |  | SetRect(&rcDateAndTime, rc.left, rc.top+textmetric.tmHeight, rc.right, rc.bottom); |  
    |  |  | // 時間が変更されると赤色で表示されるます |  
    |  |  | old_color = SetTextColor(hDC, RGB(0xff,0,0)); |  
    |  |  | DrawText(hDC, gszDateAndTime, strlen(gszDateAndTime), &rcDateAndTime, DT_CENTER | 
    DT_VCENTER); |  
    |  |  | if(old_color != CLR_INVALID){ |  
    |  |  |  | SetTextColor(hDC, old_color); |  
    |  |  | } |  |  
    |  |  | ReleaseDC(hWnd, hDC); |  
    |  | } |  
    |  |  |  
    |  | return TRUE; |  
    | } |  |  |