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