Progress Comctrl cleanup

Dimitrie O. Paun dimi at cs.toronto.edu
Fri Jan 25 13:42:09 CST 2002


[Also sent in private email to Alexandre]

ChangeLog:
Code cleanup:
  -- add new SetRange functions (instead of duplicating the code)
  -- pass the infoPtr around instead of the hwnd
  -- use W-functions instead of A-functions
  -- more checks in case of failures
  -- make indentation and style consistent throughout the file

--
Dimi.
-------------- next part --------------
Index: dlls/comctl32/progress.c
===================================================================
RCS file: /var/cvs/wine/dlls/comctl32/progress.c,v
retrieving revision 1.16
diff -u -r1.16 progress.c
--- dlls/comctl32/progress.c	26 Jan 2001 20:43:41 -0000	1.16
+++ dlls/comctl32/progress.c	25 Jan 2002 04:42:12 -0000
@@ -1,7 +1,7 @@
 /*		
  * Progress control
  *
- * Copyright 1997 Dimitrie O. Paun
+ * Copyright 1997, 2002 Dimitrie O. Paun
  * Copyright 1998, 1999 Eric Kohl
  *
  */
@@ -15,140 +15,125 @@
 
 typedef struct
 {
-  INT       CurVal;       /* Current progress value */
-  INT       MinVal;       /* Minimum progress value */
-  INT       MaxVal;       /* Maximum progress value */
-  INT       Step;         /* Step to use on PMB_STEPIT */
-  COLORREF    ColorBar;     /* Bar color */
-  COLORREF    ColorBk;      /* Background color */
-  HFONT     hFont;        /* Handle to font (not unused) */
+    HWND      Self;         /* The window handle for this control */
+    INT       CurVal;       /* Current progress value */
+    INT       MinVal;       /* Minimum progress value */
+    INT       MaxVal;       /* Maximum progress value */
+    INT       Step;         /* Step to use on PMB_STEPIT */
+    COLORREF  ColorBar;     /* Bar color */
+    COLORREF  ColorBk;      /* Background color */
+    HFONT     Font;         /* Handle to font (not unused) */
 } PROGRESS_INFO;
 
 /* Control configuration constants */
 
 #define LED_GAP    2
 
-/* Work constants */
-
-#define UNKNOWN_PARAM(msg, wParam, lParam) WARN(\
-        "Unknown parameter(s) for message " #msg     \
-	"(%04x): wp=%04x lp=%08lx\n", msg, wParam, lParam); 
-
-#define PROGRESS_GetInfoPtr(hwnd) ((PROGRESS_INFO *)GetWindowLongA(hwnd, 0))
-
+#define UNKNOWN_PARAM(msg, wParam, lParam) WARN(       \
+   "Unknown parameter(s) for message " #msg            \
+   "(%04x): wp=%04x lp=%08lx\n", msg, wParam, lParam); 
 
 /***********************************************************************
  * PROGRESS_Draw
  * Draws the progress bar.
  */
