Convert message spy to unicode

Dmitry Timoshkov dmitry at baikal.ru
Mon Nov 19 04:19:57 CST 2001


Hello.

Changelog:
    Dmitry Timoshkov <dmitry at codeweavers.com>
    Convert message spy to unicode.

diff -u cvs/hq/wine/include/winuser.h wine/include/winuser.h
--- cvs/hq/wine/include/winuser.h	Wed Oct 24 15:28:33 2001
+++ wine/include/winuser.h	Mon Nov 19 16:59:57 2001
@@ -3759,6 +3759,7 @@
 BOOL      WINAPI InsertMenuItemA(HMENU,UINT,BOOL,const MENUITEMINFOA*);
 BOOL      WINAPI InsertMenuItemW(HMENU,UINT,BOOL,const MENUITEMINFOW*);
 #define     InsertMenuItem WINELIB_NAME_AW(InsertMenuItem)
+INT       WINAPI InternalGetWindowText(HWND,LPWSTR,INT);
 BOOL      WINAPI IntersectRect(LPRECT,const RECT*,const RECT*);
 BOOL      WINAPI InvalidateRect(HWND,const RECT*,BOOL);
 BOOL      WINAPI InvalidateRgn(HWND,HRGN,BOOL);
diff -u cvs/hq/wine/windows/spy.c wine/windows/spy.c
--- cvs/hq/wine/windows/spy.c	Tue Nov  6 14:19:24 2001
+++ wine/windows/spy.c	Mon Nov 19 17:52:23 2001
@@ -13,6 +13,7 @@
 #include "winreg.h"
 #include "wine/winuser16.h"
 #include "wine/winbase16.h"
+#include "wine/unicode.h"
 #include "win.h"
 #include "debugtools.h"
 #include "spy.h"
@@ -1239,7 +1240,7 @@
 
 typedef struct
 {
-      CHAR       *classname;  /* class name to match                  */
+const WCHAR      *classname;  /* class name to match                  */
 const USER_MSG   *classmsg;   /* pointer to first USER_MSG for class  */
       USER_MSG   *lastmsg;    /* pointer to last USER_MSG for class   */
 } CONTROL_CLASS;
@@ -1397,9 +1398,9 @@
 #undef USM
 
 static CONTROL_CLASS  cc_array[] = {
-    {WC_COMBOBOXEXA,    comboex_array, 0},
-    {REBARCLASSNAMEA,   rebar_array,   0},
-    {TOOLBARCLASSNAMEA, toolbar_array, 0},
+    {WC_COMBOBOXEXW,    comboex_array, 0},
+    {REBARCLASSNAMEW,   rebar_array,   0},
+    {TOOLBARCLASSNAMEW, toolbar_array, 0},
     {0, 0, 0} };
 
 
@@ -1586,8 +1587,8 @@
     LPARAM     lParam;           /* message parameter                  */
     INT        data_len;         /* length of data to dump             */
     char       msg_name[60];     /* message name (see SPY_GetMsgName)  */
-    CHAR       wnd_class[60];    /* window class name (full)           */
-    CHAR       wnd_name[16];     /* window name for message            */
+    WCHAR      wnd_class[60];    /* window class name (full)           */
+    WCHAR      wnd_name[16];     /* window name for message            */
 } SPY_INSTANCE;
 
 /* This is defined so that the external entry point can return the addr */
@@ -1703,11 +1704,11 @@
 	/* TRACE("looking class %s\n", sp_e->wnd_class); */
 
 	while (cc_array[i].classname &&
-	       strcmp(cc_array[i].classname, sp_e->wnd_class) !=0) i++;
+	       strcmpW(cc_array[i].classname, sp_e->wnd_class) !=0) i++;
 
 	if (!cc_array[i].classname) return;
 	/* TRACE("process class %s, first %p, last %p\n", 
-	      cc_array[i].classname, cc_array[i].classmsg, 
+	      debugstr_w(cc_array[i].classname), cc_array[i].classmsg, 
 	      cc_array[i].lastmsg); */
 	p = SPY_Bsearch_Msg (cc_array[i].classmsg, cc_array[i].lastmsg,
 			 sp_e->msgnum);
