1 #ifndef APITESTS_MSGTRACE_H 2 #define APITESTS_MSGTRACE_H 3 4 typedef enum _MSG_TYPE 5 { 6 SENT, 7 POST, 8 HOOK, 9 EVENT, 10 SENT_RET, 11 MARKER 12 } MSG_TYPE; 13 14 typedef struct _MSG_ENTRY 15 { 16 int iwnd; 17 UINT msg; 18 MSG_TYPE type; 19 int param1; 20 int param2; 21 } MSG_ENTRY; 22 23 typedef struct _MSG_CACHE 24 { 25 MSG_ENTRY last_post_message; 26 MSG_ENTRY message_cache[100]; 27 int count; 28 } MSG_CACHE; 29 30 extern MSG_ENTRY empty_chain[]; 31 extern MSG_CACHE default_cache; 32 33 void record_message(MSG_CACHE* cache, int iwnd, UINT message, MSG_TYPE type, int param1,int param2); 34 void compare_cache(MSG_CACHE* cache, const char* file, int line, MSG_ENTRY *msg_chain); 35 void trace_cache(MSG_CACHE* cache, const char* file, int line); 36 void empty_message_cache(MSG_CACHE* cache); 37 38 /* filter messages that are affected by dwm */ 39 static inline BOOL IsDWmMsg(UINT msg) 40 { 41 switch(msg) 42 { 43 case WM_NCPAINT: 44 case WM_ERASEBKGND: 45 case WM_PAINT: 46 case 0x031f: /*WM_DWMNCRENDERINGCHANGED*/ 47 return TRUE; 48 } 49 return FALSE; 50 } 51 52 static inline BOOL IseKeyMsg(UINT msg) 53 { 54 return (msg == WM_KEYUP || msg == WM_KEYDOWN); 55 } 56 57 #define COMPARE_CACHE(msg_chain) compare_cache(&default_cache, __FILE__, __LINE__, msg_chain) 58 #define TRACE_CACHE() trace_cache(&default_cache, __FILE__, __LINE__) 59 #define EMPTY_CACHE() empty_message_cache(&default_cache); 60 #define RECORD_MESSAGE(...) record_message(&default_cache, ##__VA_ARGS__); 61 62 #define COMPARE_CACHE_(cache, msg_chain) compare_cache(cache, __FILE__, __LINE__, msg_chain) 63 #define TRACE_CACHE_(cache) trace_cache(cache, __FILE__, __LINE__) 64 #define EMPTY_CACHE_(cache) empty_message_cache(cache); 65 66 #define EXPECT_QUEUE_STATUS(expected, notexpected) \ 67 { \ 68 DWORD status = HIWORD(GetQueueStatus(QS_ALLEVENTS)); \ 69 ok(((status) & (expected))== (expected),"wrong queue status. expected %li, and got %li\n", (DWORD)(expected), status); \ 70 if(notexpected) \ 71 ok((status & (notexpected))!=(notexpected), "wrong queue status. got non expected %li\n", (DWORD)(notexpected)); \ 72 } 73 74 #endif 75