使用子類化窗口的方法來實現對Statictatic控件進行背景色修改


    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);

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章