본문 바로가기

# IT, Computer Science/MFC, API

MFC 다이얼로그 배경색 지정, 투명하게 만들기

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1. MFC 다이얼로그 배경색 지정(흰색 만들기 예제)


WM_ERASEBKGND
메세지에서 

CRect rt; GetClientRect(rt);// 클라이언트 영역의 크기 계산 pDC->FillSolidRect(rt, RGB(255, 255, 255));// 클라이언트 영역 크기만큼 흰색으로 채운다. return TRUE;// 상위 클래스의 OnEraseBkgnd 함수를 호출하지 않아야 바꾼 배경색이 적용된다. return CDialogEx::OnEraseBkgnd(pDC);

 


2. MFC 다이얼로그 투명하게 - 1



  LONG ExtendedStyle = GetWindowLong( GetSafeHwnd(), GWL_EXSTYLE );

  SetWindowLong( GetSafeHwnd(), GWL_EXSTYLE,ExtendedStyle | WS_EX_LAYERED );  


  BYTE byAlphaValue = 128;  // 0 ~ 255(Transparent Range)


  ::SetLayeredWindowAttributes( GetSafeHwnd(),0, byAlphaValue, LWA_ALPHA );





3. MFC 다이얼로그 투명하게 - 2



//MFC의 CDialog를 상속한 다이얼로그에서 작성시에는 //GetSafeHwnd() 함수를 호출하는 인수를 생략하면 된다. //ex) GetWindowLong( GetSafeHwnd(), GWL_EXSTYLE ); => GetWindowLong(GWL_EXSTYLE );
//확장 스타일 WS_EX_LAYERED 을 등록한다. LONG ExtendedStyle = GetWindowLong( GetSafeHwnd(), GWL_EXSTYLE ); SetWindowLong( GetSafeHwnd(), GWL_EXSTYLE, ExtendedStyle | WS_EX_LAYERED); //투명도 설정 => 이 값에 따라 alpha 값이변경된다. double TransparencyPercentage = 50.0; //투명 alpha 값을 설정한다. // 0은 완전 투명이고 255는불투명이다. double fAlpha = TransparencyPercentage * (255.0 / 100 ); BYTE byAlpha = static_cast<BYTE>( fAlpha ); ::SetLayeredWindowAttributes( GetSafeHwnd(), 0, byAlpha, LWA_ALPHA );





출처 :
http://i0nucleus.egloos.com/3022328
http://heart4u.co.kr/tblog/12