문제

시스템이 절전 모드로 들어갈 때 WM_PowerBroadcast 메시지를 잡으려고합니다.

나는 좋아한다 :

BOOL CPowManApp::PreTranslateMessage(MSG* pMsg) 
{
    if(pMsg->message == WM_POWERBROADCAST || pMsg->message == WM_POWER)
    {
        CString strMessage;

        strMessage.Format(_T("%d WM_POWERB%s wParam %x lParam %x"),
                         pMsg->time,
                         pMsg->message == WM_POWER?_T(""):_T("BRAODCAST"),
                         pMsg->wParam,
                         pMsg->lParam);

        OutputDebugString(strMessage);
    }

    return CWinApp::PreTranslateMessage(pMsg);
}

단순히 작동하지 않습니다. 한편 Win32 앱은 잘 작동합니다. 메시지 핸들러를 DLG 클래스에 헛되이 넣으려고했습니다.

VS6.0으로 앱을 작성하고 있습니다. 내가 어디에 틀렸어?

도움이 되었습니까?

해결책

메시지 맵에서

ON_MESSAGE( WM_POWERBROADCAST, OnPowerBroadcast )

구현

LRESULT CDialogDlg::OnPowerBroadcast(WPARAM wParam, LPARAM lParam)
{
    switch (wParam)
    {
        case PBT_...
    }
}

확인하십시오 MSDN WPARAM 값 주변의 일부 OS- 특이 사례.

다른 팁

이 메시지의 문서는 구체적으로 말한다:

창은 WindowProc 함수를 통해이 메시지를받습니다.

메인 창 에서이 메소드를 덮어 쓰려고 했습니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top