Moved style correcting code to the WM_CREATE handler and added
clearing of WS_EX_CLIENTEDGE and WS_EX_WINDOWEDGE as in Windows.
Added SetWindowPos(SWP_FRAMECHANGED) to make changes take effect.

diff --git a/dlls/comctl32/progress.c b/dlls/comctl32/progress.c
index c3bcc01..29eba06 100644
--- a/dlls/comctl32/progress.c
+++ b/dlls/comctl32/progress.c
@@ -64,7 +64,7 @@
     /* draw the background */
     FillRect(hdc, &rect, hbrBk);
 
-    rect.left++; rect.right--; rect.top++; rect.bottom--;
+    InflateRect(&rect, -1, -1);
 
     /* get the window style */
     dwStyle = GetWindowLongW (infoPtr->Self, GWL_STYLE);
@@ -202,17 +202,20 @@
     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:
-        dwExStyle = GetWindowLongW (hwnd, GWL_EXSTYLE);
-        SetWindowLongW (hwnd, GWL_EXSTYLE, dwExStyle | WS_EX_STATICEDGE);
-        return TRUE;
 
+    if (!infoPtr && message != WM_CREATE)
+        return DefWindowProcW( hwnd, message, wParam, lParam ); 
+
+    switch(message) {
     case WM_CREATE:
+        dwExStyle = GetWindowLongW (hwnd, GWL_EXSTYLE);
+	dwExStyle &= ~(WS_EX_CLIENTEDGE | WS_EX_WINDOWEDGE);
+	dwExStyle |= WS_EX_STATICEDGE;
+        SetWindowLongW (hwnd, GWL_EXSTYLE, dwExStyle | WS_EX_STATICEDGE);
+	/* Force recalculation of a non-client area */
+	SetWindowPos(hwnd, 0, 0, 0, 0, 0,
+	    SWP_FRAMECHANGED | SWP_NOSIZE | SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
+
         /* allocate memory for info struct */
         infoPtr = (PROGRESS_INFO *)COMCTL32_Alloc (sizeof(PROGRESS_INFO));
         if (!infoPtr) return -1;