투명 대화 상자를 만들고 싶습니다. 내가있는 CDialog 파생 클래스에서 OnCtlColor 메시지를 캡처 ...이 코드입니다 : 그것은 모든 컨트롤에 대해 잘 작동하지만그룹 상자 텍스트 배경을 투명하게 만드는 방법
HBRUSH CMyDialog::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
if(bSetBkTransparent_)
{
pDC->SetBkMode(TRANSPARENT);
hbr = (HBRUSH)GetStockObject(NULL_BRUSH);
}
return hbr;
}
그룹 상자 (CStatic의). 모든 레이블 (CStatic)은 투명한 텍스트 배경으로 칠해졌지만 그룹 상자의 텍스트는 투명하지 않습니다.
나는 이미 이것을 봤지만 해결책을 찾지 못했습니다. 아무도 진짜 투명한 그룹 박스를 만드는 법을 알고 있습니까?
그런데 저는 Windows XP에서 일하고 있습니다. 또한 응용 프로그램이 다른 OS로 마이그레이션되는 경우 코드를 변경하지 않아도되도록 컨트롤을 완전히 그려야합니다.
감사합니다,
하비에르
참고 : 나는 그것을 투명하게 할 필요가 없습니다 그래서 나는 마지막으로 대화를 변경했습니다. 어쨌든 누군가가 여전히 그것을하려고하기 때문에이 정보를 추가합니다. groupbox는 CStatic이 아니라 CButton입니다 (새로운 것은 아님). Windows XP 테마를 Windows classic으로 변경 한 후 그룹 박스 backgraund는 투명했습니다. 나쁜 점은이 경우 텍스트 프레임 아래에 프레임 선이 표시된다는 것입니다. 누군가가이 접근법을 따르고 있다면 Adzm의 조언을 따르는 것이 더 나을 것입니다.
나는 매우 빠른 테스트에서 이것을 시도해 보았고 그룹 상자 텍스트는 투명했다 (그룹 상자조차도 텍스트 아래에 보일 정도로). 아마도 위의 코드에 문제가 없습니다. 빠른 데모 테스트 프로그램을 사용해보십시오. – DavidK