kyuseo의 게임 프로그래밍
WM_ACTIVATEAPP, WM_ACTIVATE, WM_SETFOCUS, WM_KILLFOCUS 을 잘 보여주는 프로그램 본문
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" ); } |