[RFC PATCH 2/4] include: Add a method WMToString to resolvewm.h.

Florian Köberle florian at fkoeberle.de
Sat Sep 11 05:07:05 CDT 2010


---
 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 */
-- 
1.7.0.4




More information about the wine-devel mailing list