Source code using a static control:
LONG WINAPI WndProc(HWND, UINT, WPARAM,LPARAM);
HWND hWndStatic;
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{ HWND hwnd;
MSG msg;
WNDCLASS w;
memset(&w,0,sizeof(WNDCLASS));
w.style = CS_HREDRAW | CS_VREDRAW;
w.lpfnWndProc = WndProc;
w.hInstance = hInstance;
w.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
w.lpszClassName = L"My Class";
w.hCursor = LoadCursor(NULL, IDC_ARROW);
RegisterClass(&w);
hwnd = CreateWindow(L"My Class", L"My title", WS_OVERLAPPEDWINDOW, 300, 200, 800, 600, NULL, NULL, hInstance, NULL);
hWndStatic = CreateWindowEx(0, L"Static", NULL, WS_CHILD| WS_VISIBLE |SS_LEFT, 10, 130, 200, 20, hwnd, NULL, hInstance, NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{ TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
UINT_PTR uTimerId;
LOGBRUSH lbrBk;
LONG WINAPI WndProc(HWND hwnd, UINT Message, WPARAM wparam, LPARAM lparam)
{
switch (Message)
{ case WM_CREATE:
{ LRESULT lRes = DefWindowProc(hwnd, Message, wparam, lparam);
HBRUSH hbr = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
GetObject(hbr, sizeof(lbrBk), &lbrBk);
uTimerId = SetTimer(hwnd, 123, 1000, NULL);
return lRes;
}
case WM_CTLCOLORSTATIC:
if ((HWND)lparam == hWndStatic)
{ SetBkColor((HDC)wparam, lbrBk.lbColor);
return (BOOL) GetStockObject(LTGRAY_BRUSH);
}
return FALSE;
case WM_TIMER:
{ TCHAR szTime[128];
HDC hdc = GetDC(hwnd);
_tstrtime_s(szTime, _countof(szTime));
SetWindowText(hWndStatic, szTime);
ReleaseDC(hwnd, hdc);
break;
}
case WM_DESTROY:
KillTimer(hwnd, uTimerId);
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, Message, wparam, lparam);
}
return 0;
}