최소화 버튼을 누르거나 다른 창을 열어서 다이얼로그가 닫힌(비활성화) 경우,
비활성화 상태에서 Alt+Tab이나 작업 표시줄 클릭으로 다이얼로그가 다시 열린 경우,
아니면 다른 창에 반쯤 가려져 있는 상태에서 마우스로 클릭하여 활성화 시킨 경우 등등....
다이얼로그의 포커스 변화를 감지해야 할 경우 아래와 같이 해 보세요.
1. WM_ACTIVATE 메시지 처리기 추가
2. Parameter로 넘어오는 nState 값을 확인
void CMyDlg::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
switch(nState)
{
case WA_INACTIVE : //(0) 포커스를 잃었을 때
case WA_ACTIVE : //(1) 포커스를 얻었을 때 (마우스 클릭으로 포커스 얻은 경우 제외)
case WA_CLICKACTIVE : //(2) 마우스 클릭으로 포커스를 얻을 때
}
}
API인 경우에는 wParam 값으로 상태를 알 수 있습니다.
INT active = LOWORD(wParam);
switch(active)
{
case WA_INACTIVE: break;
case WA_ACTIVE: break;
case WA_CLICKACTIVE: break;
}