record_desktop_gdi.h 801 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  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 : public record_desktop
  7. {
  8. public:
  9. record_desktop_gdi();
  10. ~record_desktop_gdi();
  11. virtual int init(const RECORD_DESKTOP_RECT &rect, const int fps);
  12. virtual int start();
  13. virtual int pause();
  14. virtual int resume();
  15. virtual int stop();
  16. protected:
  17. virtual void clean_up();
  18. private:
  19. void draw_cursor(HDC hdc);
  20. int do_record();
  21. void do_sleep(int64_t dur, int64_t pre, int64_t now);
  22. void record_func();
  23. uint8_t *_buffer;
  24. uint32_t _buffer_size;
  25. uint32_t _width, _height;
  26. std::atomic_bool _draw_cursor;
  27. HDC _hdc;
  28. HBITMAP _bmp, _bmp_old;
  29. CURSORINFO _ci;
  30. };
  31. } // namespace am
  32. #endif