-static void
-PROGRESS_Draw (HWND hwnd, HDC hdc)
+static LRESULT PROGRESS_Draw (PROGRESS_INFO *infoPtr, HDC hdc)
 {
-  PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd);
-  HBRUSH hbrBar, hbrBk;
-  int rightBar, rightMost, ledWidth;
-  RECT rect;
-  DWORD dwStyle;
-
-  TRACE("refresh pos=%d min=%d, max=%d\n",
-	       infoPtr->CurVal, infoPtr->MinVal, infoPtr->MaxVal);
-
-  /* get the required bar brush */
-  if (infoPtr->ColorBar == CLR_DEFAULT)
-    hbrBar = GetSysColorBrush(COLOR_HIGHLIGHT);
-  else
-    hbrBar = CreateSolidBrush (infoPtr->ColorBar);
-
-  /* get the required background brush */
-  if (infoPtr->ColorBk == CLR_DEFAULT)
-    hbrBk = GetSysColorBrush (COLOR_3DFACE);
-  else
-    hbrBk = CreateSolidBrush (infoPtr->ColorBk);
-
-  /* get client rectangle */
-  GetClientRect (hwnd, &rect);
-
-  /* draw the background */
-  FillRect(hdc, &rect, hbrBk);
-
-  rect.left++; rect.right--; rect.top++; rect.bottom--;
-
-  /* get the window style */
-  dwStyle = GetWindowLongA (hwnd, GWL_STYLE);
-
-  /* compute extent of progress bar */
-  if (dwStyle & PBS_VERTICAL)
-  {
-    rightBar = rect.bottom - 
-      MulDiv(infoPtr->CurVal-infoPtr->MinVal,
-	       rect.bottom - rect.top,
-	       infoPtr->MaxVal-infoPtr->MinVal);
-    ledWidth = MulDiv ((rect.right - rect.left), 2, 3);
-    rightMost = rect.top;
-  }
-  else
-  {
-    rightBar = rect.left + 
-      MulDiv(infoPtr->CurVal-infoPtr->MinVal,
-	       rect.right - rect.left,
-	       infoPtr->MaxVal-infoPtr->MinVal);
-    ledWidth = MulDiv ((rect.bottom - rect.top), 2, 3);
-    rightMost = rect.right;
-  }
-
-  /* now draw the bar */
-  if (dwStyle & PBS_SMOOTH)
-  {
-    if (dwStyle & PBS_VERTICAL)
-      rect.top = rightBar;
+    HBRUSH hbrBar, hbrBk;
+    int rightBar, rightMost, ledWidth;
+    RECT rect;
+    DWORD dwStyle;
+
+    TRACE("(infoPtr=%p, hdc=%x)\n", infoPtr, hdc);
+
+    /* get the required bar brush */
+    if (infoPtr->ColorBar == CLR_DEFAULT)
+        hbrBar = GetSysColorBrush(COLOR_HIGHLIGHT);
     else
-      rect.right = rightBar;
-    FillRect(hdc, &rect, hbrBar);
-  }
-  else
-  {
-    if (dwStyle & PBS_VERTICAL)
-  {
-      while(rect.bottom > rightBar) { 
-        rect.top = rect.bottom-ledWidth;
-        if (rect.top < rightMost)
-          rect.top = rightMost;
-        FillRect(hdc, &rect, hbrBar);
-        rect.bottom = rect.top-LED_GAP;
-      }
+        hbrBar = CreateSolidBrush (infoPtr->ColorBar);
+
+    /* get the required background brush */
+    if (infoPtr->ColorBk == CLR_DEFAULT)
+        hbrBk = GetSysColorBrush (COLOR_3DFACE);
+    else
+        hbrBk = CreateSolidBrush (infoPtr->ColorBk);
+
+    /* get client rectangle */
+    GetClientRect (infoPtr->Self, &rect);
+
+    /* draw the background */
+    FillRect(hdc, &rect, hbrBk);
+
+    rect.left++; rect.right--; rect.top++; rect.bottom--;
+
+    /* get the window style */
+    dwStyle = GetWindowLongW (infoPtr->Self, GWL_STYLE);
+
+    /* compute extent of progress bar */
+    if (dwStyle & PBS_VERTICAL) {
+        rightBar  = rect.bottom - 
+                    MulDiv (infoPtr->CurVal - infoPtr->MinVal,
+	                    rect.bottom - rect.top,
+	                    infoPtr->MaxVal - infoPtr->MinVal);
+        ledWidth  = MulDiv (rect.right - rect.left, 2, 3);
+        rightMost = rect.top;
+    } else {
+        rightBar = rect.left + 
+                   MulDiv (infoPtr->CurVal - infoPtr->MinVal,
+	                   rect.right - rect.left,
+	                   infoPtr->MaxVal - infoPtr->MinVal);
+        ledWidth = MulDiv (rect.bottom - rect.top, 2, 3);
+        rightMost = rect.right;
     }
-    else {
-      while(rect.left < rightBar) { 
-        rect.right = rect.left+ledWidth;
-        if (rect.right > rightMost)
-          rect.right = rightMost;
+
+    /* now draw the bar */
+    if (dwStyle & PBS_SMOOTH) {
+        if (dwStyle & PBS_VERTICAL) 
+	    rect.top = rightBar;
+        else 
+	    rect.right = rightBar;
         FillRect(hdc, &rect, hbrBar);
-        rect.left  = rect.right+LED_GAP;
-      }
-  }
-  }
-
-  /* delete bar brush */
-  if (infoPtr->ColorBar != CLR_DEFAULT)
-      DeleteObject (hbrBar);
-
-  /* delete background brush */
-  if (infoPtr->ColorBk != CLR_DEFAULT)
-      DeleteObject (hbrBk);
+    } else {
+        if (dwStyle & PBS_VERTICAL) {
+            while(rect.bottom > rightBar) { 
+                rect.top = rect.bottom - ledWidth;
+                if (rect.top < rightMost)
+                    rect.top = rightMost;
+                FillRect(hdc, &rect, hbrBar);
+                rect.bottom = rect.top - LED_GAP;
+            }
+        } else {
+            while(rect.left < rightBar) { 
+                rect.right = rect.left + ledWidth;
+                if (rect.right > rightMost)
+                    rect.right = rightMost;
+                FillRect(hdc, &rect, hbrBar);
+                rect.left  = rect.right + LED_GAP;
+            }
+        }
+    }
+
+    /* delete bar brush */
+    if (infoPtr->ColorBar != CLR_DEFAULT)
+        DeleteObject (hbrBar);
+
+    /* delete background brush */
+    if (infoPtr->ColorBk != CLR_DEFAULT)
+        DeleteObject (hbrBk);
+
+    return 0;
 }
 
 /***********************************************************************
  * PROGRESS_Refresh
  * Draw the progress bar. The background need not be erased.
  */
