--- include/wine/resolvewm.h | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-)
diff --git a/include/wine/resolvewm.h b/include/wine/resolvewm.h index 573f9ee..d870f12 100644 --- a/include/wine/resolvewm.h +++ b/include/wine/resolvewm.h @@ -23,6 +23,8 @@ #ifndef __WINE_WINE_RESOLVEWM_H #define __WINE_WINE_RESOLVEWM_H
+#include <stdio.h> + #define RESOLVEWM_MAX_MSGNUM WM_USER
static const char * const MessageTypeNames[RESOLVEWM_MAX_MSGNUM + 1] = @@ -1116,4 +1118,31 @@ static const char * ResolveWindowMessage(UINT msg) }
+#define BUFFER_COUNT 2 /* Two buffers so that cases where two messages get compared are handles properly*/ +#define BUFFER_SIZE 20 /* 8 digits for "WM_USER+" + 11 digits for integer + 1 digit for termination 0 */ +/* + * Returns a string representation of the given windows message. + * The returned string will be valid for some time, but not indefinitely as strings are re-used. + */ +static const char * WMToString(UINT msg) +{ + static int current_buffer = 0; + static char buffers[BUFFER_SIZE][BUFFER_COUNT]; + const char * str = ResolveWindowMessage(msg); + char * buffer; + if (!str) + { + buffer = buffers[current_buffer]; + if (msg >= WM_USER && msg <= WM_APP) + sprintf(buffer, "WM_USER+%d", msg - WM_USER); + else + sprintf(buffer, "%04x", msg); + str = buffer; + current_buffer = (current_buffer + 1) % BUFFER_COUNT; + } + return str; +} +#undef BUFFER_COUNT +#undef BUFFER_SIZE + #endif /* __WINE_WINE_RESOLVEWM_H */