WNDPROC OldProc = NULL;
LRESULT CALLBACK StaticControlProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
if (msg == WM_PAINT)
{
PAINTSTRUCT ps = { 0 };
HDC hdc = BeginPaint(hWnd, &ps);
RECT rect;
::GetClientRect(hWnd, &rect);
DWORD dwColor = RGB(196, 196, 196);
HBRUSH hBrush = ::CreateSolidBrush(dwColor);
HPEN hPen = ::CreatePen(PS_SOLID, 1, dwColor);
HBRUSH hOldBrush = (HBRUSH)::SelectObject(hdc, hBrush);
HPEN hOldPen = (HPEN)::SelectObject(hdc, hPen);
::Rectangle(hdc, 0, 0, rect.right, rect.bottom);
::SelectObject(hdc, hOldBrush);
::SelectObject(hdc, hOldPen);
::DeleteObject(hBrush);
::DeleteObject(hPen);
EndPaint(hWnd, &ps);
return 0;
}
else
{
return ::CallWindowProc(OldProc, hWnd, msg, wParam, lParam);
}
}
HWND hwnd = ::CreateWindowExW(dwStyleEx, L"Static", NULL, dwStyle, left, top, width, height,
hParentWnd, NULL, hInstance, NULL);
OldProc = (WNDPROC)SetWindowLong(hwnd, GWL_WNDPROC, (LONG)StaticControlProc);