메뉴 바로가기

서브메뉴 바로가기

본문 바로가기

logo

C/C++/MFC

프로그램을 종료시킬 때 WM_DESTROY 활용하기

2006.05.23 13:23

WAT_운영자 조회 수:10949

WM_SYSCOMMAND라는 메세지 핸들러를 이용하여 아래와 같이 한다.


void CTestDlg::OnSysCommand(UINT nID, LPARAM lParam){
    if( nID==SC_CLOSE)
        MyBuffer=1;

    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }

    else
    {
        CDialog::OnSysCommand(nID, lParam);
    }

}

======================================

먼저 WM_SYSCOMMAND를 추가 해야 합니다.


간단하게 말하면 ( 다이얼로그베이스 프로그램 기준)
클래스 위저드에서 WM_SYSCOMMAND 이베트를 추가 해야 하는데 Message Map 에 아마 없을겁니다.

그러면 위저드의 Class Inof 탭으로 이동해서 Message filter 를 Dialog -> Window  로 바꾸고 Message Map 탭으로 돌아오면

WM_SYSCOMMAND 가 있을겁니다.. AddFunction 하면 아래 OnSysCommand 함수가 생길겁니다.


그안에서 nID 에 따라서 원하는 동작을 하시면 될겁니다.



void CxxxxDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
    CDialog::OnSysCommand(nID, lParam);
    if(nID == SC_MAXIMIZE)
    {
    }
    else if(nID == SC_CLOSE)
    {
    }
}