-static void
-PROGRESS_Refresh (HWND hwnd)
+static LRESULT PROGRESS_Refresh (PROGRESS_INFO *infoPtr)
 {
-    HDC hdc;
-
-    hdc = GetDC (hwnd);
-    PROGRESS_Draw (hwnd, hdc);
-    ReleaseDC (hwnd, hdc);
+    HDC hdc = GetDC (infoPtr->Self);
+    LRESULT res = PROGRESS_Draw (infoPtr, hdc);
+    ReleaseDC (infoPtr->Self, hdc);
+    return res;
 }
 
 /***********************************************************************
@@ -156,30 +141,27 @@
  * Draw the progress bar. The background need not be erased.
  * If dc!=0, it draws on it
  */
-static void
-PROGRESS_Paint (HWND hwnd)
+static LRESULT PROGRESS_Paint (PROGRESS_INFO *infoPtr, HDC hdc)
 {
     PAINTSTRUCT ps;
-    HDC hdc;
-
-    hdc = BeginPaint (hwnd, &ps);
-    PROGRESS_Draw (hwnd, hdc);
-    EndPaint (hwnd, &ps);
+    if (hdc) return PROGRESS_Draw (infoPtr, hdc);
+    hdc = BeginPaint (infoPtr->Self, &ps);
+    PROGRESS_Draw (infoPtr, hdc);
+    EndPaint (infoPtr->Self, &ps);
+    return 0;
 }
 
 
 /***********************************************************************
  *           PROGRESS_CoercePos
- * Makes sure the current position (CUrVal) is within bounds.
+ * Makes sure the current position (CurVal) is within bounds.
  */
-static void PROGRESS_CoercePos(HWND hwnd)
+static void PROGRESS_CoercePos(PROGRESS_INFO *infoPtr)
 {
-    PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 
-
-  if(infoPtr->CurVal < infoPtr->MinVal)
-    infoPtr->CurVal = infoPtr->MinVal;
-  if(infoPtr->CurVal > infoPtr->MaxVal)
-    infoPtr->CurVal = infoPtr->MaxVal;
+    if(infoPtr->CurVal < infoPtr->MinVal)
+        infoPtr->CurVal = infoPtr->MinVal;
+    if(infoPtr->CurVal > infoPtr->MaxVal)
+        infoPtr->CurVal = infoPtr->MaxVal;
 }
 
 
@@ -187,18 +169,29 @@
  *           PROGRESS_SetFont
  * Set new Font for progress bar
  */
-static HFONT
-PROGRESS_SetFont (HWND hwnd, WPARAM wParam, LPARAM lParam)
+static HFONT PROGRESS_SetFont (PROGRESS_INFO *infoPtr, HFONT hFont, BOOL bRedraw)
 {
-    PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 
-  HFONT hOldFont = infoPtr->hFont;
-
-  infoPtr->hFont = (HFONT)wParam;
-  if (LOWORD(lParam))
-	PROGRESS_Refresh (hwnd);
-  return hOldFont;
+    HFONT hOldFont = infoPtr->Font;
+    infoPtr->Font = hFont;
+    if (bRedraw) PROGRESS_Refresh (infoPtr);
+    return hOldFont;
 }
 
