2010-03-08 3 views
0

WM_POWERBROADCAST을 처리하려는 ATL 응용 프로그램이 있습니다. 나는 그 핸들러를 정의한 MSG_MAP의 CMainDlg (CAxDialogImpl)를 가지고있다.ATL 응용 프로그램의 CMainDlg에 대한 WM_POWERBROADCAST 처리기가 호출되지 않습니다.

BEGIN_MSG_MAP(CMainDlg) 
    ... 
    MESSAGE_HANDLER(WM_POWERBROADCAST, OnPowerChange) 
    ... 
END_MSG_MAP() 

그러나 핸들러는 호출해야하는 작업 (예 : 전원 설정 변경 또는 시스템 절전)을 호출 할 때 호출되지 않습니다.

무슨 일이 벌어지고 있는지, 그리고 어떻게 해결할 지에 대한 아이디어가 있으십니까? 어떤 이유로 CMainDlg에 전원 이벤트가 통지되지 않습니까?

답변

0

대화 상자가 최상위 창 (WS_POPUP 스타일)이 아닌 것으로 의심됩니다.

WM_POWERBROADCAST가 AC 플러그/플러그되지 않은 상태에서 (등록없이) 수신 된 WTL AppWizard 비 모달 대화 상자 응용 프로그램에서만 테스트되었습니다.

0

전원 이벤트를 수신하기 위해 register을 수신 했습니까?

+0

아, 설정 변경에 대해 이렇게해야 할 필요가있는 것 같습니다. PBT_APMSUSPEND에만 관심이 있다면? 설명서는 WM_POWERBROADCAST를 받아야한다고 제안하는 것 같지만 그렇지 않습니다. 아십니까? – psychotik

+0

또한이 기능은 Vista + 전용 인 것 같습니다 ... – psychotik

0

위의 답변에 추가하려면 Spy ++ 도구를 사용하여 원하는 메시지가 처음에 응용 프로그램에 게시되도록 할 수 있습니다. 또한 게시 된 창과이 메시지를 기다리는 창인 경우를 볼 수 있습니다.

관련 문제