RegistryNotifyC.h

/****************************************************************************/

/**                                                                        **/

/** Copyright (c) 2005 Diodia Software          (http://www.diodia.com/)   **/

/**                                                                        **/

/** Use in any form with or without modification for commercial and non-   **/

/** commercial purposes is permitted.                                      **/

/**                                                                        **/

/****************************************************************************/

#ifndef REGISTRYNOTIFYC_H_INCLUDED

#define REGISTRYNOTIFYC_H_INCLUDED

 

#include <string>

#include <list>

 

#include "RegistryNotify.h"

 

struct OneRegHandlerC

{

                OneRegHandlerC(HKEY MainKey, const char *SubKey, const char *Name, RegistryNotifyHandlerI *Handler);

               ~OneRegHandlerC();

 

   void         CheckValue();

   void         Reset();

 

   int          mId;

   HKEY         mMainKey;

   std::string  mSubKey;

   std::string  mName;

   char        *mValue;

   int          mSize;

   RegistryNotifyHandlerI *mHandler;

   HANDLE       mNotifyEvent;

   HKEY         mKey;

   bool         mChanged;

};

 

typedef std::list<OneRegHandlerC *> RegHandlerListC;

 

class RegistryNotifyC : public RegistryNotifyI

{

 public:

                RegistryNotifyC();

   virtual     ~RegistryNotifyC();

 

 public:

   virtual int  AddHandler(HKEY MainKey, const char *SubKey, const char *Name, RegistryNotifyHandlerI *Handler);

   virtual void RemoveHandler(int Id);

 

 protected:

   RegHandlerListC mHandlers;

   int          mNextId;

   HANDLE       mThread;

   DWORD        mThreadId;

   HANDLE       mUpdate;

   HANDLE       mTerminate;

   HANDLE       mMutex;

 

 protected:

   static DWORD WINAPI _ThreadProc(RegistryNotifyC *RegistryNotify);

   static void CALLBACK _RegistryNotifyTimer(HWND hWnd, UINT Msg, UINT EventId, DWORD Time);

   void         ThreadProc();

   void         StartTimer();

   void         StopTimer();

   void         HandleEvents();

};

 

#endif

 





Source Files
   Commands.cpp
   Context.cpp
   CreatePath.cpp
   DateParser.cpp
   DlgEditFeedC.cpp
   DlgManageFeedsC.cpp
   Hook.cpp
   Iso8601.cpp
   MsXmlMisc.cpp
   MsXmlSelect.cpp
   RegistryNotify.cpp
   RegistryUtil.cpp
   RSS.cpp
   RSS.def
   RSS.idl
   RssAction.cpp
   RssDownloader.cpp
   RssFeed.cpp
   RssHelpers.cpp
   RssInit.cpp
   RssItem.cpp
   RssMultiFeed.cpp
   RssTimer.cpp
   RssXml.cpp
   StdAfx.cpp

Header Files
   Commands.h
   ContextC.h
   DateParser.h
   DlgEditFeedC.h
   DlgManageFeedsC.h
   Helper.h
   HookC.h
   RegistryNotify.h
   RegistryNotifyC.h
   Resource.h
   RssDownloaderC.h
   RssFeedC.h
   RssHelpers.h
   RssItemC.h
   RssMultiFeedC.h
   StdAfx.h
   ThreadObject.h
   XmlHelpers.h

Resource Files
   about.htm
   DiodiaLogoSmall.gif
   logo.bmp
   manifest.xml
   read.bmp
   RSS.rc
   RSS.rgs
   ToolBandLayout.xml
 

© 2002-2008 Diodia Software