+static DWORD PROGRESS_SetRange (PROGRESS_INFO *infoPtr, int low, int high)
+{
+    DWORD res = MAKELONG(LOWORD(infoPtr->MinVal), LOWORD(infoPtr->MaxVal));
+
+    /* if nothing changes, simply return */
+    if(infoPtr->MinVal == low && infoPtr->MaxVal == high) return res;
+    
+    /* if things are different, adjust values and repaint the control */
+    if (high <= low) high = low + 1;
+    infoPtr->MinVal = low;
+    infoPtr->MaxVal = high;
+    PROGRESS_CoercePos(infoPtr);
+    PROGRESS_Refresh (infoPtr);
+    return res;
+}
 
 /***********************************************************************
  *           ProgressWindowProc
@@ -206,159 +199,126 @@
 static LRESULT WINAPI ProgressWindowProc(HWND hwnd, UINT message, 
                                   WPARAM wParam, LPARAM lParam)
 {
-    PROGRESS_INFO *infoPtr = PROGRESS_GetInfoPtr(hwnd); 
-  UINT temp;
-  if (!infoPtr && (message != WM_CREATE))
-      return DefWindowProcA( hwnd, message, wParam, lParam ); 
-  switch(message)
-    {
+    PROGRESS_INFO *infoPtr = (PROGRESS_INFO *)GetWindowLongW(hwnd, 0);
+    DWORD dwExStyle;
+    UINT temp;
+  
+    if (!infoPtr && message != WM_CREATE && message != WM_NCCREATE)
+        return DefWindowProcW( hwnd, message, wParam, lParam ); 
+  
+    switch(message) {
     case WM_NCCREATE:
-	    {
-		DWORD dwExStyle;
-		dwExStyle = GetWindowLongA (hwnd, GWL_EXSTYLE);
-		SetWindowLongA (hwnd, GWL_EXSTYLE, dwExStyle | WS_EX_STATICEDGE);
-	    }
-      return TRUE;
+        dwExStyle = GetWindowLongW (hwnd, GWL_EXSTYLE);
+        SetWindowLongW (hwnd, GWL_EXSTYLE, dwExStyle | WS_EX_STATICEDGE);
+        return TRUE;
 
     case WM_CREATE:
-      /* allocate memory for info struct */
-      infoPtr = 
-	(PROGRESS_INFO *)COMCTL32_Alloc (sizeof(PROGRESS_INFO));
-      SetWindowLongA (hwnd, 0, (DWORD)infoPtr);
-
-      /* initialize the info struct */
-      infoPtr->MinVal=0; 
-      infoPtr->MaxVal=100;
-      infoPtr->CurVal=0; 
-      infoPtr->Step=10;
-      infoPtr->ColorBar=CLR_DEFAULT;
-      infoPtr->ColorBk=CLR_DEFAULT;
-      infoPtr->hFont=(HANDLE)NULL;
-      TRACE("Progress Ctrl creation, hwnd=%04x\n", hwnd);
-      break;
+        /* allocate memory for info struct */
+        infoPtr = (PROGRESS_INFO *)COMCTL32_Alloc (sizeof(PROGRESS_INFO));
+        if (!infoPtr) return -1;
+        SetWindowLongW (hwnd, 0, (DWORD)infoPtr);
+
+        /* initialize the info struct */
+        infoPtr->Self = hwnd;
+        infoPtr->MinVal = 0; 
+        infoPtr->MaxVal = 100;
+        infoPtr->CurVal = 0; 
+        infoPtr->Step = 10;
+        infoPtr->ColorBar = CLR_DEFAULT;
+        infoPtr->ColorBk = CLR_DEFAULT;
+        infoPtr->Font = 0;
+        TRACE("Progress Ctrl creation, hwnd=%04x\n", hwnd);
+        return 0;
     
     case WM_DESTROY:
-      TRACE("Progress Ctrl destruction, hwnd=%04x\n", hwnd);
-      COMCTL32_Free (infoPtr);
-      SetWindowLongA(hwnd, 0, 0);
-      break;
+        TRACE("Progress Ctrl destruction, hwnd=%04x\n", hwnd);
+        COMCTL32_Free (infoPtr);
+        SetWindowLongW(hwnd, 0, 0);
+        return 0;
 
     case WM_ERASEBKGND:
-      /* pretend to erase it here, but we will do it in the paint
-	 function to avoid flicker */
-      return 1;
+        /* pretend to erase it here, but we will do it in the paint
+	   function to avoid flicker */
+        return TRUE;
 	
     case WM_GETFONT:
-      return (LRESULT)infoPtr->hFont;
+        return (LRESULT)infoPtr->Font;
 
     case WM_SETFONT:
