ReactOS  0.4.15-dev-3453-gff89651
ShellHook.cpp
Go to the documentation of this file.
1 /*
2  * PROJECT: ReactOS api tests
3  * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later)
4  * PURPOSE: Test for Shell Hook
5  * COPYRIGHT: Copyright 2020-2021 Katayama Hirofumi MZ (katayama.hirofumi.mz@gmail.com)
6  */
7 #include "shelltest.h"
8 #include "undocshell.h"
9 
10 struct TEST_ENTRY
11 {
12  INT lineno;
20 };
21 
22 #define STYLE_0 WS_POPUP
23 #define STYLE_1 (WS_POPUP | WS_VISIBLE)
24 #define STYLE_2 (WS_OVERLAPPED | WS_VISIBLE)
25 
26 #define EXSTYLE_0 0
27 #define EXSTYLE_1 WS_EX_APPWINDOW
28 #define EXSTYLE_2 WS_EX_TOOLWINDOW
29 #define EXSTYLE_3 (WS_EX_APPWINDOW | WS_EX_TOOLWINDOW)
30 
31 #define TYPE_0 FALSE, FALSE
32 #define TYPE_1 FALSE, TRUE
33 #define TYPE_2 TRUE, TRUE
34 
35 static const TEST_ENTRY s_entries1[] =
36 {
37  // TYPE_0
38  { __LINE__, 0, TYPE_0, STYLE_0, EXSTYLE_0 },
39  { __LINE__, 0, TYPE_0, STYLE_0, EXSTYLE_1 },
40  { __LINE__, 0, TYPE_0, STYLE_0, EXSTYLE_2 },
41  { __LINE__, 0, TYPE_0, STYLE_0, EXSTYLE_3 },
42  { __LINE__, 1, TYPE_0, STYLE_1, EXSTYLE_0 },
43  { __LINE__, 1, TYPE_0, STYLE_1, EXSTYLE_1 },
44  { __LINE__, 0, TYPE_0, STYLE_1, EXSTYLE_2 },
45  { __LINE__, 1, TYPE_0, STYLE_1, EXSTYLE_3 },
46  { __LINE__, 1, TYPE_0, STYLE_2, EXSTYLE_0 },
47  { __LINE__, 1, TYPE_0, STYLE_2, EXSTYLE_1 },
48  { __LINE__, 0, TYPE_0, STYLE_2, EXSTYLE_2 },
49  { __LINE__, 1, TYPE_0, STYLE_2, EXSTYLE_3 },
50 
51  // TYPE_1
52  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_0 },
53  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_1 },
54  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_2 },
55  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_3 },
56  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_0 },
57  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_1 },
58  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_2 },
59  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_3 },
60  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_0 },
61  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_1 },
62  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_2 },
63  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_3 },
64  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_0 },
65  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_1 },
66  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_2 },
67  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_3 },
68  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_0 },
69  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_1 },
70  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_2 },
71  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_3 },
72  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_0 },
73  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_1 },
74  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_2 },
75  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_3 },
76  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_0 },
77  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_1 },
78  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_2 },
79  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_3 },
80  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_0 },
81  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_1 },
82  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_2 },
83  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_3 },
84  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_0 },
85  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_1 },
86  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_2 },
87  { __LINE__, 0, TYPE_1, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_3 },
88  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_0 },
89  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_1 },
90  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_2 },
91  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_3 },
92  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_0 },
93  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_1 },
94  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_2 },
95  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_3 },
96  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_0 },
97  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_1 },
98  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_2 },
99  { __LINE__, 1, TYPE_1, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_3 },
100  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_0 },
101  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_1 },
102  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_2 },
103  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_3 },
104  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_0 },
105  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_1 },
106  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_2 },
107  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_3 },
108  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_0 },
109  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_1 },
110  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_2 },
111  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_3 },
112  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_0 },
113  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_1 },
114  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_2 },
115  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_3 },
116  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_0 },
117  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_1 },
118  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_2 },
119  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_3 },
120  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_0 },
121  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_1 },
122  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_2 },
123  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_3 },
124  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_0 },
125  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_1 },
126  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_2 },
127  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_3 },
128  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_0 },
129  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_1 },
130  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_2 },
131  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_3 },
132  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_0 },
133  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_1 },
134  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_2 },
135  { __LINE__, 0, TYPE_1, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_3 },
136  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_0 },
137  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_1 },
138  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_2 },
139  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_3 },
140  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_0 },
141  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_1 },
142  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_2 },
143  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_3 },
144  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_0 },
145  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_1 },
146  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_2 },
147  { __LINE__, 1, TYPE_1, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_3 },
148 
149  // TYPE_2
150  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_0 },
151  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_1 },
152  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_2 },
153  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_0, EXSTYLE_3 },
154  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_0 },
155  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_1 },
156  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_2 },
157  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_1, EXSTYLE_3 },
158  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_0 },
159  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_1 },
160  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_2 },
161  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_0, STYLE_2, EXSTYLE_3 },
162  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_0 },
163  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_1 },
164  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_2 },
165  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_0, EXSTYLE_3 },
166  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_0 },
167  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_1 },
168  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_2 },
169  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_1, EXSTYLE_3 },
170  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_0 },
171  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_1 },
172  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_2 },
173  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_1, STYLE_2, EXSTYLE_3 },
174  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_0 },
175  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_1 },
176  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_2 },
177  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_0, EXSTYLE_3 },
178  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_0 },
179  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_1 },
180  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_2 },
181  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_1, EXSTYLE_3 },
182  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_0 },
183  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_1 },
184  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_2 },
185  { __LINE__, 0, TYPE_2, STYLE_1, EXSTYLE_2, STYLE_2, EXSTYLE_3 },
186  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_0 },
187  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_1 },
188  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_2 },
189  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_0, EXSTYLE_3 },
190  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_0 },
191  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_1 },
192  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_2 },
193  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_1, EXSTYLE_3 },
194  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_0 },
195  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_1 },
196  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_2 },
197  { __LINE__, 1, TYPE_2, STYLE_1, EXSTYLE_3, STYLE_2, EXSTYLE_3 },
198  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_0 },
199  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_1 },
200  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_2 },
201  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_0, EXSTYLE_3 },
202  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_0 },
203  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_1 },
204  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_2 },
205  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_1, EXSTYLE_3 },
206  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_0 },
207  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_1 },
208  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_2 },
209  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_0, STYLE_2, EXSTYLE_3 },
210  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_0 },
211  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_1 },
212  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_2 },
213  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_0, EXSTYLE_3 },
214  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_0 },
215  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_1 },
216  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_2 },
217  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_1, EXSTYLE_3 },
218  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_0 },
219  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_1 },
220  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_2 },
221  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_1, STYLE_2, EXSTYLE_3 },
222  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_0 },
223  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_1 },
224  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_2 },
225  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_0, EXSTYLE_3 },
226  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_0 },
227  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_1 },
228  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_2 },
229  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_1, EXSTYLE_3 },
230  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_0 },
231  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_1 },
232  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_2 },
233  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_2, STYLE_2, EXSTYLE_3 },
234  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_0 },
235  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_1 },
236  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_2 },
237  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_0, EXSTYLE_3 },
238  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_0 },
239  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_1 },
240  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_2 },
241  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_1, EXSTYLE_3 },
242  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_0 },
243  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_1 },
244  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_2 },
245  { __LINE__, 0, TYPE_2, STYLE_2, EXSTYLE_3, STYLE_2, EXSTYLE_3 },
246 };
247 
248 typedef struct RUDEAPP_TEST_ENTRY
249 {
258 
260 {
261  /* STYLE_0 */
262  { __LINE__, 0, STYLE_0, EXSTYLE_0, FALSE, FALSE, FALSE },
263  { __LINE__, 0, STYLE_0, EXSTYLE_0, FALSE, FALSE, TRUE },
264  { __LINE__, 0, STYLE_0, EXSTYLE_0, FALSE, TRUE, FALSE },
265  { __LINE__, 0, STYLE_0, EXSTYLE_0, FALSE, TRUE, TRUE },
266  { __LINE__, 0, STYLE_0, EXSTYLE_0, TRUE, FALSE, FALSE },
267  { __LINE__, 0, STYLE_0, EXSTYLE_0, TRUE, FALSE, TRUE },
268  { __LINE__, 0, STYLE_0, EXSTYLE_0, TRUE, TRUE, FALSE },
269  { __LINE__, 0, STYLE_0, EXSTYLE_0, TRUE, TRUE, TRUE },
270 
271  { __LINE__, 0, STYLE_0, EXSTYLE_1, FALSE, FALSE, FALSE },
272  { __LINE__, 0, STYLE_0, EXSTYLE_1, FALSE, FALSE, TRUE },
273  { __LINE__, 0, STYLE_0, EXSTYLE_1, FALSE, TRUE, FALSE },
274  { __LINE__, 0, STYLE_0, EXSTYLE_1, FALSE, TRUE, TRUE },
275  { __LINE__, 0, STYLE_0, EXSTYLE_1, TRUE, FALSE, FALSE },
276  { __LINE__, 0, STYLE_0, EXSTYLE_1, TRUE, FALSE, TRUE },
277  { __LINE__, 0, STYLE_0, EXSTYLE_1, TRUE, TRUE, FALSE },
278  { __LINE__, 0, STYLE_0, EXSTYLE_1, TRUE, TRUE, TRUE },
279 
280  { __LINE__, 0, STYLE_0, EXSTYLE_2, FALSE, FALSE, FALSE },
281  { __LINE__, 0, STYLE_0, EXSTYLE_2, FALSE, FALSE, TRUE },
282  { __LINE__, 0, STYLE_0, EXSTYLE_2, FALSE, TRUE, FALSE },
283  { __LINE__, 0, STYLE_0, EXSTYLE_2, FALSE, TRUE, TRUE },
284  { __LINE__, 0, STYLE_0, EXSTYLE_2, TRUE, FALSE, FALSE },
285  { __LINE__, 0, STYLE_0, EXSTYLE_2, TRUE, FALSE, TRUE },
286  { __LINE__, 0, STYLE_0, EXSTYLE_2, TRUE, TRUE, FALSE },
287  { __LINE__, 0, STYLE_0, EXSTYLE_2, TRUE, TRUE, TRUE },
288 
289  { __LINE__, 0, STYLE_0, EXSTYLE_3, FALSE, FALSE, FALSE },
290  { __LINE__, 0, STYLE_0, EXSTYLE_3, FALSE, FALSE, TRUE },
291  { __LINE__, 0, STYLE_0, EXSTYLE_3, FALSE, TRUE, FALSE },
292  { __LINE__, 0, STYLE_0, EXSTYLE_3, FALSE, TRUE, TRUE },
293  { __LINE__, 0, STYLE_0, EXSTYLE_3, TRUE, FALSE, FALSE },
294  { __LINE__, 0, STYLE_0, EXSTYLE_3, TRUE, FALSE, TRUE },
295  { __LINE__, 0, STYLE_0, EXSTYLE_3, TRUE, TRUE, FALSE },
296  { __LINE__, 0, STYLE_0, EXSTYLE_3, TRUE, TRUE, TRUE },
297 
298  /* STYLE_1 */
299  { __LINE__, 0, STYLE_1, EXSTYLE_0, FALSE, FALSE, FALSE },
300  { __LINE__, 1, STYLE_1, EXSTYLE_0, FALSE, FALSE, TRUE },
301  { __LINE__, 1, STYLE_1, EXSTYLE_0, FALSE, TRUE, FALSE },
302  { __LINE__, 1, STYLE_1, EXSTYLE_0, FALSE, TRUE, TRUE },
303  { __LINE__, 0, STYLE_1, EXSTYLE_0, TRUE, FALSE, FALSE },
304  { __LINE__, 1, STYLE_1, EXSTYLE_0, TRUE, FALSE, TRUE },
305  { __LINE__, 1, STYLE_1, EXSTYLE_0, TRUE, TRUE, FALSE },
306  { __LINE__, 1, STYLE_1, EXSTYLE_0, TRUE, TRUE, TRUE },
307 
308  { __LINE__, 0, STYLE_1, EXSTYLE_1, FALSE, FALSE, FALSE },
309  { __LINE__, 1, STYLE_1, EXSTYLE_1, FALSE, FALSE, TRUE },
310  { __LINE__, 1, STYLE_1, EXSTYLE_1, FALSE, TRUE, FALSE },
311  { __LINE__, 1, STYLE_1, EXSTYLE_1, FALSE, TRUE, TRUE },
312  { __LINE__, 0, STYLE_1, EXSTYLE_1, TRUE, FALSE, FALSE },
313  { __LINE__, 1, STYLE_1, EXSTYLE_1, TRUE, FALSE, TRUE },
314  { __LINE__, 1, STYLE_1, EXSTYLE_1, TRUE, TRUE, FALSE },
315  { __LINE__, 1, STYLE_1, EXSTYLE_1, TRUE, TRUE, TRUE },
316 
317  { __LINE__, 0, STYLE_1, EXSTYLE_2, FALSE, FALSE, FALSE },
318  { __LINE__, 0, STYLE_1, EXSTYLE_2, FALSE, FALSE, TRUE },
319  { __LINE__, 0, STYLE_1, EXSTYLE_2, FALSE, TRUE, FALSE },
320  { __LINE__, 0, STYLE_1, EXSTYLE_2, FALSE, TRUE, TRUE },
321  { __LINE__, 0, STYLE_1, EXSTYLE_2, TRUE, FALSE, FALSE },
322  { __LINE__, 0, STYLE_1, EXSTYLE_2, TRUE, FALSE, TRUE },
323  { __LINE__, 0, STYLE_1, EXSTYLE_2, TRUE, TRUE, FALSE },
324  { __LINE__, 0, STYLE_1, EXSTYLE_2, TRUE, TRUE, TRUE },
325 
326  { __LINE__, 0, STYLE_1, EXSTYLE_3, FALSE, FALSE, FALSE },
327  { __LINE__, 0, STYLE_1, EXSTYLE_3, FALSE, FALSE, TRUE },
328  { __LINE__, 0, STYLE_1, EXSTYLE_3, FALSE, TRUE, FALSE },
329  { __LINE__, 0, STYLE_1, EXSTYLE_3, FALSE, TRUE, TRUE },
330  { __LINE__, 0, STYLE_1, EXSTYLE_3, TRUE, FALSE, FALSE },
331  { __LINE__, 0, STYLE_1, EXSTYLE_3, TRUE, FALSE, TRUE },
332  { __LINE__, 0, STYLE_1, EXSTYLE_3, TRUE, TRUE, FALSE },
333  { __LINE__, 0, STYLE_1, EXSTYLE_3, TRUE, TRUE, TRUE },
334 
335  /* STYLE_2 */
336  { __LINE__, 0, STYLE_2, EXSTYLE_0, FALSE, FALSE, FALSE },
337  { __LINE__, 1, STYLE_2, EXSTYLE_0, FALSE, FALSE, TRUE },
338  { __LINE__, 1, STYLE_2, EXSTYLE_0, FALSE, TRUE, FALSE },
339  { __LINE__, 1, STYLE_2, EXSTYLE_0, FALSE, TRUE, TRUE },
340  { __LINE__, 0, STYLE_2, EXSTYLE_0, TRUE, FALSE, FALSE },
341  { __LINE__, 1, STYLE_2, EXSTYLE_0, TRUE, FALSE, TRUE },
342  { __LINE__, 1, STYLE_2, EXSTYLE_0, TRUE, TRUE, FALSE },
343  { __LINE__, 1, STYLE_2, EXSTYLE_0, TRUE, TRUE, TRUE },
344 
345  { __LINE__, 0, STYLE_2, EXSTYLE_1, FALSE, FALSE, FALSE },
346  { __LINE__, 1, STYLE_2, EXSTYLE_1, FALSE, FALSE, TRUE },
347  { __LINE__, 1, STYLE_2, EXSTYLE_1, FALSE, TRUE, FALSE },
348  { __LINE__, 1, STYLE_2, EXSTYLE_1, FALSE, TRUE, TRUE },
349  { __LINE__, 0, STYLE_2, EXSTYLE_1, TRUE, FALSE, FALSE },
350  { __LINE__, 1, STYLE_2, EXSTYLE_1, TRUE, FALSE, TRUE },
351  { __LINE__, 1, STYLE_2, EXSTYLE_1, TRUE, TRUE, FALSE },
352  { __LINE__, 1, STYLE_2, EXSTYLE_1, TRUE, TRUE, TRUE },
353 
354  { __LINE__, 0, STYLE_2, EXSTYLE_2, FALSE, FALSE, FALSE },
355  { __LINE__, 0, STYLE_2, EXSTYLE_2, FALSE, FALSE, TRUE },
356  { __LINE__, 0, STYLE_2, EXSTYLE_2, FALSE, TRUE, FALSE },
357  { __LINE__, 0, STYLE_2, EXSTYLE_2, FALSE, TRUE, TRUE },
358  { __LINE__, 0, STYLE_2, EXSTYLE_2, TRUE, FALSE, FALSE },
359  { __LINE__, 0, STYLE_2, EXSTYLE_2, TRUE, FALSE, TRUE },
360  { __LINE__, 0, STYLE_2, EXSTYLE_2, TRUE, TRUE, FALSE },
361  { __LINE__, 0, STYLE_2, EXSTYLE_2, TRUE, TRUE, TRUE },
362 
363  { __LINE__, 0, STYLE_2, EXSTYLE_3, FALSE, FALSE, FALSE },
364  { __LINE__, 0, STYLE_2, EXSTYLE_3, FALSE, FALSE, TRUE },
365  { __LINE__, 0, STYLE_2, EXSTYLE_3, FALSE, TRUE, FALSE },
366  { __LINE__, 0, STYLE_2, EXSTYLE_3, FALSE, TRUE, TRUE },
367  { __LINE__, 0, STYLE_2, EXSTYLE_3, TRUE, FALSE, FALSE },
368  { __LINE__, 0, STYLE_2, EXSTYLE_3, TRUE, FALSE, TRUE },
369  { __LINE__, 0, STYLE_2, EXSTYLE_3, TRUE, TRUE, FALSE },
370  { __LINE__, 0, STYLE_2, EXSTYLE_3, TRUE, TRUE, TRUE },
371 };
372 
379 static WCHAR s_szName[] = L"ReactOS ShellHook testcase";
380 
381 static HWND
383 {
384  INT x = CW_USEDEFAULT, y = CW_USEDEFAULT, cx = 100, cy = 100;
385  if (bFullscreen)
386  {
387  x = y = 0;
390  }
391  return CreateWindowExW(exstyle, s_szName, s_szName, style, x, y, cx, cy,
393 }
394 
395 static void DoTestEntryPart1(const TEST_ENTRY *pEntry)
396 {
397  ok(!pEntry->bIsChild || pEntry->bHasOwner,
398  "Line %d: bIsChild && !bHasOwner\n", pEntry->lineno);
399 
400  s_hwndParent = NULL;
401  if (pEntry->bIsChild || pEntry->bHasOwner)
402  {
403  s_hwndParent = DoCreateWindow(NULL, pEntry->owner_style, pEntry->owner_exstyle);
404  }
405 
406  DWORD style = pEntry->style;
407  DWORD exstyle = pEntry->exstyle;
408  if (pEntry->bIsChild)
409  style |= WS_CHILD;
410  else
411  style &= ~WS_CHILD;
412 
415 }
416 
417 static void DoTestEntryPart2(const TEST_ENTRY *pEntry)
418 {
419  ok(s_nWindowCreatedCount == pEntry->nCount,
420  "Line %d: s_nWindowCreatedCount expected %u but was %u\n",
421  pEntry->lineno, pEntry->nCount, s_nWindowCreatedCount);
422 
424  s_hwndTarget = NULL;
425 
426  if (pEntry->bIsChild || pEntry->bHasOwner)
427  {
429  s_hwndParent = NULL;
430  }
431 }
432 
434 {
435  s_hwndParent = NULL;
436 
437  DWORD style = pEntry->style;
438  DWORD exstyle = pEntry->exstyle;
439 
441  s_hwndTarget = DoCreateWindow(s_hwndParent, style, exstyle, pEntry->bFullscreen);
442  if (pEntry->bSetForeground)
444  if (pEntry->bSetFullscreen)
445  {
446  MoveWindow(s_hwndTarget, 0, 0,
448  }
449 }
450 
452 {
453  ok(s_nRudeAppActivated == pEntry->nCount,
454  "Line %d: s_nRudeAppActivated expected %u but was %u\n",
455  pEntry->lineno, pEntry->nCount, s_nRudeAppActivated);
456 
458  s_hwndTarget = NULL;
459 }
460 
461 static LRESULT CALLBACK
463 {
464  if (uMsg == s_uShellHookMsg && uMsg != 0)
465  {
466  switch (wParam)
467  {
469  if ((HWND)lParam != s_hwndTarget)
470  break;
472  break;
473 
475  if ((HWND)lParam != s_hwndTarget)
476  break;
478  break;
479  }
480  }
481 #define ID_IGNITION 1000
482 #define ID_BURNING 2000
483 #define ID_RUDEAPPTEST1 3000
484 #define ID_RUDEAPPTEST2 4000
485  switch (uMsg)
486  {
487  case WM_CREATE:
489  return DefWindowProcW(hwnd, uMsg, wParam, lParam);
490  case WM_COMMAND:
491  if (hwnd != s_hwndHookViewer)
492  break;
493 
494  if (ID_IGNITION <= wParam && wParam < ID_BURNING)
495  {
496  INT i = (INT)wParam - ID_IGNITION;
499  }
500  else if (ID_BURNING <= wParam && wParam < ID_RUDEAPPTEST1)
501  {
502  INT i = (INT)wParam - ID_BURNING;
504  ++i;
505  if (i == (INT)_countof(s_entries1))
506  {
508  break;
509  }
511  }
512  else if (ID_RUDEAPPTEST1 <= wParam && wParam < ID_RUDEAPPTEST2)
513  {
517  }
518  else if (ID_RUDEAPPTEST2 <= wParam)
519  {
522  ++i;
523  if (i == (INT)_countof(s_entries2))
524  {
525  PostQuitMessage(0);
526  break;
527  }
529  }
530  break;
531  default:
532  return DefWindowProcW(hwnd, uMsg, wParam, lParam);
533  }
534  return 0;
535 }
536 
537 START_TEST(ShellHook)
538 {
539  WNDCLASSW wc;
540 
541  ZeroMemory(&wc, sizeof(wc));
542  wc.lpfnWndProc = WindowProc;
546  wc.hbrBackground = (HBRUSH)(COLOR_3DFACE + 1);
547  wc.lpszClassName = s_szName;
548  if (!RegisterClassW(&wc))
549  {
550  skip("RegisterClassW failed\n");
551  return;
552  }
553 
555  if (s_hwndHookViewer == NULL)
556  {
557  skip("CreateWindowExW failed\n");
558  return;
559  }
560 
563 
564  MSG msg;
565  while (GetMessageW(&msg, NULL, 0, 0))
566  {
569  }
570 
574 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
INT lineno
Definition: ShellHook.cpp:250
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define ID_IGNITION
static const RUDEAPP_TEST_ENTRY s_entries2[]
Definition: ShellHook.cpp:259
BOOL bSetForeground
Definition: ShellHook.cpp:254
#define STYLE_2
Definition: ShellHook.cpp:24
#define TRUE
Definition: types.h:120
struct RUDEAPP_TEST_ENTRY RUDEAPP_TEST_ENTRY
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
DWORD style
Definition: ShellHook.cpp:16
#define INT
Definition: polytest.cpp:20
#define CALLBACK
Definition: compat.h:35
#define HSHELL_WINDOWCREATED
Definition: winuser.h:1245
START_TEST(ShellHook)
Definition: ShellHook.cpp:537
#define ZeroMemory
Definition: winbase.h:1664
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define IDI_APPLICATION
Definition: winuser.h:699
UINT_PTR WPARAM
Definition: windef.h:207
#define WS_CHILD
Definition: pedump.c:617
BOOL WINAPI DestroyWindow(_In_ HWND)
int32_t INT
Definition: typedefs.h:58
WPARAM wParam
Definition: combotst.c:138
static LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: ShellHook.cpp:462
LRESULT WINAPI DefWindowProcW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define STYLE_0
Definition: ShellHook.cpp:22
#define TYPE_0
Definition: ShellHook.cpp:31
ATOM WINAPI RegisterClassW(_In_ CONST WNDCLASSW *)
static UINT s_nWindowCreatedCount
Definition: ShellHook.cpp:377
#define SM_CXSCREEN
Definition: winuser.h:953
static HWND s_hwndTarget
Definition: ShellHook.cpp:376
#define L(x)
Definition: ntvdm.h:50
#define COLOR_3DFACE
Definition: winuser.h:923
#define FALSE
Definition: types.h:117
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
#define EXSTYLE_2
Definition: ShellHook.cpp:28
unsigned int BOOL
Definition: ntddk_ex.h:94
DWORD exstyle
Definition: ShellHook.cpp:17
BOOL bHasOwner
Definition: ShellHook.cpp:15
WNDPROC lpfnWndProc
Definition: winuser.h:3157
#define CW_USEDEFAULT
Definition: winuser.h:225
_Out_opt_ int _Out_opt_ int * cy
Definition: commctrl.h:585
static HWND hwndParent
Definition: cryptui.c:300
LPCWSTR lpszClassName
Definition: winuser.h:3165
LONG_PTR LPARAM
Definition: windef.h:208
INT lineno
Definition: fc.c:16
#define TYPE_2
Definition: ShellHook.cpp:33
Definition: ShellHook.cpp:248
static HWND s_hwndHookViewer
Definition: ShellHook.cpp:374
#define SM_CYSCREEN
Definition: winuser.h:954
UINT nCount
Definition: ShellHook.cpp:251
DWORD exstyle
Definition: ShellHook.cpp:253
static const TEST_ENTRY s_entries1[]
Definition: ShellHook.cpp:35
BOOL bFullscreen
Definition: ShellHook.cpp:255
__wchar_t WCHAR
Definition: xmlstorage.h:180
static HWND s_hwndParent
Definition: ShellHook.cpp:375
#define _countof(array)
Definition: sndvol32.h:68
#define WM_CLOSE
Definition: winuser.h:1608
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
#define EXSTYLE_1
Definition: ShellHook.cpp:27
HICON hIcon
Definition: winuser.h:3161
DWORD style
Definition: ShellHook.cpp:252
#define STYLE_1
Definition: ShellHook.cpp:23
#define ID_RUDEAPPTEST2
DWORD owner_style
Definition: ShellHook.cpp:18
BOOL bIsChild
Definition: ShellHook.cpp:14
Definition: cmd.c:12
HWND WINAPI CreateWindowExW(_In_ DWORD dwExStyle, _In_opt_ LPCWSTR lpClassName, _In_opt_ LPCWSTR lpWindowName, _In_ DWORD dwStyle, _In_ int X, _In_ int Y, _In_ int nWidth, _In_ int nHeight, _In_opt_ HWND hWndParent, _In_opt_ HMENU hMenu, _In_opt_ HINSTANCE hInstance, _In_opt_ LPVOID lpParam)
BOOL WINAPI RegisterShellHookWindow(_In_ HWND)
#define WM_COMMAND
Definition: winuser.h:1727
BOOL WINAPI MoveWindow(_In_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ BOOL)
DWORD owner_exstyle
Definition: ShellHook.cpp:19
#define LoadCursor
Definition: winuser.h:5792
static void DoRudeAppTest2(const RUDEAPP_TEST_ENTRY *pEntry)
Definition: ShellHook.cpp:451
HCURSOR hCursor
Definition: winuser.h:3162
UINT WINAPI RegisterWindowMessageW(_In_ LPCWSTR)
#define EXSTYLE_3
Definition: ShellHook.cpp:29
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
HBRUSH hbrBackground
Definition: winuser.h:3163
#define ok(value,...)
Definition: atltest.h:57
UINT nCount
Definition: ShellHook.cpp:13
unsigned int UINT
Definition: ndis.h:50
#define NULL
Definition: types.h:112
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
HINSTANCE hInstance
Definition: winuser.h:3160
#define skip(...)
Definition: atltest.h:64
#define HSHELL_RUDEAPPACTIVATED
Definition: winuser.h:1268
#define msg(x)
Definition: auth_time.c:54
#define IDC_ARROW
Definition: winuser.h:682
_Out_opt_ int * cx
Definition: commctrl.h:585
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
#define WM_CREATE
Definition: winuser.h:1595
BOOL bSetFullscreen
Definition: ShellHook.cpp:256
#define WS_OVERLAPPEDWINDOW
Definition: pedump.c:637
HMODULE WINAPI GetModuleHandleW(LPCWSTR lpModuleName)
Definition: loader.c:838
BOOL WINAPI SetForegroundWindow(_In_ HWND)
static WCHAR s_szName[]
Definition: ShellHook.cpp:379
#define TYPE_1
Definition: ShellHook.cpp:32
#define ID_RUDEAPPTEST1
BOOL WINAPI DeregisterShellHookWindow(_In_ HWND)
#define LoadIcon
Definition: winuser.h:5793
static UINT s_uShellHookMsg
Definition: ShellHook.cpp:373
#define EXSTYLE_0
Definition: ShellHook.cpp:26
LONG_PTR LRESULT
Definition: windef.h:209
static void DoTestEntryPart1(const TEST_ENTRY *pEntry)
Definition: ShellHook.cpp:395
PLIST_ENTRY pEntry
Definition: fxioqueue.cpp:4484
static UINT s_nRudeAppActivated
Definition: ShellHook.cpp:378
Arabic default style
Definition: afstyles.h:93
static void DoRudeAppTest1(const RUDEAPP_TEST_ENTRY *pEntry)
Definition: ShellHook.cpp:433
#define WS_VISIBLE
Definition: pedump.c:620
LPARAM lParam
Definition: combotst.c:139
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)
static HWND DoCreateWindow(HWND hwndParent, DWORD style, DWORD exstyle, BOOL bFullscreen=FALSE)
Definition: ShellHook.cpp:382
#define ID_BURNING
static void DoTestEntryPart2(const TEST_ENTRY *pEntry)
Definition: ShellHook.cpp:417