windows-nt/Source/XPSP1/NT/shell/themes/uxtheme/messagebroadcast.h
2020-09-26 16:20:57 +08:00

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_ */