Bug 1891340 - Part 1: Add parameters to customize the before and after icon tints...
[gecko.git] / ipc / glue / WindowsMessageLoop.h
blob7fa614279b8e4391a38a2449b1e6394f29874cf0
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 /* This Source Code Form is subject to the terms of the Mozilla Public
4 * License, v. 2.0. If a copy of the MPL was not distributed with this
5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
7 #ifndef IPC_GLUE_WINDOWSMESSAGELOOP_H
8 #define IPC_GLUE_WINDOWSMESSAGELOOP_H
10 // This file is only meant to compile on windows
11 #include <windows.h>
13 #include "nsISupportsImpl.h"
15 namespace mozilla {
16 namespace ipc {
17 namespace windows {
19 void InitUIThread();
21 class DeferredMessage {
22 public:
23 MOZ_COUNTED_DEFAULT_CTOR(DeferredMessage)
25 MOZ_COUNTED_DTOR_VIRTUAL(DeferredMessage)
27 virtual void Run() = 0;
30 // Uses CallWndProc to deliver a message at a later time. Messages faked with
31 // this class must not have pointers in their wParam or lParam members as they
32 // may be invalid by the time the message actually runs.
33 class DeferredSendMessage : public DeferredMessage {
34 public:
35 DeferredSendMessage(HWND aHWnd, UINT aMessage, WPARAM aWParam, LPARAM aLParam)
36 : hWnd(aHWnd), message(aMessage), wParam(aWParam), lParam(aLParam) {}
38 virtual void Run();
40 protected:
41 HWND hWnd;
42 UINT message;
43 WPARAM wParam;
44 LPARAM lParam;
47 // Uses RedrawWindow to fake several painting-related messages. Flags passed
48 // to the constructor go directly to RedrawWindow.
49 class DeferredRedrawMessage : public DeferredMessage {
50 public:
51 DeferredRedrawMessage(HWND aHWnd, UINT aFlags) : hWnd(aHWnd), flags(aFlags) {}
53 virtual void Run();
55 private:
56 HWND hWnd;
57 UINT flags;
60 // Uses UpdateWindow to generate a WM_PAINT message if needed.
61 class DeferredUpdateMessage : public DeferredMessage {
62 public:
63 explicit DeferredUpdateMessage(HWND aHWnd);
65 virtual void Run();
67 private:
68 HWND mWnd;
69 RECT mUpdateRect;
72 // This class duplicates a string that may exist in the lParam member of the
73 // message.
74 class DeferredSettingChangeMessage : public DeferredSendMessage {
75 public:
76 DeferredSettingChangeMessage(HWND aHWnd, UINT aMessage, WPARAM aWParam,
77 LPARAM aLParam);
79 ~DeferredSettingChangeMessage();
81 private:
82 wchar_t* lParamString;
85 // This class uses SetWindowPos to fake various size-related messages. Flags
86 // passed to the constructor go straight through to SetWindowPos.
87 class DeferredWindowPosMessage : public DeferredMessage {
88 public:
89 DeferredWindowPosMessage(HWND aHWnd, LPARAM aLParam,
90 bool aForCalcSize = false, WPARAM aWParam = 0);
92 virtual void Run();
94 private:
95 WINDOWPOS windowPos;
98 // This class duplicates a data buffer for a WM_COPYDATA message.
99 class DeferredCopyDataMessage : public DeferredSendMessage {
100 public:
101 DeferredCopyDataMessage(HWND aHWnd, UINT aMessage, WPARAM aWParam,
102 LPARAM aLParam);
104 ~DeferredCopyDataMessage();
106 private:
107 COPYDATASTRUCT copyData;
110 class DeferredStyleChangeMessage : public DeferredMessage {
111 public:
112 DeferredStyleChangeMessage(HWND aHWnd, WPARAM aWParam, LPARAM aLParam);
114 virtual void Run();
116 private:
117 HWND hWnd;
118 int index;
119 LONG_PTR style;
122 class DeferredSetIconMessage : public DeferredSendMessage {
123 public:
124 DeferredSetIconMessage(HWND aHWnd, UINT aMessage, WPARAM aWParam,
125 LPARAM aLParam);
127 virtual void Run();
130 } /* namespace windows */
131 } /* namespace ipc */
132 } /* namespace mozilla */
134 #endif /* IPC_GLUE_WINDOWSMESSAGELOOP_H */