Leaked source code of windows server 2003
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.2 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;
}