달력

4

« 2024/4 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
2008. 5. 17. 15:13

프로그램 Alt+F4 감지 Programing/Windows Programing2008. 5. 17. 15:13

프로그램에서 Alt+F4를 입력받으면
중간에 어떠한 일을 수행하고 종료를 해야 하는 경우가 있다
그 때 Alt+F4 를 감지해서 특정 일을 수행 한 후 종료하게 하려면
다음과 같이 작성해라

BOOL CDirectVideoDialog::PreTranslateMessage(MSG* pMsg)
{
    // 중간 생략
    if(pMsg->message == WM_SYSKEYDOWN && pMsg->wParam == VK_F4) 
    {
        if (::GetKeyState(VK_MENU) < 0)
        {
             //여기에 할 일을 작성
             return TRUE;
        }
    }
    // 중간 생략
}

PreTranslateMessage에서 감지 하여도 되지만

WM_SYSCOMMAND에서도 처리할 수 있습니다.
아래와 같이 하면 프로그램 오른쪽 위에 있는 닫기 버튼에 대해서도 닫기가 안되도록 처리 할  수있고
Alt+F4에 대해서도 그리고 메뉴->닫기 에 대해서도 처리할 수 있습니다.

void CMyDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
   if( nID == SC_CLOSE )
   {
        // 할일 작성
        return;
   }
    if ((nID & 0xFFF0) == IDM_ABOUTBOX)
    {
        CAboutDlg dlgAbout;
        dlgAbout.DoModal();
    }
    else
    {
        CDialog::OnSysCommand(nID, lParam);
    } 
}

출처 : Devpia

:
Posted by Lunaness