kyuseo의 게임 프로그래밍

WM_ACTIVATEAPP, WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS 을 잘 보여주는 프로그램 본문

C++ 개발

WM_ACTIVATEAPP, WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS 을 잘 보여주는 프로그램

kyuseo 2007. 10. 24. 20:02

개요..

 

윈도우와 컨트롤의 WM_ACTIVATEAPP, WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS 등의 발생시기를 잘 보여주는 프로그램입니다.

 

게임에서 사용자가 Alt Tab과 같은 작동을 할 경우 자신의 어플리케이션이 활성화 되었는지(Active), 활성화 되지 않은지(Inactive)에 따라서 사운드, 화면(풀스크린) 복구 작업을 하기 때문에 그 정확한 시점을 테스트 해보고자 만들어 보았습니다.

 

다운로드

 

 

 

코드

 

    ON_EN_SETFOCUS(IDC_EDIT1, OnSetfocusEdit1)

    ON_EN_KILLFOCUS(IDC_EDIT1, OnKillfocusEdit1)

    ON_EN_KILLFOCUS(IDC_EDIT2, OnKillfocusEdit2)

    ON_EN_SETFOCUS(IDC_EDIT2, OnSetfocusEdit2)

    ON_EN_KILLFOCUS(IDC_EDIT3, OnKillfocusEdit3)

    ON_EN_SETFOCUS(IDC_EDIT3, OnSetfocusEdit3)

    ON_WM_ACTIVATEAPP()

    ON_WM_ACTIVATE()

 

//----------- OnActivateApp

void CActiveAndFocusDlg::OnActivateApp(BOOL bActive, HTASK hTask)

{

    CDialog::OnActivateApp(bActive, hTask);

    

    if( bActive == TRUE )    SetDlgItemText( IDC_EDIT_ACTIVEAPP, "활성화Yes" );

    else                SetDlgItemText( IDC_EDIT_ACTIVEAPP, "활성화No" );

}

 

//----------- OnActivate

void CActiveAndFocusDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)

{

    CDialog::OnActivate(nState, pWndOther, bMinimized);

    

    if( nState == WA_INACTIVE )        SetDlgItemText( IDC_EDIT_ACTIVE, "nState == WA_INACTIVE" );

    else if( nState == WA_ACTIVE )    SetDlgItemText( IDC_EDIT_ACTIVE, "nState == WA_ACTIVE" );

    else if( nState == WA_CLICKACTIVE ) SetDlgItemText( IDC_EDIT_ACTIVE, "nState == WA_CLICKACTIVE" );

}

 

//----------- 버튼

void CActiveAndFocusDlg::OnSetfocusEdit1()

{

    SetDlgItemText( IDC_EDIT1, "포커스O" );

}

void CActiveAndFocusDlg::OnKillfocusEdit1()

{

    SetDlgItemText( IDC_EDIT1, "포커스X" );

}

 

//----------- 버튼

void CActiveAndFocusDlg::OnSetfocusEdit2()

{

    SetDlgItemText( IDC_EDIT2, "포커스O" );

}

void CActiveAndFocusDlg::OnKillfocusEdit2()

{

    SetDlgItemText( IDC_EDIT2, "포커스X" );

}

 

//----------- 버튼

void CActiveAndFocusDlg::OnSetfocusEdit3()

{

    SetDlgItemText( IDC_EDIT3, "포커스O" );

}

void CActiveAndFocusDlg::OnKillfocusEdit3()

{

    SetDlgItemText( IDC_EDIT3, "포커스X" );

}