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
13 #include "nsISupportsImpl.h"
21 class DeferredMessage
{
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
{
35 DeferredSendMessage(HWND aHWnd
, UINT aMessage
, WPARAM aWParam
, LPARAM aLParam
)
36 : hWnd(aHWnd
), message(aMessage
), wParam(aWParam
), lParam(aLParam
) {}
47 // Uses RedrawWindow to fake several painting-related messages. Flags passed
48 // to the constructor go directly to RedrawWindow.
49 class DeferredRedrawMessage
: public DeferredMessage
{
51 DeferredRedrawMessage(HWND aHWnd
, UINT aFlags
) : hWnd(aHWnd
), flags(aFlags
) {}
60 // Uses UpdateWindow to generate a WM_PAINT message if needed.
61 class DeferredUpdateMessage
: public DeferredMessage
{
63 explicit DeferredUpdateMessage(HWND aHWnd
);
72 // This class duplicates a string that may exist in the lParam member of the
74 class DeferredSettingChangeMessage
: public DeferredSendMessage
{
76 DeferredSettingChangeMessage(HWND aHWnd
, UINT aMessage
, WPARAM aWParam
,
79 ~DeferredSettingChangeMessage();
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
{
89 DeferredWindowPosMessage(HWND aHWnd
, LPARAM aLParam
,
90 bool aForCalcSize
= false, WPARAM aWParam
= 0);
98 // This class duplicates a data buffer for a WM_COPYDATA message.
99 class DeferredCopyDataMessage
: public DeferredSendMessage
{
101 DeferredCopyDataMessage(HWND aHWnd
, UINT aMessage
, WPARAM aWParam
,
104 ~DeferredCopyDataMessage();
107 COPYDATASTRUCT copyData
;
110 class DeferredStyleChangeMessage
: public DeferredMessage
{
112 DeferredStyleChangeMessage(HWND aHWnd
, WPARAM aWParam
, LPARAM aLParam
);
122 class DeferredSetIconMessage
: public DeferredSendMessage
{
124 DeferredSetIconMessage(HWND aHWnd
, UINT aMessage
, WPARAM aWParam
,
130 } /* namespace windows */
131 } /* namespace ipc */
132 } /* namespace mozilla */
134 #endif /* IPC_GLUE_WINDOWSMESSAGELOOP_H */