윈도우 모바일에서 X버튼은 프로그램을 SDI 혹은 MDI 으로 만들어야만 보여집니다.
(물론 직접 시스템 메뉴를 넣는다면 다이얼로그에서도 보여집니다.)

언제나 간단한 프로그램만 만들던 저에겐 다이얼로그 기반으로 만든 프로그램에서 OK 버튼 처리는 매우 쉬운 문제였습니다.
단지 OnOK() 함수를 오버라이드 하면 되니까요.

하지만 SDI 에서 X버튼은 조금 다릅니다.
아니 윈도우 모바일에서 다르다는말이 맞겠군요.

일반 Windows 플랫폼의 MFC 프로그램에서는 X버튼에 대한 처리는 OnClose() 에서 오버라이드해서 처리해주면 됩니다.

하지만 윈도우 모바일에서는 X버튼을 누를 경우 다르게 동작합니다.

일단 기본적으로 윈도우 모바일에서 X버튼은 프로그램을 백그라운드로 돌려버립니다.

그런 다음에 WM_SIZE 메세지가 호출됩니다. (물론 WM_CLOSE 나 WM_DESTROY 메세지는 호출되지 않습니다)

그래서 X버튼을 눌러서 프로그램을 종료하려면 WM_SIZE 의 메세지를 받아서 다음과 같이 처리하면 됩니다.
(MainFrame 에서 처리해야합니다.)

하지만 종료할때 사용자에게 물어봐야할 경우라면?

이미 윈도우는 백그라운드로 바뀐 상태에서 WM_SIZE 메세지를 타기 때문에 메세지 박스가 표시되지 않습니다.

그래서 꽁수로 백그라운드를 못하게끔 처리하는것입니다. -_-;

뭔가 정석이 있을것 같은데 해도 해도 안되길래 이런 꽁수를 생각했습니다.

그럼 이만.. .

+ Recent posts