record_desktop_gdi.h 763 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef RECORD_DESKTOP_GDI
  2. #define RECORD_DESKTOP_GDI
  3. #include "record_desktop.h"
  4. #include <Windows.h>
  5. namespace am {
  6. class record_desktop_gdi :
  7. public record_desktop
  8. {
  9. public:
  10. record_desktop_gdi();
  11. ~record_desktop_gdi();
  12. virtual int init(
  13. const RECORD_DESKTOP_RECT &rect,
  14. const int fps);
  15. virtual int start();
  16. virtual int pause();
  17. virtual int resume();
  18. virtual int stop();
  19. protected:
  20. virtual void clean_up();
  21. private:
  22. void draw_cursor(HDC hdc);
  23. int do_record();
  24. void do_sleep(int64_t dur, int64_t pre, int64_t now);
  25. void record_func();
  26. uint8_t *_buffer;
  27. uint32_t _buffer_size;
  28. uint32_t _width, _height;
  29. std::atomic_bool _draw_cursor;
  30. HDC _hdc;
  31. HBITMAP _bmp, _bmp_old;
  32. CURSORINFO _ci;
  33. };
  34. }
  35. #endif