bootingWin by reiven |
Static Control 배경을 투명화 시키는 방법을 알아봅시다.
윈도우에 WM_CTLCOLOR 메세지 처리함수(OnCtlColor)를 만들고 아래와 같이 입력하면 됩니다.
pDC->SetBkMode( TRANSPARENT ); return (HBRUSH) ::GetStockObject( NULL_BRUSH );
위와 같이 했을때, 배경 투명화가 안되는 경우는 리소스 뷰의 컨트롤 속성에서
Transparent 속성을 True로 해주면 투명화가 적용되는 걸 볼 수 있습니다.
위에 코드에서 원하는 컨트롤만 배경 투명화를 하고 싶을때는, 아래와 같이 해주면 됩니다.
if( pWnd->GetSafeHwnd() == GetDlgItem(컨트롤 ID)->m_hWnd ) { pDC->SetBkMode( TRANSPARENT ); return (HBRUSH) ::GetStockObject( NULL_BRUSH ); } else if( pWnd->GetSafeHwnd() == GetDlgItem(컨트롤 ID)->m_hWnd ) { }
Static Control을 투명화 시키고, SetWindowText로 글씨를 출력하면 글자의 겹침 현상이 일어나는데
이럴때는 SetWindowText로 글씨를 출력하기 전에 다음의 코드를 입력하여, Control의 영역을
무효화 시킨다음에 하시면 글씨를 출력하시면 됩니다.
CRect Rect; GetDlgItem(컨트롤 ID)->GetWindowRect(&Rect); ScreenToClient(&Rect); InvalidateRect(Rect); SetWindowText( 컨트롤 ID, 출력할 텍스트 );
'Programing > Windows' 카테고리의 다른 글
[Windows]Visual Studio 2005/2008에서 멀티코어 CPU를 활용한 Native C++ 컴파일 (0) | 2009.07.31 |
---|---|
Visual Studio에서 QT사용하기 (1) | 2009.07.30 |
Visual C++ CLR 사용하기 (0) | 2009.06.30 |
Com Library in C++ Builder - C++ 빌더에서 Com 라이브러리, .Net라이브러리 사용하는 방법 (0) | 2009.06.30 |
현재 프로세스의 경로 가져오기 (0) | 2009.06.16 |