-      return PROGRESS_SetFont (hwnd, wParam, lParam);
+        return PROGRESS_SetFont (infoPtr, (HFONT)wParam, (BOOL)lParam);
 
     case WM_PAINT:
-      PROGRESS_Paint (hwnd);
-      break;
+        return PROGRESS_Paint (infoPtr, (HDC)wParam);
     
     case PBM_DELTAPOS:
-      if(lParam)
-	UNKNOWN_PARAM(PBM_DELTAPOS, wParam, lParam);
-      temp = infoPtr->CurVal;
-      if(wParam != 0){
-	infoPtr->CurVal += (WORD)wParam;
-	PROGRESS_CoercePos (hwnd);
-	PROGRESS_Refresh (hwnd);
-      }
-      return temp;
+        if(lParam) UNKNOWN_PARAM(PBM_DELTAPOS, wParam, lParam);
+        temp = infoPtr->CurVal;
+        if(wParam != 0) {
+	    infoPtr->CurVal += (WORD)wParam;
+	    PROGRESS_CoercePos (infoPtr);
+	    PROGRESS_Refresh (infoPtr);
+        }
+        return temp;
 
     case PBM_SETPOS:
-      if (lParam)
-	UNKNOWN_PARAM(PBM_SETPOS, wParam, lParam);
-      temp = infoPtr->CurVal;
-      if(temp != wParam){
-	infoPtr->CurVal = (WORD)wParam;
-	PROGRESS_CoercePos(hwnd);
-	PROGRESS_Refresh (hwnd);
-      }
-      return temp;          
+        if (lParam) UNKNOWN_PARAM(PBM_SETPOS, wParam, lParam);
+        temp = infoPtr->CurVal;
+        if(temp != wParam) {
+	    infoPtr->CurVal = (WORD)wParam;
+	    PROGRESS_CoercePos(infoPtr);
+	    PROGRESS_Refresh (infoPtr);
+        }
+        return temp;          
       
     case PBM_SETRANGE:
-      if (wParam)
-	UNKNOWN_PARAM(PBM_SETRANGE, wParam, lParam);
-      temp = MAKELONG(infoPtr->MinVal, infoPtr->MaxVal);
-      if(temp != lParam){
-	infoPtr->MinVal = LOWORD(lParam); 
-	infoPtr->MaxVal = HIWORD(lParam);
-	if(infoPtr->MaxVal <= infoPtr->MinVal)
-	  infoPtr->MaxVal = infoPtr->MinVal+1;
-	PROGRESS_CoercePos(hwnd);
-	PROGRESS_Refresh (hwnd);
-      }
-      return temp;
+        if (wParam) UNKNOWN_PARAM(PBM_SETRANGE, wParam, lParam);
+        return PROGRESS_SetRange (infoPtr, (int)LOWORD(lParam), (int)HIWORD(lParam));
 
     case PBM_SETSTEP:
-      if (lParam)
-	UNKNOWN_PARAM(PBM_SETSTEP, wParam, lParam);
-      temp = infoPtr->Step;   
-      infoPtr->Step = (WORD)wParam;   
-      return temp;
+        if (lParam) UNKNOWN_PARAM(PBM_SETSTEP, wParam, lParam);
+        temp = infoPtr->Step;   
+        infoPtr->Step = (WORD)wParam;   
+        return temp;
 
     case PBM_STEPIT:
-      if (wParam || lParam)
-	UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam);
-      temp = infoPtr->CurVal;   
-      infoPtr->CurVal += infoPtr->Step;
-      if(infoPtr->CurVal > infoPtr->MaxVal)
-	infoPtr->CurVal = infoPtr->MinVal;
-      if(temp != infoPtr->CurVal)
-	PROGRESS_Refresh (hwnd);
-      return temp;
+        if (wParam || lParam) UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam);
+        temp = infoPtr->CurVal;   
+        infoPtr->CurVal += infoPtr->Step;
+        if(infoPtr->CurVal > infoPtr->MaxVal)
+	    infoPtr->CurVal = infoPtr->MinVal;
+        if(temp != infoPtr->CurVal)
+	    PROGRESS_Refresh (infoPtr);
+        return temp;
 
     case PBM_SETRANGE32:
