Dmitry Timoshkov : comctl32: Add support for PSP_USEHEADERTITLE,
PSP_USEHEADERSUBTITLE
Alexandre Julliard
julliard at wine.codeweavers.com
Mon May 8 08:01:59 CDT 2006
Module: wine
Branch: refs/heads/master
Commit: 308813112e9b9bf510b320cda115d133dd397241
URL: http://source.winehq.org/git/?p=wine.git;a=commit;h=308813112e9b9bf510b320cda115d133dd397241
Author: Dmitry Timoshkov <dmitry at codeweavers.com>
Date: Fri May 5 22:58:55 2006 +0900
comctl32: Add support for PSP_USEHEADERTITLE, PSP_USEHEADERSUBTITLE
and PSP_HIDEHEADER in CreatePropertySheetPageA/W, handle resource ids.
---
dlls/comctl32/propsheet.c | 173 +++++++++++++++++++++++++++++++++++----------
1 files changed, 135 insertions(+), 38 deletions(-)
diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c
index f9d5a48..3985e7d 100644
--- a/dlls/comctl32/propsheet.c
+++ b/dlls/comctl32/propsheet.c
@@ -2925,26 +2925,69 @@ HPROPSHEETPAGE WINAPI CreatePropertyShee
memcpy(ppsp,lpPropSheetPage,min(lpPropSheetPage->dwSize,sizeof(PROPSHEETPAGEA)));
ppsp->dwFlags &= ~ PSP_INTERNAL_UNICODE;
- if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) && HIWORD( ppsp->u.pszTemplate ) )
- {
- int len = strlen(lpPropSheetPage->u.pszTemplate);
- ppsp->u.pszTemplate = Alloc( len+1 );
- strcpy( (LPSTR)ppsp->u.pszTemplate, lpPropSheetPage->u.pszTemplate );
- }
- if ( (ppsp->dwFlags & PSP_USEICONID) && HIWORD( ppsp->u2.pszIcon ) )
- {
- PROPSHEET_AtoW(&ppsp->u2.pszIcon, lpPropSheetPage->u2.pszIcon);
- }
+ if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) )
+ {
+ if (HIWORD( ppsp->u.pszTemplate ))
+ {
+ int len = strlen(lpPropSheetPage->u.pszTemplate) + 1;
+ ppsp->u.pszTemplate = Alloc( len );
+ strcpy( (LPSTR)ppsp->u.pszTemplate, lpPropSheetPage->u.pszTemplate );
+ }
+ }
- if ((ppsp->dwFlags & PSP_USETITLE) && HIWORD( ppsp->pszTitle ))
- {
- PROPSHEET_AtoW(&ppsp->pszTitle, lpPropSheetPage->pszTitle);
- }
- else if ( !(ppsp->dwFlags & PSP_USETITLE) )
- ppsp->pszTitle = NULL;
+ if (ppsp->dwFlags & PSP_USEICONID)
+ {
+ if (HIWORD( ppsp->u2.pszIcon ))
+ PROPSHEET_AtoW(&ppsp->u2.pszIcon, lpPropSheetPage->u2.pszIcon);
+ }
+
+ if (ppsp->dwFlags & PSP_USETITLE)
+ {
+ if (HIWORD( ppsp->pszTitle ))
+ PROPSHEET_AtoW( &ppsp->pszTitle, lpPropSheetPage->pszTitle );
+ else
+ {
+ int len = LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszTitle), NULL, 0 ) + 1;
+ ppsp->pszTitle = Alloc( len );
+ LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszTitle), (LPWSTR)ppsp->pszTitle, len );
+ }
+ }
+ else
+ ppsp->pszTitle = NULL;
- return (HPROPSHEETPAGE)ppsp;
+ if (ppsp->dwFlags & PSP_HIDEHEADER)
+ ppsp->dwFlags &= ~(PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE);
+
+ if (ppsp->dwFlags & PSP_USEHEADERTITLE)
+ {
+ if (HIWORD( ppsp->pszHeaderTitle ))
+ PROPSHEET_AtoW(&ppsp->pszHeaderTitle, lpPropSheetPage->pszHeaderTitle);
+ else
+ {
+ int len = LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderTitle), NULL, 0 ) + 1;
+ ppsp->pszHeaderTitle = Alloc( len );
+ LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderTitle), (LPWSTR)ppsp->pszHeaderTitle, len );
+ }
+ }
+ else
+ ppsp->pszHeaderTitle = NULL;
+
+ if (ppsp->dwFlags & PSP_USEHEADERSUBTITLE)
+ {
+ if (HIWORD( ppsp->pszHeaderSubTitle ))
+ PROPSHEET_AtoW(&ppsp->pszHeaderSubTitle, lpPropSheetPage->pszHeaderSubTitle);
+ else
+ {
+ int len = LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderSubTitle), NULL, 0 ) + 1;
+ ppsp->pszHeaderSubTitle = Alloc( len );
+ LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderSubTitle), (LPWSTR)ppsp->pszHeaderSubTitle, len );
+ }
+ }
+ else
+ ppsp->pszHeaderSubTitle = NULL;
+
+ return (HPROPSHEETPAGE)ppsp;
}
/******************************************************************************
@@ -2960,30 +3003,84 @@ HPROPSHEETPAGE WINAPI CreatePropertyShee
ppsp->dwFlags |= PSP_INTERNAL_UNICODE;
- if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) && HIWORD( ppsp->u.pszTemplate ) )
- {
- int len = strlenW(lpPropSheetPage->u.pszTemplate);
+ if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) )
+ {
+ if (HIWORD( ppsp->u.pszTemplate ))
+ {
+ int len = strlenW(lpPropSheetPage->u.pszTemplate) + 1;
+ ppsp->u.pszTemplate = Alloc( len * sizeof (WCHAR) );
+ strcpyW( (WCHAR *)ppsp->u.pszTemplate, lpPropSheetPage->u.pszTemplate );
+ }
+ }
- ppsp->u.pszTemplate = Alloc( (len+1)*sizeof (WCHAR) );
- strcpyW( (WCHAR *)ppsp->u.pszTemplate, lpPropSheetPage->u.pszTemplate );
- }
- if ( (ppsp->dwFlags & PSP_USEICONID) && HIWORD( ppsp->u2.pszIcon ) )
- {
- int len = strlenW(lpPropSheetPage->u2.pszIcon);
- ppsp->u2.pszIcon = Alloc( (len+1)*sizeof (WCHAR) );
- strcpyW( (WCHAR *)ppsp->u2.pszIcon, lpPropSheetPage->u2.pszIcon );
- }
+ if ( ppsp->dwFlags & PSP_USEICONID )
+ {
+ if (HIWORD( ppsp->u2.pszIcon ))
+ {
+ int len = strlenW(lpPropSheetPage->u2.pszIcon) + 1;
+ ppsp->u2.pszIcon = Alloc( len * sizeof (WCHAR) );
+ strcpyW( (WCHAR *)ppsp->u2.pszIcon, lpPropSheetPage->u2.pszIcon );
+ }
+ }
- if ((ppsp->dwFlags & PSP_USETITLE) && HIWORD( ppsp->pszTitle ))
- {
- int len = strlenW(lpPropSheetPage->pszTitle);
- ppsp->pszTitle = Alloc( (len+1)*sizeof (WCHAR) );
- strcpyW( (WCHAR *)ppsp->pszTitle, lpPropSheetPage->pszTitle );
- }
- else if ( !(ppsp->dwFlags & PSP_USETITLE) )
- ppsp->pszTitle = NULL;
+ if (ppsp->dwFlags & PSP_USETITLE)
+ {
+ if (HIWORD( ppsp->pszTitle ))
+ {
+ int len = strlenW(lpPropSheetPage->pszTitle) + 1;
+ ppsp->pszTitle = Alloc( len * sizeof (WCHAR) );
+ strcpyW( (WCHAR *)ppsp->pszTitle, lpPropSheetPage->pszTitle );
+ }
+ else
+ {
+ int len = LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszTitle), NULL, 0 ) + 1;
+ ppsp->pszTitle = Alloc( len );
+ LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszTitle), (LPWSTR)ppsp->pszTitle, len );
+ }
+ }
+ else
+ ppsp->pszTitle = NULL;
+
+ if (ppsp->dwFlags & PSP_HIDEHEADER)
+ ppsp->dwFlags &= ~(PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE);
+
+ if (ppsp->dwFlags & PSP_USEHEADERTITLE)
+ {
+ if (HIWORD( ppsp->pszHeaderTitle ))
+ {
+ int len = strlenW(lpPropSheetPage->pszHeaderTitle) + 1;
+ ppsp->pszHeaderTitle = Alloc( len * sizeof (WCHAR) );
+ strcpyW( (WCHAR *)ppsp->pszHeaderTitle, lpPropSheetPage->pszHeaderTitle );
+ }
+ else
+ {
+ int len = LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderTitle), NULL, 0 ) + 1;
+ ppsp->pszHeaderTitle = Alloc( len );
+ LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderTitle), (LPWSTR)ppsp->pszHeaderTitle, len );
+ }
+ }
+ else
+ ppsp->pszHeaderTitle = NULL;
+
+ if (ppsp->dwFlags & PSP_USEHEADERSUBTITLE)
+ {
+ if (HIWORD( ppsp->pszHeaderSubTitle ))
+ {
+ int len = strlenW(lpPropSheetPage->pszHeaderSubTitle) + 1;
+ ppsp->pszHeaderSubTitle = Alloc( len * sizeof (WCHAR) );
+ strcpyW( (WCHAR *)ppsp->pszHeaderSubTitle, lpPropSheetPage->pszHeaderSubTitle );
+ }
+ else
+ {
+ int len = LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderSubTitle), NULL, 0 ) + 1;
+ ppsp->pszHeaderSubTitle = Alloc( len );
+ LoadStringW( ppsp->hInstance, LOWORD(ppsp->pszHeaderSubTitle), (LPWSTR)ppsp->pszHeaderSubTitle, len );
+ }
+ }
+ else
+ ppsp->pszHeaderSubTitle = NULL;
- return (HPROPSHEETPAGE)ppsp;
+ return (HPROPSHEETPAGE)ppsp;
}
/******************************************************************************
More information about the wine-cvs
mailing list