66 lines
2.6 KiB
C
66 lines
2.6 KiB
C
|
// --------------------------------------------------------------------------
|
||
|
// Module Name: MessageBroadcast.h
|
||
|
//
|
||
|
// Copyright (c) 2000, Microsoft Corporation
|
||
|
//
|
||
|
// Class to manager sending or posting messages to windows to tell them that
|
||
|
// things have changed.
|
||
|
//
|
||
|
// History: 2000-11-11 vtan created (split from services.cpp)
|
||
|
// --------------------------------------------------------------------------
|
||
|
#ifndef _MessageBroadcast_
|
||
|
#define _MessageBroadcast_
|
||
|
// --------------------------------------------------------------------------
|
||
|
#include "SimpStr.h"
|
||
|
// --------------------------------------------------------------------------
|
||
|
enum MSG_TYPE
|
||
|
{
|
||
|
MT_SIMPLE,
|
||
|
MT_ALLTHREADS, // send at least one msg to each thread/window in system
|
||
|
MT_FILTERED, // by processid, HWND, exclude
|
||
|
};
|
||
|
// --------------------------------------------------------------------------
|
||
|
class CThemeFile; // forward
|
||
|
// --------------------------------------------------------------------------
|
||
|
// CMessageBroadcast
|
||
|
//
|
||
|
// Purpose: Class used internally to assist with message sending which
|
||
|
// must be done on the client side on behalf of the server.
|
||
|
//
|
||
|
// History: 2000-11-09 vtan created
|
||
|
// --------------------------------------------------------------------------
|
||
|
|
||
|
class CMessageBroadcast
|
||
|
{
|
||
|
public:
|
||
|
CMessageBroadcast (BOOL fAllDesktops=TRUE);
|
||
|
~CMessageBroadcast (void);
|
||
|
|
||
|
void PostSimpleMsg(UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
void PostAllThreadsMsg(UINT msg, WPARAM wParam, LPARAM lParam);
|
||
|
|
||
|
void PostFilteredMsg(UINT msg, WPARAM wParam, LPARAM lParam,
|
||
|
HWND hwndTarget, BOOL fProcess, BOOL fExclude);
|
||
|
|
||
|
private:
|
||
|
static BOOL CALLBACK DesktopCallBack(LPTSTR lpszDesktop, LPARAM lParam);
|
||
|
static BOOL CALLBACK TopWindowCallBack(HWND hwnd, LPARAM lParam);
|
||
|
static BOOL CALLBACK ChildWindowCallBack(HWND hwnd, LPARAM lParam);
|
||
|
void Worker(HWND hwnd);
|
||
|
void EnumRequestedWindows();
|
||
|
|
||
|
|
||
|
private:
|
||
|
MSG _msg;
|
||
|
HWND _hwnd;
|
||
|
DWORD _dwProcessID;
|
||
|
BOOL _fExclude;
|
||
|
MSG_TYPE _eMsgType;
|
||
|
BOOL _fAllDesktops;
|
||
|
CSimpleArray<DWORD> _ThreadsProcessed;
|
||
|
|
||
|
};
|
||
|
|
||
|
#endif /* _MessageBroadcast_ */
|
||
|
|