Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qtwindowsglobal.h
Go to the documentation of this file.
1// Copyright (C) 2013 Samuel Gaist <samuel.gaist@edeltech.ch>
2// Copyright (C) 2016 The Qt Company Ltd.
3// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
4
5#ifndef QTWINDOWSGLOBAL_H
6#define QTWINDOWSGLOBAL_H
7
8#include <QtCore/qt_windows.h>
9#include <QtCore/qnamespace.h>
10
11#ifndef WM_DWMCOMPOSITIONCHANGED
12# define WM_DWMCOMPOSITIONCHANGED 0x31E
13#endif
14
15#ifndef WM_DWMCOLORIZATIONCOLORCHANGED
16# define WM_DWMCOLORIZATIONCOLORCHANGED 0x0320
17#endif
18
19#ifndef WM_SYSCOLORCHANGE
20# define WM_SYSCOLORCHANGE 0x0015
21#endif
22
23#ifndef WM_TOUCH
24# define WM_TOUCH 0x0240
25#endif
26
27#ifndef WM_GESTURE
28# define WM_GESTURE 0x0119
29#endif
30
31#ifndef WM_DPICHANGED
32# define WM_DPICHANGED 0x02E0
33#endif
34
35#ifndef WM_GETDPISCALEDSIZE
36# define WM_GETDPISCALEDSIZE 0x02E4
37#endif
38
39// WM_POINTER support from Windows 8 onwards (WINVER >= 0x0602)
40#ifndef WM_POINTERUPDATE
41# define WM_NCPOINTERUPDATE 0x0241
42# define WM_NCPOINTERDOWN 0x0242
43# define WM_NCPOINTERUP 0x0243
44# define WM_POINTERUPDATE 0x0245
45# define WM_POINTERDOWN 0x0246
46# define WM_POINTERUP 0x0247
47# define WM_POINTERENTER 0x0249
48# define WM_POINTERLEAVE 0x024A
49# define WM_POINTERACTIVATE 0x024B
50# define WM_POINTERCAPTURECHANGED 0x024C
51# define WM_POINTERWHEEL 0x024E
52# define WM_POINTERHWHEEL 0x024F
53#endif // WM_POINTERUPDATE
54
55#if !defined(_DPI_AWARENESS_CONTEXTS_)
56# define DPI_AWARENESS_CONTEXT_UNAWARE ((HANDLE)-1)
57# define DPI_AWARENESS_CONTEXT_SYSTEM_AWARE ((HANDLE)-2)
58# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE ((HANDLE)-3)
59# define DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2 ((HANDLE)-4)
60# define DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED ((HANDLE)-5)
61#endif
62
64
65namespace QtWindows
66{
67
69{
70 WindowEventFlag = 0x10000,
71 MouseEventFlag = 0x20000,
74 KeyEventFlag = 0x100000,
75 KeyDownEventFlag = 0x200000,
76 TouchEventFlag = 0x400000,
79 ThemingEventFlag = 0x2000000,
80 GenericEventFlag = 0x4000000, // Misc
81 PointerEventFlag = 0x8000000,
82};
83
84enum WindowsEventType // Simplify event types
85{
146 ContextMenu = 123,
148 UnknownEvent = 542
152
153enum class DpiAwareness
154{
155 Invalid = -1,
156 Unaware,
157 System,
161};
162
163} // namespace QtWindows
164
165inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamIn, LPARAM lParamIn)
166{
167 static const UINT WM_TASKBAR_BUTTON_CREATED = []{
168 UINT message = RegisterWindowMessage(L"TaskbarButtonCreated");
169 // In case the application is run elevated, allow the
170 // TaskbarButtonCreated message through.
171 ChangeWindowMessageFilter(message, MSGFLT_ADD);
172 return message;
173 }();
174
175 switch (message) {
176 case WM_PAINT:
177 case WM_ERASEBKGND:
179 case WM_CLOSE:
181 case WM_DESTROY:
183 case WM_ACTIVATEAPP:
184 return (int)wParamIn ?
186 case WM_MOUSEACTIVATE:
190 case WM_ACTIVATE:
191 return LOWORD(wParamIn) == WA_INACTIVE ?
193 case WM_SETCURSOR:
195 case WM_MOUSELEAVE:
197 case WM_HSCROLL:
199 case WM_MOUSEWHEEL:
200 case WM_MOUSEHWHEEL:
202 case WM_WINDOWPOSCHANGING:
204 case WM_MOVE:
206 case WM_SHOWWINDOW:
207 if (wParamIn)
208 return lParamIn == SW_PARENTOPENING ? QtWindows::ShowEventOnParentRestoring : QtWindows::ShowEvent;
210 case WM_SIZE:
212 case WM_NCCREATE:
214 case WM_NCCALCSIZE:
216 case WM_NCHITTEST:
218 case WM_GETMINMAXINFO:
220 case WM_KEYDOWN: // keyboard event
221 case WM_SYSKEYDOWN:
223 case WM_KEYUP:
224 case WM_SYSKEYUP:
225 case WM_CHAR:
226 return QtWindows::KeyEvent;
227 case WM_IME_CHAR:
229 case WM_IME_KEYDOWN:
231#ifdef WM_INPUTLANGCHANGE
232 case WM_INPUTLANGCHANGE:
234#endif // WM_INPUTLANGCHANGE
235 case WM_TOUCH:
237 case WM_CHANGECBCHAIN:
238 case WM_DRAWCLIPBOARD:
239 case WM_RENDERFORMAT:
240 case WM_RENDERALLFORMATS:
241 case WM_DESTROYCLIPBOARD:
243 case WM_IME_STARTCOMPOSITION:
245 case WM_IME_ENDCOMPOSITION:
247 case WM_IME_COMPOSITION:
249 case WM_IME_REQUEST:
251 case WM_IME_NOTIFY:
252 switch (int(wParamIn)) {
253 case IMN_OPENCANDIDATE:
255 case IMN_CLOSECANDIDATE:
257 default:
258 break;
259 }
260 break;
261 case WM_GETOBJECT:
263 case WM_SETFOCUS:
265 case WM_KILLFOCUS:
267 // Among other things, WM_SETTINGCHANGE happens when the taskbar is moved
268 // and therefore the "working area" changes.
269 // http://msdn.microsoft.com/en-us/library/ms695534(v=vs.85).aspx
270 case WM_SETTINGCHANGE:
272 case WM_THEMECHANGED:
273 case WM_SYSCOLORCHANGE: // Handle color change as theme change (QTBUG-34170).
278#ifndef QT_NO_CONTEXTMENU
279 case WM_CONTEXTMENU:
281#endif
282 case WM_SYSCOMMAND:
283 if ((wParamIn & 0xfff0) == SC_CONTEXTHELP)
285 break;
286 case WM_QUERYENDSESSION:
288 case WM_ENDSESSION:
290#if defined(WM_APPCOMMAND)
291 case WM_APPCOMMAND:
293#endif
294 case WM_GESTURE:
296 case WM_DEVICECHANGE:
298 case WM_INITMENU:
299 case WM_INITMENUPOPUP:
301 case WM_COMMAND:
303 case WM_DPICHANGED:
305 case WM_DPICHANGED_AFTERPARENT:
309 case WM_ENTERSIZEMOVE:
311 case WM_EXITSIZEMOVE:
313 default:
314 break;
315 }
316 if (message >= WM_NCMOUSEMOVE && message <= WM_NCMBUTTONDBLCLK)
318 if ((message >= WM_MOUSEFIRST && message <= WM_MOUSELAST)
319 || (message >= WM_XBUTTONDOWN && message <= WM_XBUTTONDBLCLK))
325 if (message == WM_TASKBAR_BUTTON_CREATED)
328}
329
330#ifndef QT_NO_DEBUG_STREAM
332#endif
333
335
336#endif // QTWINDOWSGLOBAL_H
\inmodule QtCore
Combined button and popup list for selecting options.
Namespace for enumerations, etc.
WindowsEventType
Enumerations for WM_XX events.
@ PointerActivateWindowEvent
@ InputMethodEndCompositionEvent
@ QueryEndSessionApplicationEvent
@ DeactivateApplicationEvent
@ ShowEventOnParentRestoring
@ InputMethodCompositionEvent
@ InputMethodOpenCandidateWindowEvent
@ MouseActivateWindowEvent
@ DpiChangedAfterParentEvent
@ InputMethodStartCompositionEvent
@ EndSessionApplicationEvent
@ CompositionSettingsChanged
@ InputMethodCloseCandidateWindowEvent
@ AccessibleObjectFromWindowRequest
#define Q_DECLARE_MIXED_ENUM_OPERATORS(Ret, Flags, Enum)
Definition qflags.h:241
GLuint GLsizei const GLchar * message
#define WM_MOUSEHWHEEL
Definition qt_windows.h:80
#define WM_MOUSEWHEEL
Definition qt_windows.h:77
#define WM_POINTERUPDATE
#define WM_GETDPISCALEDSIZE
#define WM_NCPOINTERUP
#define WM_POINTERHWHEEL
#define WM_DPICHANGED
#define WM_SYSCOLORCHANGE
#define WM_GESTURE
#define WM_DWMCOMPOSITIONCHANGED
QDebug operator<<(QDebug, QtWindows::DpiAwareness)
QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamIn, LPARAM lParamIn)
#define WM_NCPOINTERUPDATE
#define WM_POINTERACTIVATE
#define WM_TOUCH
#define WM_DWMCOLORIZATIONCOLORCHANGED