다이얼로그에서 사용하는 static text의 배경색을 투명하게 하는 방법입니다.
다이얼로그의 OnCtlColor를 아래와 같이 재정의합니다.
다이얼로그의 배경으로 이미지를 넣었는데...
![](https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_urus1PEQjJTp15aHGrTJebSqANhO5gjljzxBFpyZJqWU45mELWup8JZvWWR7t-Vg7As8y5Uapm1DX122By-gVfqFAXJDHyKXcVBxsA2-gBVsyC9VQfYk5qVPTcTje8RUn37adRgsDZlOcUy52cVBDCpsJ2N4a_eRghdnTIaeh1=s0-d)
왼쪽 부분은 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;
}