Handle.h 571 B

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