comctl32: Set the sheet caption before invoking the sheet callback and before creating the pages.

This commit is contained in:
Huw Davies 2006-04-06 16:55:32 +01:00 committed by Alexandre Julliard
parent 6381e458c2
commit 517b85f989
5 changed files with 157 additions and 15 deletions

View File

@ -3427,21 +3427,6 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
}
}
if (psInfo->useCallback)
(*(psInfo->ppshheader.pfnCallback))(hwnd,
PSCB_INITIALIZED, (LPARAM)0);
idx = psInfo->active_page;
ppshpage = (LPCPROPSHEETPAGEW)psInfo->proppage[idx].hpage;
psInfo->active_page = -1;
PROPSHEET_SetCurSel(hwnd, idx, 1, psInfo->proppage[idx].hpage);
/* doing TCM_SETCURSEL seems to be needed even in case of PSH_WIZARD,
* as some programs call TCM_GETCURSEL to get the current selection
* from which to switch to the next page */
SendMessageW(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
if (!HIWORD(psInfo->ppshheader.pszCaption) &&
psInfo->ppshheader.hInstance)
{
@ -3457,6 +3442,22 @@ PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
psInfo->ppshheader.pszCaption);
}
if (psInfo->useCallback)
(*(psInfo->ppshheader.pfnCallback))(hwnd,
PSCB_INITIALIZED, (LPARAM)0);
idx = psInfo->active_page;
ppshpage = (LPCPROPSHEETPAGEW)psInfo->proppage[idx].hpage;
psInfo->active_page = -1;
PROPSHEET_SetCurSel(hwnd, idx, 1, psInfo->proppage[idx].hpage);
/* doing TCM_SETCURSEL seems to be needed even in case of PSH_WIZARD,
* as some programs call TCM_GETCURSEL to get the current selection
* from which to switch to the next page */
SendMessageW(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
return TRUE;
}

View File

@ -6,6 +6,8 @@ imagelist.ok
monthcal.ok
mru.ok
progress.ok
propsheet.ok
propsheet.res
subclass.ok
tab.ok
testlist.c

View File

@ -13,6 +13,7 @@ CTESTS = \
monthcal.c \
mru.c \
progress.c \
propsheet.c \
subclass.c \
tab.c \
toolbar.c \
@ -20,6 +21,8 @@ CTESTS = \
treeview.c \
updown.c
RC_SRCS = propsheet.rc
@MAKE_TEST_RULES@
### Dependencies:

View File

@ -0,0 +1,107 @@
/* Unit test suite for property sheet control.
*
* Copyright 2006 Huw Davies
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#define NONAMELESSUNION
#define NONAMELESSSTRUCT
#include <windows.h>
#include <commctrl.h>
#include "wine/test.h"
static int CALLBACK sheet_callback(HWND hwnd, UINT msg, LPARAM lparam)
{
switch(msg)
{
case PSCB_INITIALIZED:
{
char caption[256];
GetWindowTextA(hwnd, caption, sizeof(caption));
ok(!strcmp(caption,"test caption"), "caption: %s\n", caption);
return 0;
}
}
return 0;
}
static INT_PTR CALLBACK page_dlg_proc(HWND hwnd, UINT msg, WPARAM wparam,
LPARAM lparam)
{
switch(msg)
{
case WM_INITDIALOG:
{
HWND sheet = GetParent(hwnd);
char caption[256];
GetWindowTextA(sheet, caption, sizeof(caption));
ok(!strcmp(caption,"test caption"), "caption: %s\n", caption);
return TRUE;
}
case WM_NOTIFY:
{
NMHDR *nmhdr = (NMHDR *)lparam;
switch(nmhdr->code)
{
case PSN_APPLY:
return TRUE;
default:
return FALSE;
}
}
default:
return FALSE;
}
}
static void test_title(void)
{
HPROPSHEETPAGE hpsp[1];
PROPSHEETPAGEA psp;
PROPSHEETHEADERA psh;
HWND hdlg;
memset(&psp, 0, sizeof(psp));
psp.dwSize = sizeof(psp);
psp.dwFlags = 0;
psp.hInstance = GetModuleHandleW(NULL);
psp.u.pszTemplate = "prop_page1";
psp.u2.pszIcon = NULL;
psp.pfnDlgProc = page_dlg_proc;
psp.lParam = 0;
hpsp[0] = CreatePropertySheetPageA(&psp);
memset(&psh, 0, sizeof(psh));
psh.dwSize = sizeof(psh);
psh.dwFlags = PSH_MODELESS | PSH_USECALLBACK;
psh.pszCaption = "test caption";
psh.nPages = 1;
psh.hwndParent = GetDesktopWindow();
psh.u3.phpage = hpsp;
psh.pfnCallback = sheet_callback;
hdlg = (HWND)PropertySheetA(&psh);
DestroyWindow(hdlg);
}
START_TEST(propsheet)
{
test_title();
}

View File

@ -0,0 +1,29 @@
/* Resources for the unit test suite for property sheet control.
*
* Copyright 2006 Huw Davies
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include "windef.h"
#include "winuser.h"
PROP_PAGE1 DIALOG LOADONCALL MOVEABLE DISCARDABLE 5, 43, 227, 215
STYLE WS_POPUP | WS_CAPTION | WS_CLIPSIBLINGS | WS_VISIBLE
CAPTION "Page1"
FONT 8, "MS Shell Dlg"
{
LTEXT "Test", -1, 10, 6, 100, 8
}