win32drv.h 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. /**
  2. * @file win32drv.h
  3. *
  4. */
  5. #ifndef LV_WIN32DRV_H
  6. #define LV_WIN32DRV_H
  7. /*********************
  8. * INCLUDES
  9. *********************/
  10. #include <lvgl.h>
  11. #if USE_WIN32DRV
  12. #if LV_USE_USER_DATA == 0
  13. #error "Support for user data is required by new Win32 driver. Set LV_USE_USER_DATA to 1 in lv_conf.h"
  14. #endif
  15. #include <windows.h>
  16. #if _MSC_VER >= 1200
  17. // Disable compilation warnings.
  18. #pragma warning(push)
  19. // nonstandard extension used : bit field types other than int
  20. #pragma warning(disable:4214)
  21. // 'conversion' conversion from 'type1' to 'type2', possible loss of data
  22. #pragma warning(disable:4244)
  23. #endif
  24. #if _MSC_VER >= 1200
  25. // Restore compilation warnings.
  26. #pragma warning(pop)
  27. #endif
  28. /*********************
  29. * DEFINES
  30. *********************/
  31. #define LVGL_SIMULATOR_WINDOW_CLASS L"LVGL.SimulatorWindow"
  32. /**********************
  33. * TYPEDEFS
  34. **********************/
  35. typedef struct _lv_win32_keyboard_queue_item_t
  36. {
  37. SLIST_ENTRY ItemEntry;
  38. uint32_t key;
  39. lv_indev_state_t state;
  40. } lv_win32_keyboard_queue_item_t;
  41. typedef struct _lv_win32_window_context_t
  42. {
  43. lv_disp_t* display_device_object;
  44. lv_indev_t* mouse_device_object;
  45. lv_indev_t* mousewheel_device_object;
  46. lv_indev_t* keyboard_device_object;
  47. lv_coord_t display_hor_res;
  48. lv_coord_t display_ver_res;
  49. uint32_t display_dpi;
  50. HDC display_framebuffer_context_handle;
  51. uint32_t* display_framebuffer_base;
  52. size_t display_framebuffer_size;
  53. lv_disp_draw_buf_t display_buffer;
  54. lv_disp_drv_t display_driver;
  55. lv_indev_state_t mouse_state;
  56. lv_point_t mouse_point;
  57. lv_indev_drv_t mouse_driver;
  58. lv_indev_state_t mousewheel_state;
  59. int16_t mousewheel_enc_diff;
  60. lv_indev_drv_t mousewheel_driver;
  61. CRITICAL_SECTION keyboard_mutex;
  62. PSLIST_HEADER keyboard_queue;
  63. uint16_t keyboard_utf16_high_surrogate;
  64. uint16_t keyboard_utf16_low_surrogate;
  65. lv_indev_drv_t keyboard_driver;
  66. } lv_win32_window_context_t;
  67. /**********************
  68. * GLOBAL PROTOTYPES
  69. **********************/
  70. EXTERN_C bool lv_win32_quit_signal;
  71. EXTERN_C lv_indev_t* lv_win32_pointer_device_object;
  72. EXTERN_C lv_indev_t* lv_win32_keypad_device_object;
  73. EXTERN_C lv_indev_t* lv_win32_encoder_device_object;
  74. EXTERN_C void lv_win32_add_all_input_devices_to_group(
  75. lv_group_t* group);
  76. EXTERN_C lv_win32_window_context_t* lv_win32_get_window_context(
  77. HWND window_handle);
  78. EXTERN_C bool lv_win32_init_window_class();
  79. EXTERN_C HWND lv_win32_create_display_window(
  80. const wchar_t* window_title,
  81. lv_coord_t hor_res,
  82. lv_coord_t ver_res,
  83. HINSTANCE instance_handle,
  84. HICON icon_handle,
  85. int show_window_mode);
  86. EXTERN_C bool lv_win32_init(
  87. HINSTANCE instance_handle,
  88. int show_window_mode,
  89. lv_coord_t hor_res,
  90. lv_coord_t ver_res,
  91. HICON icon_handle);
  92. /**********************
  93. * MACROS
  94. **********************/
  95. #endif /*USE_WIN32DRV*/
  96. #endif /*LV_WIN32DRV_H*/