mirror of https://github.com/tongzx/nt5src
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
162 lines
4.0 KiB
162 lines
4.0 KiB
//=======================================================================
|
|
//
|
|
// 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 <logging.h>
|
|
#include <atlwin.cpp>
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// 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<CEventMsgWindow>::Create(NULL, rcPos, _T("EventWindow"), WS_POPUP);
|
|
}
|
|
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// destroy the window
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
void CEventMsgWindow::Destroy()
|
|
{
|
|
if (NULL != m_hWnd)
|
|
{
|
|
m_hWnd = NULL;
|
|
CWindowImpl<CEventMsgWindow>::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, <item>, %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;
|
|
}
|