2010-07-21 2 views
0

내가 클래스, 예컨대 :C++ win32 : 창 색상을 다시 설정하는 방법은 무엇입니까?

wincl.hbrBackground = CreateSolidBrush(RGB(202, 238, 255)); 
RegisterClassEx(&wincl); 

를 등록하고 때 나는 다시 색상을 설정할 수 있습니다하지만 난 그것이 내가 CreateWindow 함수 기능으로 생성 한 창으로 어떻게 할 것인가? 내 메인 윈도우의 버튼처럼, 나는 비주얼 스타일을 사용할 수있게하고, 버튼 뒤에 윈도우 기본 회색 다시 색상을 확인할 수 있습니다.

내가 당신을 사용자 정의 창은 윈도우의 유형을 끌기 위해 자신의 창 클래스를 만들 수 있습니다 원하는 경우 allllllll 내 컨트롤에 창 절차를 SetWindowLong 함수와 WM_PAINT :(

답변

1

모든 창 컨트롤은 부모에게 메시지를 보내 브러시로 배경을 채우도록합니다. 가정 브러시 핸들의 사본을 어딘가에 저장하면 WindowProc 또는 DialogProc에서 다음을 수행하여 올바른 배경으로 모든 것을 그릴 수 있습니다. b 돌진.

case WM_CTLCOLORSTATIC: 
case WM_CTLCOLORBTN: 
    HDC hdc; 
    HWND hwndCtl; 
    POINT pt; 
    hdc = (HDC)wParam; 
    hwndCtl = (HWND)lParam; 
    pt.x = 0; 
    pt.y = 0; 
    MapWindowPoints(hwndCtl,_hwnd,&pt,1); 
    x = -pt.x; 
    y = -pt.y; 
    SetBrushOrgEx(hdc,x,y,NULL); 
    return (INT_PTR)_skinBrush; 
0

을 차단해야 말하지 마 wm_paint에 대한 핸들러를 구현하고 원하는 창을 그리십시오. 사용할 수있는 자습서가 많습니다.

관련 문제