본문 바로가기
C & C++/MFC 컨트롤

Static Control 의 배경을 투명하게 만들기

by izen8 2011. 10. 25.
반응형

체크박스를 투명하게 하기 위해서는 OnCtrlColor 을 재정의해서 사용하면 된다.

HBRUSH CTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
        HBRUSH hbr
= CDialog::OnCtlColor(pDC, pWnd, nCtlColor);

       
// TODO:  여기서 DC의 특성을 변경합니다.
       
int nRet = pWnd->GetDlgCtrlID();
       
if (nRet == IDC_CHECK_TIME_LIMIT)
       
{
                pDC
->SetBkMode(TRANSPARENT);
                hbr
= (HBRUSH)GetStockObject(NULL_BRUSH);
       
}
       
// TODO:  기본값이 적당하지 않으면 다른 브러시를 반환합니다.
       
return hbr;
}

하지만 이렇게 하게 되면, Windows XP 에서 테마를 사용한 PC 에서는 위와 같이 체크박스가 검게 변하는데

이를 해결하기 위해선 

SetWindowTheme( m_ctrlCheckTime, L"", L"");
을 Dialog 의 OnInitDialog 부분에 추가시켜준다. 
SetWindowTheme 를 사용하기 위해서는 프로젝트 속성에서 Linker Input 부분에 UxTheme.lib 라이브러리를 추가
반응형

댓글