Home | History | Annotate | Download | only in Windows
      1 // Windows/Handle.h
      2 
      3 #ifndef __WINDOWS_HANDLE_H
      4 #define __WINDOWS_HANDLE_H
      5 
      6 namespace NWindows {
      7 
      8 class CHandle
      9 {
     10 protected:
     11   HANDLE _handle;
     12 public:
     13   operator HANDLE() { return _handle; }
     14   CHandle(): _handle(NULL) {}
     15   ~CHandle() { Close(); }
     16   bool IsCreated() const { return (_handle != NULL); }
     17   bool Close()
     18   {
     19     if (_handle == NULL)
     20       return true;
     21     if (!::CloseHandle(_handle))
     22       return false;
     23     _handle = NULL;
     24     return true;
     25   }
     26   void Attach(HANDLE handle) { _handle = handle; }
     27   HANDLE Detach()
     28   {
     29     HANDLE handle = _handle;
     30     _handle = NULL;
     31     return handle;
     32   }
     33 };
     34 
     35 }
     36 
     37 #endif
     38