[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