This reverts Matts patch.  The messaging needs double checking.

diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index bff8274..6416bfd 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -1080,45 +1080,49 @@
  */
 static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo * psInfo)
 {
-  PSHNOTIFY psn;
-  HWND hwndTabCtrl;
-
   if (index == psInfo->active_page)
-  {
-     if (GetTopWindow(hwndDlg) != psInfo->proppage[index].hwndPage)
+    {
+      if (GetTopWindow(hwndDlg) != psInfo->proppage[index].hwndPage)
           SetWindowPos(psInfo->proppage[index].hwndPage, HWND_TOP, 0, 0, 0, 0, SWP_NOSIZE | SWP_NOMOVE);
-     return TRUE;
-  }
-
-  /* Synchronize current selection with tab control */
-  hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
-  SendMessageA(hwndTabCtrl, TCM_SETCURSEL, index, 0);
+    return TRUE;
+    }
 
   if (psInfo->proppage[index].hwndPage == 0)
   {
      LPCPROPSHEETPAGEA ppshpage;
+     PSHNOTIFY psn;
 
      ppshpage = (LPCPROPSHEETPAGEA)psInfo->proppage[index].hpage;
      PROPSHEET_CreatePage(hwndDlg, index, psInfo, ppshpage);
+
+     psn.hdr.hwndFrom = hwndDlg;
+     psn.hdr.code     = PSN_SETACTIVE;
+     psn.hdr.idFrom   = 0;
+     psn.lParam       = 0;
+
+     /* Send the notification before showing the page. */
+     SendMessageA(psInfo->proppage[index].hwndPage,
+                  WM_NOTIFY, 0, (LPARAM) &psn);
+
+     /*
+      * TODO: check return value. 
+      */
   }
 
-  psn.hdr.hwndFrom = hwndDlg;
-  psn.hdr.code     = PSN_SETACTIVE;
-  psn.hdr.idFrom   = 0;
-  psn.lParam       = 0;
-
-  /* Send the notification before showing the page. */
-  SendMessageA(psInfo->proppage[index].hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
-
-  /*
-   * TODO: check return value. 
-   */
-
   if (psInfo->active_page != -1)
      ShowWindow(psInfo->proppage[psInfo->active_page].hwndPage, SW_HIDE);
 
   ShowWindow(psInfo->proppage[index].hwndPage, SW_SHOW);
 
+  if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
+  {
+     HWND hwndTabCtrl;
+
+     /* Synchronize current selection with tab control */
+     hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
+     SendMessageA(hwndTabCtrl, TCM_SETCURSEL, index, 0);
+  }
+
   psInfo->active_page = index;
   psInfo->activeValid = TRUE;
 
@@ -1517,6 +1521,27 @@
   hwndPage = psInfo->proppage[index].hwndPage;
 
   /*
+   * Notify the new page if it's already created.
+   * If not it will get created and notified in PROPSHEET_ShowPage.
+   */
+  if (hwndPage)
+  {
+    int result;
+    PSHNOTIFY psn;
+
+    psn.hdr.code     = PSN_SETACTIVE;
+    psn.hdr.hwndFrom = hwndDlg;
+    psn.hdr.idFrom   = 0;
+    psn.lParam       = 0;
+
+    result = SendMessageA(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
+
+    /*
+     * TODO: check return value. 
+     */
+  }
+
+  /*
    * Display the new page.
    */
   PROPSHEET_ShowPage(hwndDlg, index, psInfo);
@@ -2110,7 +2135,8 @@
  
       PROPSHEET_SetCurSel(hwnd, idx, psInfo->proppage[idx].hpage);
 
-      SendMessageA(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
+      if (!(psInfo->ppshheader->dwFlags & PSH_WIZARD))
+        SendMessageA(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
 
       if (!HIWORD(psInfo->ppshheader->pszCaption) &&
               psInfo->ppshheader->hInstance)