@@ -1727,52 +1728,25 @@
  */
 void SPY_GetWndName( SPY_INSTANCE *sp_e )
 {
-    WND* pWnd = WIN_GetPtr( sp_e->msg_hwnd );
-    if (pWnd && pWnd != WND_OTHER_PROCESS)
-    {
-	LPSTR p = sp_e->wnd_name;
-	LPSTR s = sp_e->wnd_name;
-        char  postfix;
-	DWORD save_error;
-
-	/* save and restore error code over the next call */	
-	save_error = GetLastError();
-	GetClassNameA( sp_e->msg_hwnd, sp_e->wnd_class, sizeof(sp_e->wnd_class)-1);
-	SetLastError(save_error);
+    DWORD save_error;
+    INT len;
 
-	if( pWnd->text && pWnd->text[0] != '\0' )
-	{
-	    LPWSTR src = pWnd->text;
-	    int n=sizeof(sp_e->wnd_name)-2;
-	    *(p++) = postfix = '\"';
-	    while ((n-- > 0) && *src) *p++ = *src++;
-	}
-	else /* get class name */
-	{
-	    LPSTR src = sp_e->wnd_class;
-	    int n=sizeof(sp_e->wnd_name)-2;
-	    *(p++) = '{';
-	    while ((n-- > 0) && *src) *p++ = *src++;
-	    postfix='}';
-	}
+    /* save and restore error code over the next call */	
+    save_error = GetLastError();
+    GetClassNameW(sp_e->msg_hwnd, sp_e->wnd_class, sizeof(sp_e->wnd_class)/sizeof(WCHAR));
+    SetLastError(save_error);
 
-	if( p-s >= sizeof(sp_e->wnd_name)-1 ) {
-	    p = s + sizeof(sp_e->wnd_name)-5;
-	    *(p++) = '.';
-	    *(p++) = '.';
-	    *(p++) = '.';
-	}
-	*(p++) = postfix;
-	*(p++) = '\0';
-        WIN_ReleasePtr(pWnd);
-
-    }
-    else
+    len = InternalGetWindowText(sp_e->msg_hwnd, sp_e->wnd_name, sizeof(sp_e->wnd_name)/sizeof(WCHAR));
+    if(!len) /* get class name */
     {
-        strcpy( sp_e->wnd_name, "\"NULL\"" );
-        sp_e->wnd_class[0] = 0;
+	LPWSTR dst = sp_e->wnd_name;
+	LPWSTR src = sp_e->wnd_class;
+	int n = sizeof(sp_e->wnd_name)/sizeof(WCHAR) - 3;
+	*dst++ = '{';
+	while ((n-- > 0) && *src) *dst++ = *src++;
+	*dst++ = '}';
+	*dst = 0;
     }
-    return;
 }
 
 /***********************************************************************
@@ -1976,12 +1950,12 @@
     case SPY_DISPATCHMESSAGE16:
         TRACE("%*s(%04x) %-16s message [%04x] %s dispatched  wp=%04x lp=%08lx\n",
               SPY_IndentLevel, "", WIN_Handle16(hWnd),
-              sp_e.wnd_name, msg, sp_e.msg_name, wParam, lParam);
+              debugstr_w(sp_e.wnd_name), msg, sp_e.msg_name, wParam, lParam);
         break;
 
     case SPY_DISPATCHMESSAGE:
         TRACE("%*s(%08x) %-16s message [%04x] %s dispatched  wp=%08x lp=%08lx\n",
-                        SPY_IndentLevel, "", hWnd, sp_e.wnd_name, msg, 
+                        SPY_IndentLevel, "", hWnd, debugstr_w(sp_e.wnd_name), msg, 
                         sp_e.msg_name, wParam, lParam);
         break;
 
@@ -2001,11 +1975,11 @@
 
             if (iFlag == SPY_SENDMESSAGE16)
                 TRACE("%*s(%04x) %-16s message [%04x] %s sent from %s wp=%04x lp=%08lx\n",
-                      SPY_IndentLevel, "", WIN_Handle16(hWnd), sp_e.wnd_name, msg,
+                      SPY_IndentLevel, "", WIN_Handle16(hWnd), debugstr_w(sp_e.wnd_name), msg,
                       sp_e.msg_name, taskName, wParam, lParam );
             else
             {   TRACE("%*s(%08x) %-16s message [%04x] %s sent from %s wp=%08x lp=%08lx\n",
-			     SPY_IndentLevel, "", hWnd, sp_e.wnd_name, msg,
+			     SPY_IndentLevel, "", hWnd, debugstr_w(sp_e.wnd_name), msg,
 			     sp_e.msg_name, taskName, wParam, lParam );
 		SPY_DumpStructure(&sp_e, TRUE);
 	    }
@@ -2064,25 +2038,25 @@
 
     case SPY_RESULT_OK16:
         TRACE(" %*s(%04x) %-16s message [%04x] %s returned %08lx\n",
-              SPY_IndentLevel, "", WIN_Handle16(hWnd), sp_e.wnd_name, msg,
+              SPY_IndentLevel, "", WIN_Handle16(hWnd), debugstr_w(sp_e.wnd_name), msg,
               sp_e.msg_name, lReturn );
         break;
 
     case SPY_RESULT_OK:
         TRACE(" %*s(%08x) %-16s message [%04x] %s returned %08lx\n",
-                        SPY_IndentLevel, "", hWnd, sp_e.wnd_name, msg,
+                        SPY_IndentLevel, "", hWnd, debugstr_w(sp_e.wnd_name), msg,
                         sp_e.msg_name, lReturn );
 	SPY_DumpStructure(&sp_e, FALSE);
         break; 
 
     case SPY_RESULT_INVALIDHWND16:
         WARN(" %*s(%04x) %-16s message [%04x] %s HAS INVALID HWND\n",
-             SPY_IndentLevel, "", WIN_Handle16(hWnd), sp_e.wnd_name, msg, sp_e.msg_name );
+             SPY_IndentLevel, "", WIN_Handle16(hWnd), debugstr_w(sp_e.wnd_name), msg, sp_e.msg_name );
         break;
 
     case SPY_RESULT_INVALIDHWND:
         WARN(" %*s(%08x) %-16s message [%04x] %s HAS INVALID HWND\n",
-                        SPY_IndentLevel, "", hWnd, sp_e.wnd_name, msg,
+                        SPY_IndentLevel, "", hWnd, debugstr_w(sp_e.wnd_name), msg,
                         sp_e.msg_name );
         break;
    }
@@ -2168,8 +2142,8 @@
 	q = cc_array[i].classmsg;
 	while(q->name) {
 	    if (q->value <= j) {
-		ERR("Class message array out of order for class ""%s""\n",
-		    cc_array[i].classname);
+		ERR("Class message array out of order for class %s\n",
+		    debugstr_w(cc_array[i].classname));
 		ERR("  between values [%04x] %s and [%04x] %s\n",
 		    j, (q-1)->name, q->value, q->name);
 		break;






More information about the wine-patches mailing list