본문 바로가기

PostMessage

타이틀바가 없는 다이얼로그의 이동 타이틀바가 없는 다이얼로그 또는 타이틀바가 아니라 다른 부분을 클릭해도 다이얼로그의 이동이 가능하게 해야 할 경우 다음과 같이 OnLButtonDown() 내에서 PostMessage를 이용하여 다음과 같은 메시지를 발생시키면 이동이 가능하다. PostMessage(WM_NCLBUTTONDOWN, HTCAPTION, MAKELPARAM(point.x, point.y)); WM_NCLBUTTONDOWN은 wParam으로 주어진 곳의 클라이언트을 클릭했다고 하더라도 클라이언트 영역이 아닌 곳을 클릭한 것과 같은 효과를 주며 wParam이 HTCAPTION이므로 클라이언트 영역을 클릭했어도 타이틀바를 클릭한 것과 같은 효과를 주는 것이다. wParam으로 가능한 여러가지 값들은 다음과 같다. HTTOP : 크.. 더보기
다이얼로그 기반 프로그램에서 실행과 동시에 다이얼로그 감추기 다이얼로그를 domodal로 띄울 때 실행과 동시에 다이얼로그를 트레이로 내리거나 감추어야 할 경우 일반적으로 사용하는 방법으로 윈도우를 보이지 않게 하려면 ShowWindow(FALSE); 와 같이 하면 되지만 다이얼로그 기반의 프로그램에서는 DoModal 함수가 내부적으로 WM_SHOWWINDOW 메시지를 사용하여 윈도우를 띄워버리기 때문에 OnInitalDialog나 OnCreate 처리기에서 인위적으로 ShowWindow(SW_HIDE); 라고 코딩을 해놓아도 해당 작업이 무시되어 버린다. 이러한 문제가 발생하는 이유는 DoModal 함수가 내부적으로 메시지 루프를 형성하기 직전에 SendMessage를 이용하여 대화상자를 출력시키는 방법을 사용하기 때문이다. SendMessage를 보낸 쪽은 받.. 더보기