기본적으로는 리소스 뷰에서 다이얼로그의 설정을 적당히 바꾸면 항상 위 설정과 프로그램 투명도를 바꿀 수 있긴 하다. 하지만 프로그램 내에서 자유롭게 설정을 바꿀 수 있게 하려면 다음과 같은 방법을 취하면 된다.
1. topmost(항상 위)
체크박스로 TOPMOST를 설정 및 해제하는 예시이다. SetWindowPos를 이용하여(앞에 '::'를 붙여야한다.) HWND_TOPMOST를 설정해주고, 해제할 때에는 HWND_NOTOPMOST를 설정해주면 간단하게 오케이! 뒤의 SWP_NOMOVE|SWP_NOSIZE|SWP_SHOWWINDOW는 창을 움직이지 않고, 사이즈를 변경하지 않으며, 창은 띄우라는 의미로 저렇게 설정하였는데 더 축약시켜서 보기좋게 쓰는 방법이 있을 거라고 본다.
2. 투명도 조절
투명도 조절은 Layered window만 가능하도록 되어있다. 그러므로 윈도우의 스타일을 수정해 주어야 한다. 해당 스타일은 GWL_EXSTYLE부분에 있으므로 SetWindowLong과 GetWindowLong을 잘 조합하여 설정해 준다.
Layered window로 스타일을 바꿔 주었다면 SetLayerdWindowAttributes를 통해 투명도 설정이 가능하다. 두번째 인자는 컬러 키를 이용한 투명화를 해야할 때 사용되는데, 필자는 전체 창의 투명도를 바꿔야 하므로 NULL로 지정했다. 세번째 인자는 투명도 값이며 0~255의 범위를 가진다. 네번째 인자는 전체 창 투명도를 조작할 지, 컬러키 투명도를 조작할 지 플래그를 지정한다.
적당히 값을 넣어주면 다음과 같은 화면을 볼 수 있다.
예전에 현재 프로그램의 투명도를 바꿔 VS위에 겹쳐놓고 업무시간에 딴짓할 때 쓰는 프로그램을 짰던 기억이 새록새록하다.
참고자료
MSDN, "SetWindowPos function". http://msdn.microsoft.com/ko-kr/library/ms633545.aspx
MSDN, "Layered Windows". http://msdn.microsoft.com/en-us/library/ms997507.aspx
MSDN, "SetLayeredWindowAttributes function". http://msdn.microsoft.com/en-us/library/windows/desktop/ms633540(v=vs.85).aspx
'Programming > MFC' 카테고리의 다른 글
[일지][MFC] Rich Edit 2.0 / Progress Bar / HTTP / ZIP (0) | 2016.12.23 |
---|---|
[MFC] List Control 이용하기 (3) | 2014.02.05 |
[MFC] 연속된 다수의 컨트롤 이벤트 처리기 (2) | 2014.02.05 |
[MFC] editbox 글자 크기 변경 (3) | 2014.02.03 |
[140107화] MFC 시작 (3) | 2014.01.07 |