2025-11-27 16:46:48 +09:00

159 lines
4.8 KiB
C++

// ==========================================================================
// Class Specification : COXRegistryWatchNotifier
// ==========================================================================
// Header File : OXRegistryWatchNotifier.h
// Version: 9.3
// //////////////////////////////////////////////////////////////////////////
// Properties :
// NO Abstract class (does not have any objects)
// YES Derived from CObject
// NO Is a Cwnd.
// NO Two stage creation (constructor & Create())
// NO Has a message map
// NO Needs a resource (template)
// NO Persistent objects (saveable on disk)
// NO Uses exceptions
// //////////////////////////////////////////////////////////////////////////
// Description :
// This class encapsulates the notification parameters.
// When you specify a Registry key to watch for and window to receive notification message,
// you can specify some additional parameters for this watch: type of changes to be reported,
// whether or not subkeys should be watched as well, etc. All these parameters are encapsulated
// in COXRegistryWatchNotifier class that can be used for its retrieving.
// Example :
// COXRegistryWatchNotifier RegWatchNotifier;
// ...
// ::RegNotifyChangeKeyValue(RegWatchNotifier.GetRegKey(), RegWatchNotifier.GetWatchSubtree(),
// RegWatchNotifier.GetWatchFilter(), (HANDLE)RegWatchNotifier.GetEvent());
// Remark :
// COXRegistryWatcher class has a "watch queue" of COXRegistryWatchNotifier objects. Each of these
// notifiers has its own unique ID, that can be retrieved by COXRegistryWatchNotifier::GetWatchID().
// Prerequisites (necessary conditions):
/////////////////////////////////////////////////////////////////////////////
#ifndef __OXREGISTRYWATCHNOTIFIER_H__
#define __OXREGISTRYWATCHNOTIFIER_H__
#if _MSC_VER >= 1000
#pragma once
#endif // _MSC_VER >= 1000
#include "OXDllExt.h"
#include <afxmt.h>
class OX_CLASS_DECL COXRegistryWatchNotifier : public CObject
{
friend class COXRegistryWatcher;
// Data members -------------------------------------------------------------
public:
protected:
BOOL m_bPost;
BOOL m_bWatchSubtree;
DWORD m_dwNotifyFilter;
DWORD m_dwID;
HKEY m_hWatchKey;
HWND m_hWndDst;
CEvent* m_phWatchEvent;
CTime m_tNotificationTime;
private:
// Member functions ---------------------------------------------------------
public:
COXRegistryWatchNotifier();
// --- In :
// --- Out :
// --- Returns :
// --- Effect : Constructs the COXRegistryWatchNotifier object and initializes members.
CTime GetNotificationTime() const;
// --- In :
// --- Out :
// --- Returns : Notification time.
// --- Effect : Returns the time when the notification was received.
HKEY GetRegKey() const;
// --- In :
// --- Out :
// --- Returns : Registry key handle.
// --- Effect : Returns the original key specification that is being watch.
BOOL GetWatchSubtree() const;
// --- In :
// --- Out :
// --- Returns : Subtrees watch flag.
// --- Effect : Returns whether subtrees are being watched.
DWORD GetWatchFilter() const;
// --- In :
// --- Out :
// --- Returns : Watch filter - combination of flags that control which changes should be
// reported. Flags are described in the "Data members - public:" section
// of COXRegistryWatcher Class Specification.
// --- Effect : Returns the watch filter that is being used.
DWORD GetWatchID() const;
// --- In :
// --- Out :
// --- Returns : Watch notifier ID (>0), or 0 - if this notifier is not initialized
// in "watch queue" of COXRegistryWatcher.
// --- Effect : Returns the watch notifier ID.
CEvent* GetEvent() const;
// --- In :
// --- Out :
// --- Returns : Pointer to CEvent object that represents notification event.
// --- Effect : Retrieves the Registry notification event. When Registry key is changed,
// this event is signaled.
CWnd* GetWndDst() const;
// --- In :
// --- Out :
// --- Returns : Pointer to CWnd object that represents receiving window.
// --- Effect : Returns the window that receives the notification message.
BOOL GetPost() const;
// --- In :
// --- Out :
// --- Returns : If TRUE, notification message is posted to a window, if FALSE, message sent.
// --- Effect : Returns whether notification message posted or sent to a window.
COXRegistryWatchNotifier& operator=(const COXRegistryWatchNotifier& RegistryWatchNotifier);
// --- In : RegistryWatchNotifier : source object.
// --- Out :
// --- Returns :
// --- Effect : Assignment operator.
protected:
void SetMembers(HKEY hWatchKey, BOOL bWatchSubtree, DWORD dwNotifyFilter, CEvent* phWatchEvent, DWORD dwID);
void SetNotificationTime();
void SetPost(BOOL bPost);
void SetWndDst(CWnd* pWndDst);
private:
};
// Include inline functions
#include "OXRegistryWatchNotifier.inl"
#endif // __OXREGISTRYWATCHNOTIFIER_H__
// //////////////////////////////////////////////////////////////////////////