Made access to the wnd struct thread-safe.

diff --git a/windows/winproc.c b/windows/winproc.c
index d26886c..2541d22 100644
--- a/windows/winproc.c
+++ b/windows/winproc.c
@@ -391,9 +391,13 @@
  * Return TRUE if the lparam is a string
  */
 BOOL WINPROC_TestCBForStr ( HWND hwnd )
-{	WND * wnd = WIN_FindWndPtr(hwnd); 
-	return ( !(LOWORD(wnd->dwStyle) & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) ||
+{
+    BOOL retvalue;
+    WND * wnd = WIN_FindWndPtr(hwnd);
+    retvalue = ( !(LOWORD(wnd->dwStyle) & (CBS_OWNERDRAWFIXED | CBS_OWNERDRAWVARIABLE)) ||
 	      (LOWORD(wnd->dwStyle) & CBS_HASSTRINGS) );
+    WIN_ReleaseWndPtr(wnd);
+    return retvalue;
 }
 /**********************************************************************
  *	     WINPROC_TestLBForStr
@@ -401,9 +405,14 @@
  * Return TRUE if the lparam is a string
  */
 BOOL WINPROC_TestLBForStr ( HWND hwnd )
-{	WND * wnd = WIN_FindWndPtr(hwnd); 
-	return ( !(LOWORD(wnd->dwStyle) & (LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE)) || 
+{
+    BOOL retvalue;
+    WND * wnd = WIN_FindWndPtr(hwnd); 
+    retvalue = ( !(LOWORD(wnd->dwStyle) & (LBS_OWNERDRAWFIXED | LBS_OWNERDRAWVARIABLE)) ||
 	    (LOWORD(wnd->dwStyle) & LBS_HASSTRINGS) );
+    WIN_ReleaseWndPtr(wnd);
+    return retvalue;
+
 }
 /**********************************************************************
  *	     WINPROC_MapMsg32ATo32W
@@ -1681,8 +1690,10 @@
         *plparam = MAKELPARAM( HIWORD(wParam32), (HMENU16)*plparam );
         return 0;
     case WM_MDIACTIVATE:
-	if( WIDGETS_IsControl(WIN_FindWndPtr(hwnd), BIC32_MDICLIENT) )
 	{
+            WND *tempWnd = WIN_FindWndPtr(hwnd);
+            if( WIDGETS_IsControl(tempWnd, BIC32_MDICLIENT) )
+            {
 	    *pwparam16 = (HWND)wParam32;
 	    *plparam = 0;
 	}
@@ -1692,6 +1703,8 @@
 	    *plparam = MAKELPARAM( (HWND16)LOWORD(*plparam),
 				   (HWND16)LOWORD(wParam32) );
 	}
+            WIN_ReleaseWndPtr(tempWnd);
+        }
         return 0;
     case WM_NCCALCSIZE:
         {