다이얼로그에서 사용하는 static text의 배경색을 투명하게 하는 방법입니다.
다이얼로그의 OnCtlColor를 아래와 같이 재정의합니다.
다이얼로그의 배경으로 이미지를 넣었는데...
왼쪽 부분은 static text의 배경을 투명하게 하지 않은 것이고,
오른쪽 부분은 배경으로 투명하게 한것입니다.
오른쪽의 것이 훨씬 보기 좋죠?
다이얼로그의 OnCtlColor를 아래와 같이 재정의합니다.
HBRUSH COutstandingOptionDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr;
const UINT nID = pWnd->GetDlgCtrlID();
if(nCtlColor == CTLCOLOR_STATIC)
{
pDC->SetBkMode(TRANSPARENT); /// 배경을 투명하게
hbr = (HBRUSH)::GetStockObject(NULL_BRUSH);
}
else
{
hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
}
return hbr;
}
이것으로 투명한 static text를 만들수 있습니다.다이얼로그의 배경으로 이미지를 넣었는데...
왼쪽 부분은 static text의 배경을 투명하게 하지 않은 것이고,
오른쪽 부분은 배경으로 투명하게 한것입니다.
오른쪽의 것이 훨씬 보기 좋죠?
Oreo 2010/07/23 23:44 답글 | 수정 | 삭제 | 차단
답글삭제다이얼로그 배경에 이미지 어떻게 넣으신거죠?
Picture Control인가요?
행복사냥 2010/07/27 22:17 답글 | 수정 | 삭제
저 같은 경우는 비트맵을 리소스에 추가하여 화면에 직접 그려줬습니다.
BOOL COutstandingOptionDlg::OnEraseBkgnd(CDC* pDC)
{
CBitmap m_bitmap;
BOOL rVal = FALSE; //CWizardPage_Base::OnEraseBkgnd(pDC);
if( m_bitmap.LoadBitmap( IDB_BG_03 ) )
{
CRect rect;
GetClientRect( &rect );
CDC dc;
dc.CreateCompatibleDC( pDC );
CBitmap* pOldBitmap = dc.SelectObject( &m_bitmap );
pDC->BitBlt( 0, 0, rect.Width(), rect.Height(), &dc, 0, 0, SRCCOPY);
dc.SelectObject(pOldBitmap);
rVal = TRUE;
}
return rVal;
}