//======================================================================= // // Copyright (c) 2000 Microsoft Corporation. All Rights Reserved. // // File: EvtMsgWnd.cpp: implementation of the CEventMsgWindow class. // // Created by: Charles Ma // 6/18/1999 // //======================================================================= #include "stdafx.h" #include "EvtMsgWnd.h" #include "Update.h" #include #include ///////////////////////////////////////////////////////////////////////////// // CEventMsgWindow ///////////////////////////////////////////////////////////////////////////// // override method // // we need to create a popup window - a control can not create // a top-level child window // ///////////////////////////////////////////////////////////////////////////// void CEventMsgWindow::Create() { if (NULL == m_pControl) return; // // make the window size 1 pixel // RECT rcPos; rcPos.left = 0; rcPos.top = 0; rcPos.bottom = 1; rcPos.right = 1; // // call base class method, with WS_POPUP style // m_hWnd = CWindowImpl::Create(NULL, rcPos, _T("EventWindow"), WS_POPUP); } ///////////////////////////////////////////////////////////////////////////// // destroy the window ///////////////////////////////////////////////////////////////////////////// void CEventMsgWindow::Destroy() { if (NULL != m_hWnd) { m_hWnd = NULL; CWindowImpl::DestroyWindow(); } } ///////////////////////////////////////////////////////////////////////////// // message handlers ///////////////////////////////////////////////////////////////////////////// LRESULT CEventMsgWindow::OnFireEvent(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled) { #if defined(DBG) USES_CONVERSION; LOG_Block("OnFireEvent()"); LOG_Out(_T("Msg=%d"), uMsg); #endif // // if control is not passed in, we can not fire the event. return E_FAIL // pEventData pEvtData = NULL; if (NULL == m_pControl) { return E_FAIL; } switch (uMsg) { case UM_EVENT_ITEMSTART: // // this item is about to get downloaded // pEvtData = (pEventData)lParam; if (pEvtData) { // // about to start an item download/install // #if defined(DBG) LOG_Out(_T("About to fire event OnItemStart(%s, , %ld)"), OLE2T(pEvtData->bstrUuidOperation), pEvtData->lCommandRequest); LOG_XmlBSTR(pEvtData->bstrXmlData); #endif m_pControl->Fire_OnItemStart(pEvtData->bstrUuidOperation, pEvtData->bstrXmlData, // this is actually BSTR of an item &pEvtData->lCommandRequest); if (pEvtData->hevDoneWithMessage != NULL) SetEvent(pEvtData->hevDoneWithMessage); } break; case UM_EVENT_PROGRESS: // // dopwnlaod or install progress // pEvtData = (pEventData)lParam; #if defined(DBG) LOG_Out(_T("About to fire event OnProgress(%s, %d, %s, %ld)"), OLE2T(pEvtData->bstrUuidOperation), pEvtData->fItemCompleted, OLE2T(pEvtData->bstrProgress), pEvtData->lCommandRequest); #endif if (pEvtData) { m_pControl->Fire_OnProgress(pEvtData->bstrUuidOperation, pEvtData->fItemCompleted, pEvtData->bstrProgress, &pEvtData->lCommandRequest); if (pEvtData->hevDoneWithMessage != NULL) SetEvent(pEvtData->hevDoneWithMessage); } break; case UM_EVENT_COMPLETE: // // download or install operation complete // pEvtData = (pEventData)lParam; #if defined(DBG) LOG_Out(_T("About to fire event OnOperationComplete(%s, result)"), OLE2T(pEvtData->bstrUuidOperation)); LOG_XmlBSTR(pEvtData->bstrXmlData); #endif if (pEvtData) { m_pControl->Fire_OnOperationComplete(pEvtData->bstrUuidOperation, pEvtData->bstrXmlData); if (pEvtData->hevDoneWithMessage != NULL) SetEvent(pEvtData->hevDoneWithMessage); } break; case UM_EVENT_SELFUPDATE_COMPLETE: // // the lParam should be the error code // #if defined(DBG) LOG_Out(_T("About to fire event OnSelfUpdateComplete(%ld)"), (LONG)lParam); #endif m_pControl->Fire_OnSelfUpdateComplete((LONG)lParam); break; } return S_OK; }