13 user32_ = fml::NativeLibrary::Create(
"user32.dll");
15 user32_->ResolveFunction<GetPointerType_*>(
"GetPointerType");
16 enable_non_client_dpi_scaling_ =
17 user32_->ResolveFunction<EnableNonClientDpiScaling_*>(
18 "EnableNonClientDpiScaling");
19 set_window_composition_attribute_ =
20 user32_->ResolveFunction<SetWindowCompositionAttribute_*>(
21 "SetWindowCompositionAttribute");
22 adjust_window_rect_ext_for_dpi_ =
23 user32_->ResolveFunction<AdjustWindowRectExForDpi_*>(
24 "AdjustWindowRectExForDpi");
32 POINTER_INPUT_TYPE* pointer_type)
const {
33 if (!get_pointer_type_.has_value()) {
37 return get_pointer_type_.value()(pointer_id, pointer_type);
43 PULONG length)
const {
44 return ::GetThreadPreferredUILanguages(flags, count, languages, length);
48 HIGHCONTRAST high_contrast = {.cbSize =
sizeof(HIGHCONTRAST)};
49 if (!::SystemParametersInfoW(SPI_GETHIGHCONTRAST,
sizeof(HIGHCONTRAST),
54 return high_contrast.dwFlags & HCF_HIGHCONTRASTON;
58 BOOL composition_enabled;
60 return composition_enabled;
71 LPCWSTR cursor_name)
const {
72 return ::LoadCursorW(instance, cursor_name);
76 return ::SetCursor(cursor);
80 if (!enable_non_client_dpi_scaling_.has_value()) {
84 return enable_non_client_dpi_scaling_.value()(hwnd);
90 if (!set_window_composition_attribute_.has_value()) {
94 return set_window_composition_attribute_.value()(hwnd, data);
99 const MARGINS* pMarInset)
const {
100 return ::DwmExtendFrameIntoClientArea(hwnd, pMarInset);
106 DWORD cbAttribute)
const {
107 return ::DwmSetWindowAttribute(hwnd, dwAttribute, pvAttribute, cbAttribute);
115 if (!adjust_window_rect_ext_for_dpi_.has_value()) {
119 return adjust_window_rect_ext_for_dpi_.value()(lpRect, dwStyle, bMenu,
virtual HRESULT DwmFlush() const
virtual BOOL GetPointerType(UINT32 pointer_id, POINTER_INPUT_TYPE *pointer_type) const
virtual HCURSOR LoadCursor(HINSTANCE instance, LPCWSTR cursor_name) const
virtual HCURSOR SetCursor(HCURSOR cursor) const
virtual bool GetHighContrastEnabled() const
virtual ~WindowsProcTable()
virtual BOOL AdjustWindowRectExForDpi(LPRECT lpRect, DWORD dwStyle, BOOL bMenu, DWORD dwExStyle, UINT dpi) const
virtual BOOL EnableNonClientDpiScaling(HWND hwnd) const
virtual HRESULT DwmExtendFrameIntoClientArea(HWND hwnd, const MARGINS *pMarInset) const
virtual bool DwmIsCompositionEnabled() const
virtual HRESULT DwmSetWindowAttribute(HWND hwnd, DWORD dwAttribute, LPCVOID pvAttribute, DWORD cbAttribute) const
virtual LRESULT GetThreadPreferredUILanguages(DWORD flags, PULONG count, PZZWSTR languages, PULONG length) const
virtual BOOL SetWindowCompositionAttribute(HWND hwnd, WINDOWCOMPOSITIONATTRIBDATA *data) const