1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
/****************************** Module Header ******************************\
* Module Name: timeout.h
*
* Copyright (c) 1991, Microsoft Corporation
*
* Defines apis to support dialog and message-box input timeouts
*
* History:
* 12-05-91 Davidc Created.
\***************************************************************************/
//
// Define timeout type - represents timeout value in seconds
//
typedef ULONG TIMEOUT;
typedef TIMEOUT * PTIMEOUT;
//
// Define special timeout values
//
// The top bit of the timeout value is the 'notify bit'.
// This bit is only used when the timeout value = TIMEOUT_NONE
//
// When a screen-saver timeout occurs, the timeout stack is searched
// from the top down for the first occurrence of
// 1) A window with a timeout OR
// 2) The first TIMEOUT_NONE window with the notify-bit set.
//
// In case 1), the window is timed-out and returns DLG_SCREEN_SAVER_TIMEOUT.
//
// In case 2), a WM_SCREEN_SAVER_TIMEOUT message is posted to the window.
//
// The notify bit is never inherited. If required, it must be specified in
// addition to TIMEOUT_CURRENT.
//
// NOTE SAS messages are always sent to the topmost timeout window
//
// NOTE User logoff messages cause the top window to return DLG_USER_LOGOFF
// if it has a non-0 timeout, otherwise the window receives a WM_USER_LOGOFF
// message.
//
#define TIMEOUT_VALUE_MASK (0x0fffffff)
#define TIMEOUT_NOTIFY_MASK (0x10000000)
#define TIMEOUT_VALUE(t) (t & TIMEOUT_VALUE_MASK)
#define TIMEOUT_NOTIFY(t) (t & TIMEOUT_NOTIFY_MASK)
#define TIMEOUT_SS_NOTIFY (TIMEOUT_NOTIFY_MASK)
#define TIMEOUT_CURRENT (TIMEOUT_VALUE_MASK) // Use existing timeout
#define TIMEOUT_NONE (0) // Disable input timeout
//
// Exported function prototypes
//
LONG ForwardMessage(
PGLOBALS pGlobals,
UINT Message,
WPARAM wParam,
LPARAM lParam
);
VOID ProcessDialogTimeout(
HWND hwnd,
UINT Message,
DWORD wParam,
LONG lParam
);
int TimeoutMessageBoxEx(
PGLOBALS pGlobals,
HWND hWnd,
UINT IdText,
UINT IdCaption,
UINT wType,
TIMEOUT Timeout
);
int TimeoutMessageBoxlpstr(
PGLOBALS pGlobals,
HWND hWnd,
LPTSTR Text,
LPTSTR Caption,
UINT wType,
TIMEOUT Timeout
);
int
TimeoutDialogBoxParam(
PGLOBALS pGlobals,
HANDLE hInstance,
LPTSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc,
LONG dwInitParam,
TIMEOUT Timeout
);
int
TimeoutDialogBoxIndirectParam(
PGLOBALS pGlobals,
HANDLE hInstance,
LPDLGTEMPLATE Template,
HWND hwndParent,
DLGPROC lpDialogFunc,
LONG dwInitParam,
TIMEOUT Timeout
);
BOOL EndTopDialog(
HWND hwnd,
int DlgResult
);
BOOL SetTopTimeout(HWND hwnd);
BOOL
TimeoutUpdateTopTimeout(
DWORD Timeout);
|