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

51 lines
1.5 KiB
C++

#ifndef _INETNOT_H
#define _INETNOT_H
//+-------------------------------------------------------------------------
// Wininet currently only support sending notifications of changes to the
// cache to one window. This class creates one top-level window per process
// for receiving and re-broadcasting these notifications. When the
// process shuts down, we look for another window to take over these
// messages.
//
// This is an imperfect solution. It would have been much easier if the
// wininet guys could have been convinced to call SHChangeNotify instead.
// However, they are planning to enhace this later. (stevepro))
//--------------------------------------------------------------------------
class CWinInetNotify
{
public:
CWinInetNotify();
~CWinInetNotify();
void Enable(BOOL fEnable = TRUE);
static void GlobalEnable();
static void GlobalDisable();
protected:
void _EnterMutex();
void _LeaveMutex();
static void _HookInetNotifications(HWND hwnd);
static void _OnNotify(DWORD_PTR dwFlags);
static LRESULT CALLBACK _WndProc(HWND hwnd, UINT uMessage, WPARAM wParam, LPARAM lParam);
static BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam);
enum
{
CWM_WININETNOTIFY = WM_USER + 410
};
HANDLE _hMutex;
BOOL _fEnabled;
static HWND s_hwnd;
static ULONG s_ulEnabled;
static CWinInetNotify* s_pWinInetNotify;
};
#define CWinInetNotify_szWindowClass TEXT("Inet Notify_Hidden")
#endif //_INETNOT_H