-      temp = MAKELONG(infoPtr->MinVal, infoPtr->MaxVal);
-      if((infoPtr->MinVal != (INT)wParam) ||
-         (infoPtr->MaxVal != (INT)lParam)) {
-	infoPtr->MinVal = (INT)wParam;
-	infoPtr->MaxVal = (INT)lParam;
-	if(infoPtr->MaxVal <= infoPtr->MinVal)
-	  infoPtr->MaxVal = infoPtr->MinVal+1;
-	PROGRESS_CoercePos(hwnd);
-	PROGRESS_Refresh (hwnd);
-      }
-      return temp;
+        return PROGRESS_SetRange (infoPtr, (int)wParam, (int)lParam);
     
     case PBM_GETRANGE:
-      if (lParam){
-        ((PPBRANGE)lParam)->iLow = infoPtr->MinVal;
-        ((PPBRANGE)lParam)->iHigh = infoPtr->MaxVal;
-      }
-      return (wParam) ? infoPtr->MinVal : infoPtr->MaxVal;
+        if (lParam) {
+            ((PPBRANGE)lParam)->iLow = infoPtr->MinVal;
+            ((PPBRANGE)lParam)->iHigh = infoPtr->MaxVal;
+        }
+        return wParam ? infoPtr->MinVal : infoPtr->MaxVal;
 
     case PBM_GETPOS:
-      if (wParam || lParam)
-	UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam);
-      return (infoPtr->CurVal);
+        if (wParam || lParam) UNKNOWN_PARAM(PBM_STEPIT, wParam, lParam);
+        return infoPtr->CurVal;
 
     case PBM_SETBARCOLOR:
-      if (wParam)
-	UNKNOWN_PARAM(PBM_SETBARCOLOR, wParam, lParam);
-      infoPtr->ColorBar = (COLORREF)lParam;     
-      PROGRESS_Refresh (hwnd);
-      break;
+        if (wParam) UNKNOWN_PARAM(PBM_SETBARCOLOR, wParam, lParam);
+        infoPtr->ColorBar = (COLORREF)lParam;     
+        return PROGRESS_Refresh (infoPtr);
 
     case PBM_SETBKCOLOR:
-      if (wParam)
-	UNKNOWN_PARAM(PBM_SETBKCOLOR, wParam, lParam);
-      infoPtr->ColorBk = (COLORREF)lParam;
-      PROGRESS_Refresh (hwnd);
-      break;
+        if (wParam) UNKNOWN_PARAM(PBM_SETBKCOLOR, wParam, lParam);
+        infoPtr->ColorBk = (COLORREF)lParam;
+        return PROGRESS_Refresh (infoPtr);
 
     default: 
-      if (message >= WM_USER) 
-	ERR("unknown msg %04x wp=%04x lp=%08lx\n", 
-		    message, wParam, lParam );
-      return DefWindowProcA( hwnd, message, wParam, lParam ); 
+        if (message >= WM_USER) 
+	    ERR("unknown msg %04x wp=%04x lp=%08lx\n", message, wParam, lParam );
+        return DefWindowProcW( hwnd, message, wParam, lParam ); 
     } 
-
-    return 0;
 }
 
 
@@ -367,21 +327,19 @@
  *
  * Registers the progress bar window class.
  */
-
-VOID
-PROGRESS_Register (void)
+VOID PROGRESS_Register (void)
 {
-    WNDCLASSA wndClass;
+    WNDCLASSW wndClass;
 
-    ZeroMemory (&wndClass, sizeof( WNDCLASSA));
+    ZeroMemory (&wndClass, sizeof(wndClass));
     wndClass.style         = CS_GLOBALCLASS | CS_VREDRAW | CS_HREDRAW;
     wndClass.lpfnWndProc   = (WNDPROC)ProgressWindowProc;
     wndClass.cbClsExtra    = 0;
     wndClass.cbWndExtra    = sizeof (PROGRESS_INFO *);
-    wndClass.hCursor       = LoadCursorA (0, IDC_ARROWA);
-    wndClass.lpszClassName = PROGRESS_CLASSA;
+    wndClass.hCursor       = LoadCursorW (0, IDC_ARROWW);
+    wndClass.lpszClassName = PROGRESS_CLASSW;
 
-    RegisterClassA (&wndClass);
+    RegisterClassW (&wndClass);
 }
 
 
@@ -390,10 +348,8 @@
  *
  * Unregisters the progress bar window class.
  */
-
-VOID
-PROGRESS_Unregister (void)
+VOID PROGRESS_Unregister (void)
 {
-    UnregisterClassA (PROGRESS_CLASSA, (HINSTANCE)NULL);
+    UnregisterClassW (PROGRESS_CLASSW, (HINSTANCE)NULL);
 }
 


More information about the wine-patches mailing list