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