ReactOS  0.4.13-dev-247-g0f29b3f
propsheet.c File Reference
#include <stdarg.h>
#include <string.h>
#include "windef.h"
#include "winbase.h"
#include "wingdi.h"
#include "winuser.h"
#include "winnls.h"
#include "commctrl.h"
#include "prsht.h"
#include "comctl32.h"
#include "uxtheme.h"
#include "wine/debug.h"
#include "wine/unicode.h"
#include "pshpack2.h"
#include "poppack.h"
Include dependency graph for propsheet.c:

Go to the source code of this file.

Classes

struct  MyDLGTEMPLATEEX
 
struct  MyDLGITEMTEMPLATEEX
 
struct  tagPropPageInfo
 
struct  tagPropSheetInfo
 
struct  PADDING_INFO
 

Macros

#define NONAMELESSUNION
 
#define PSP_INTERNAL_UNICODE   0x80000000
 
#define MAX_CAPTION_LENGTH   255
 
#define MAX_TABTEXT_LENGTH   255
 
#define MAX_BUTTONTEXT_LENGTH   64
 
#define INTRNL_ANY_WIZARD   (PSH_WIZARD | PSH_WIZARD97_OLD | PSH_WIZARD97_NEW | PSH_WIZARD_LITE)
 
#define WIZARD_PADDING   7
 
#define WIZARD_HEADER_HEIGHT   36
 
#define add_flag(a)   if (dwFlags & a) {strcat(string, #a );strcat(string," ");}
 

Typedefs

typedef struct tagPropPageInfo PropPageInfo
 
typedef struct tagPropSheetInfo PropSheetInfo
 

Functions

static PADDING_INFO PROPSHEET_GetPaddingInfo (HWND hwndDlg)
 
static void PROPSHEET_SetTitleW (HWND hwndDlg, DWORD dwStyle, LPCWSTR lpszText)
 
static BOOL PROPSHEET_CanSetCurSel (HWND hwndDlg)
 
static BOOL PROPSHEET_SetCurSel (HWND hwndDlg, int index, int skipdir, HPROPSHEETPAGE hpage)
 
static int PROPSHEET_GetPageIndex (HPROPSHEETPAGE hpage, const PropSheetInfo *psInfo, int original_index)
 
static PADDING_INFO PROPSHEET_GetPaddingInfoWizard (HWND hwndDlg, const PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_DoCommand (HWND hwnd, WORD wID)
 
static BOOL PROPSHEET_RemovePage (HWND hwndDlg, int index, HPROPSHEETPAGE hpage)
 
static INT_PTR CALLBACK PROPSHEET_DialogProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
 
 WINE_DEFAULT_DEBUG_CHANNEL (propsheet)
 
static WCHARheap_strdupW (const WCHAR *str)
 
static WCHARheap_strdupAtoW (const char *str)
 
static VOID PROPSHEET_UnImplementedFlags (DWORD dwFlags)
 
static void PROPSHEET_GetPageRect (const PropSheetInfo *psInfo, HWND hwndDlg, RECT *rc, LPCPROPSHEETPAGEW ppshpage)
 
static INT PROPSHEET_FindPageByResId (const PropSheetInfo *psInfo, LRESULT resId)
 
static void PROPSHEET_CollectSheetInfoCommon (PropSheetInfo *psInfo, DWORD dwFlags)
 
static void PROPSHEET_CollectSheetInfoA (LPCPROPSHEETHEADERA lppsh, PropSheetInfo *psInfo)
 
static void PROPSHEET_CollectSheetInfoW (LPCPROPSHEETHEADERW lppsh, PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_CollectPageInfo (LPCPROPSHEETPAGEW lppsp, PropSheetInfo *psInfo, int index, BOOL resize)
 
static INT_PTR PROPSHEET_CreateDialog (PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_SizeMismatch (HWND hwndDlg, const PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_AdjustSize (HWND hwndDlg, PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_AdjustSizeWizard (HWND hwndDlg, const PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_AdjustButtons (HWND hwndParent, const PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_AdjustButtonsWizard (HWND hwndParent, const PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_CreateTabControl (HWND hwndParent, const PropSheetInfo *psInfo)
 
static LRESULT CALLBACK PROPSHEET_WizardSubclassProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uID, DWORD_PTR dwRef)
 
static UINT GetTemplateSize (const DLGTEMPLATE *pTemplate)
 
static BOOL PROPSHEET_CreatePage (HWND hwndParent, int index, const PropSheetInfo *psInfo, LPCPROPSHEETPAGEW ppshpage)
 
static VOID PROPSHEET_LoadWizardBitmaps (PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_ShowPage (HWND hwndDlg, int index, PropSheetInfo *psInfo)
 
static BOOL PROPSHEET_Back (HWND hwndDlg)
 
static BOOL PROPSHEET_Next (HWND hwndDlg)
 
static BOOL PROPSHEET_Finish (HWND hwndDlg)
 
static BOOL PROPSHEET_Apply (HWND hwndDlg, LPARAM lParam)
 
static void PROPSHEET_Cancel (HWND hwndDlg, LPARAM lParam)
 
static void PROPSHEET_Help (HWND hwndDlg)
 
static void PROPSHEET_Changed (HWND hwndDlg, HWND hwndDirtyPage)
 
static void PROPSHEET_UnChanged (HWND hwndDlg, HWND hwndCleanPage)
 
static void PROPSHEET_PressButton (HWND hwndDlg, int buttonID)
 
static void PROPSHEET_SetCurSelId (HWND hwndDlg, int id)
 
static void PROPSHEET_SetTitleA (HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText)
 
static void PROPSHEET_SetFinishTextA (HWND hwndDlg, LPCSTR lpszText)
 
static void PROPSHEET_SetFinishTextW (HWND hwndDlg, LPCWSTR lpszText)
 
static LRESULT PROPSHEET_QuerySiblings (HWND hwndDlg, WPARAM wParam, LPARAM lParam)
 
static BOOL PROPSHEET_InsertPage (HWND hwndDlg, HPROPSHEETPAGE hpageInsertAfter, HPROPSHEETPAGE hpage)
 
static BOOL PROPSHEET_AddPage (HWND hwndDlg, HPROPSHEETPAGE hpage)
 
static void PROPSHEET_SetWizButtons (HWND hwndDlg, DWORD dwFlags)
 
static void PROPSHEET_SetHeaderTitleW (HWND hwndDlg, UINT page_index, const WCHAR *title)
 
static void PROPSHEET_SetHeaderTitleA (HWND hwndDlg, UINT page_index, const char *title)
 
static void PROPSHEET_SetHeaderSubTitleW (HWND hwndDlg, UINT page_index, const WCHAR *subtitle)
 
static void PROPSHEET_SetHeaderSubTitleA (HWND hwndDlg, UINT page_index, const char *subtitle)
 
static LRESULT PROPSHEET_HwndToIndex (HWND hwndDlg, HWND hPageDlg)
 
static LRESULT PROPSHEET_IndexToHwnd (HWND hwndDlg, int iPageIndex)
 
static LRESULT PROPSHEET_PageToIndex (HWND hwndDlg, HPROPSHEETPAGE hPage)
 
static LRESULT PROPSHEET_IndexToPage (HWND hwndDlg, int iPageIndex)
 
static LRESULT PROPSHEET_IdToIndex (HWND hwndDlg, int iPageId)
 
static LRESULT PROPSHEET_IndexToId (HWND hwndDlg, int iPageIndex)
 
static LRESULT PROPSHEET_GetResult (HWND hwndDlg)
 
static BOOL PROPSHEET_RecalcPageSizes (HWND hwndDlg)
 
static void PROPSHEET_CleanUp (HWND hwndDlg)
 
static INT do_loop (const PropSheetInfo *psInfo)
 
static INT_PTR PROPSHEET_PropertySheet (PropSheetInfo *psInfo, BOOL unicode)
 
INT_PTR WINAPI PropertySheetA (LPCPROPSHEETHEADERA lppsh)
 
INT_PTR WINAPI PropertySheetW (LPCPROPSHEETHEADERW lppsh)
 
static LPWSTR load_string (HINSTANCE instance, LPCWSTR str)
 
HPROPSHEETPAGE WINAPI CreatePropertySheetPageA (LPCPROPSHEETPAGEA lpPropSheetPage)
 
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW (LPCPROPSHEETPAGEW lpPropSheetPage)
 
BOOL WINAPI DestroyPropertySheetPage (HPROPSHEETPAGE hPropPage)
 
static BOOL PROPSHEET_IsDialogMessage (HWND hwnd, LPMSG lpMsg)
 
static LRESULT PROPSHEET_Paint (HWND hwnd, HDC hdcParam)
 

Variables

static const WCHAR PropSheetInfoStr []
 

Macro Definition Documentation

◆ add_flag

#define add_flag (   a)    if (dwFlags & a) {strcat(string, #a );strcat(string," ");}

Definition at line 198 of file propsheet.c.

◆ INTRNL_ANY_WIZARD

#define INTRNL_ANY_WIZARD   (PSH_WIZARD | PSH_WIZARD97_OLD | PSH_WIZARD97_NEW | PSH_WIZARD_LITE)

Definition at line 152 of file propsheet.c.

◆ MAX_BUTTONTEXT_LENGTH

#define MAX_BUTTONTEXT_LENGTH   64

Definition at line 150 of file propsheet.c.

◆ MAX_CAPTION_LENGTH

#define MAX_CAPTION_LENGTH   255

Definition at line 148 of file propsheet.c.

◆ MAX_TABTEXT_LENGTH

#define MAX_TABTEXT_LENGTH   255

Definition at line 149 of file propsheet.c.

◆ NONAMELESSUNION

#define NONAMELESSUNION

Definition at line 55 of file propsheet.c.

◆ PSP_INTERNAL_UNICODE

#define PSP_INTERNAL_UNICODE   0x80000000

Definition at line 146 of file propsheet.c.

◆ WIZARD_HEADER_HEIGHT

#define WIZARD_HEADER_HEIGHT   36

Definition at line 156 of file propsheet.c.

◆ WIZARD_PADDING

#define WIZARD_PADDING   7

Definition at line 155 of file propsheet.c.

Typedef Documentation

◆ PropPageInfo

◆ PropSheetInfo

Function Documentation

◆ CreatePropertySheetPageA()

HPROPSHEETPAGE WINAPI CreatePropertySheetPageA ( LPCPROPSHEETPAGEA  lpPropSheetPage)

Definition at line 2982 of file propsheet.c.

2984 {
2985  PROPSHEETPAGEW *ppsp;
2986 
2987  if (lpPropSheetPage->dwSize < PROPSHEETPAGEA_V1_SIZE)
2988  return NULL;
2989 
2990  /* original data is used for callback notifications */
2991  if ((lpPropSheetPage->dwFlags & PSP_USECALLBACK) && lpPropSheetPage->pfnCallback)
2992  {
2993  ppsp = Alloc(2 * sizeof(*ppsp));
2994  memcpy(ppsp, lpPropSheetPage, min(lpPropSheetPage->dwSize, sizeof(PROPSHEETPAGEA)));
2995  memcpy(ppsp + 1, lpPropSheetPage, min(lpPropSheetPage->dwSize, sizeof(PROPSHEETPAGEA)));
2996  }
2997  else
2998  {
2999  ppsp = Alloc(sizeof(*ppsp));
3000  memcpy(ppsp, lpPropSheetPage, min(lpPropSheetPage->dwSize, sizeof(PROPSHEETPAGEA)));
3001  }
3002 
3003  ppsp->dwFlags &= ~PSP_INTERNAL_UNICODE;
3004 
3005  if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) )
3006  {
3007  if (!IS_INTRESOURCE( ppsp->u.pszTemplate ))
3008  {
3009  int len = strlen(lpPropSheetPage->u.pszTemplate) + 1;
3010  char *template = Alloc( len );
3011 
3012  ppsp->u.pszTemplate = (LPWSTR)strcpy( template, lpPropSheetPage->u.pszTemplate );
3013  }
3014  }
3015 
3016  if (ppsp->dwFlags & PSP_USEICONID)
3017  {
3018  if (!IS_INTRESOURCE( ppsp->u2.pszIcon ))
3019  ppsp->u2.pszIcon = heap_strdupAtoW( lpPropSheetPage->u2.pszIcon );
3020  }
3021 
3022  if (ppsp->dwFlags & PSP_USETITLE)
3023  {
3024  if (IS_INTRESOURCE( ppsp->pszTitle ))
3025  ppsp->pszTitle = load_string( ppsp->hInstance, ppsp->pszTitle );
3026  else
3027  ppsp->pszTitle = heap_strdupAtoW( lpPropSheetPage->pszTitle );
3028  }
3029  else
3030  ppsp->pszTitle = NULL;
3031 
3032  if (ppsp->dwFlags & PSP_HIDEHEADER)
3033  ppsp->dwFlags &= ~(PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE);
3034 
3035  if (ppsp->dwFlags & PSP_USEHEADERTITLE)
3036  {
3037  if (IS_INTRESOURCE( ppsp->pszHeaderTitle ))
3038  ppsp->pszHeaderTitle = load_string( ppsp->hInstance, ppsp->pszHeaderTitle );
3039  else
3040  ppsp->pszHeaderTitle = heap_strdupAtoW( lpPropSheetPage->pszHeaderTitle );
3041  }
3042  else
3043  ppsp->pszHeaderTitle = NULL;
3044 
3045  if (ppsp->dwFlags & PSP_USEHEADERSUBTITLE)
3046  {
3047  if (IS_INTRESOURCE( ppsp->pszHeaderSubTitle ))
3048  ppsp->pszHeaderSubTitle = load_string( ppsp->hInstance, ppsp->pszHeaderSubTitle );
3049  else
3050  ppsp->pszHeaderSubTitle = heap_strdupAtoW( lpPropSheetPage->pszHeaderSubTitle );
3051  }
3052  else
3053  ppsp->pszHeaderSubTitle = NULL;
3054 
3055  if ((ppsp->dwFlags & PSP_USECALLBACK) && ppsp->dwSize > PROPSHEETPAGEA_V1_SIZE && ppsp->pfnCallback)
3056  ppsp->pfnCallback(0, PSPCB_ADDREF, ppsp + 1);
3057 
3058  return (HPROPSHEETPAGE)ppsp;
3059 }
LPCWSTR pszTemplate
Definition: prsht.h:209
DWORD dwSize
Definition: prsht.h:177
ACPI_SIZE strlen(const char *String)
Definition: utclib.c:269
LPCSTR pszTitle
Definition: prsht.h:188
LPCSTR pszTemplate
Definition: prsht.h:181
#define PSP_USEICONID
Definition: prsht.h:25
#define PSP_USECALLBACK
Definition: prsht.h:30
DWORD dwSize
Definition: prsht.h:205
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
smooth NULL
Definition: ftsmooth.c:416
LPCSTR pszIcon
Definition: prsht.h:186
LPCWSTR pszTitle
Definition: prsht.h:216
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
#define PROPSHEETPAGEA_V1_SIZE
Definition: prsht.h:200
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
static WCHAR * heap_strdupAtoW(const char *str)
Definition: propsheet.c:186
HINSTANCE hInstance
Definition: prsht.h:207
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
DWORD dwFlags
Definition: prsht.h:178
#define PSP_USETITLE
Definition: prsht.h:26
#define min(a, b)
Definition: monoChain.cc:55
#define PSP_INTERNAL_UNICODE
Definition: propsheet.c:146
#define PSPCB_ADDREF
Definition: prsht.h:171
char * strcpy(char *DstString, const char *SrcString)
Definition: utclib.c:388
LPCWSTR pszIcon
Definition: prsht.h:214
static LPWSTR load_string(HINSTANCE instance, LPCWSTR str)
Definition: propsheet.c:2932
WCHAR * LPWSTR
Definition: xmlstorage.h:184
DWORD dwFlags
Definition: prsht.h:206
#define PSP_DLGINDIRECT
Definition: prsht.h:23

Referenced by init_functions(), PropertySheetA(), and WINHELP_CreateIndexWindow().

◆ CreatePropertySheetPageW()

HPROPSHEETPAGE WINAPI CreatePropertySheetPageW ( LPCPROPSHEETPAGEW  lpPropSheetPage)

Definition at line 3066 of file propsheet.c.

3067 {
3068  PROPSHEETPAGEW *ppsp;
3069 
3070  if (lpPropSheetPage->dwSize < PROPSHEETPAGEW_V1_SIZE)
3071  return NULL;
3072 
3073  /* original data is used for callback notifications */
3074  if ((lpPropSheetPage->dwFlags & PSP_USECALLBACK) && lpPropSheetPage->pfnCallback)
3075  {
3076  ppsp = Alloc(2 * sizeof(*ppsp));
3077  memcpy(ppsp, lpPropSheetPage, min(lpPropSheetPage->dwSize, sizeof(PROPSHEETPAGEW)));
3078  memcpy(ppsp + 1, lpPropSheetPage, min(lpPropSheetPage->dwSize, sizeof(PROPSHEETPAGEW)));
3079  }
3080  else
3081  {
3082  ppsp = Alloc(sizeof(*ppsp));
3083  memcpy(ppsp, lpPropSheetPage, min(lpPropSheetPage->dwSize, sizeof(PROPSHEETPAGEW)));
3084  }
3085 
3086  ppsp->dwFlags |= PSP_INTERNAL_UNICODE;
3087 
3088  if ( !(ppsp->dwFlags & PSP_DLGINDIRECT) )
3089  {
3090  if (!IS_INTRESOURCE( ppsp->u.pszTemplate ))
3091  ppsp->u.pszTemplate = heap_strdupW( lpPropSheetPage->u.pszTemplate );
3092  }
3093 
3094  if ( ppsp->dwFlags & PSP_USEICONID )
3095  {
3096  if (!IS_INTRESOURCE( ppsp->u2.pszIcon ))
3097  ppsp->u2.pszIcon = heap_strdupW( lpPropSheetPage->u2.pszIcon );
3098  }
3099 
3100  if (ppsp->dwFlags & PSP_USETITLE)
3101  ppsp->pszTitle = load_string( ppsp->hInstance, ppsp->pszTitle );
3102  else
3103  ppsp->pszTitle = NULL;
3104 
3105  if (ppsp->dwFlags & PSP_HIDEHEADER)
3106  ppsp->dwFlags &= ~(PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE);
3107 
3108  if (ppsp->dwFlags & PSP_USEHEADERTITLE)
3109  ppsp->pszHeaderTitle = load_string( ppsp->hInstance, ppsp->pszHeaderTitle );
3110  else
3111  ppsp->pszHeaderTitle = NULL;
3112 
3113  if (ppsp->dwFlags & PSP_USEHEADERSUBTITLE)
3114  ppsp->pszHeaderSubTitle = load_string( ppsp->hInstance, ppsp->pszHeaderSubTitle );
3115  else
3116  ppsp->pszHeaderSubTitle = NULL;
3117 
3118  if ((ppsp->dwFlags & PSP_USECALLBACK) && ppsp->dwSize > PROPSHEETPAGEW_V1_SIZE && ppsp->pfnCallback)
3119  ppsp->pfnCallback(0, PSPCB_ADDREF, ppsp + 1);
3120 
3121  return (HPROPSHEETPAGE)ppsp;
3122 }
LPCWSTR pszTemplate
Definition: prsht.h:209
#define PSP_USEICONID
Definition: prsht.h:25
#define PSP_USECALLBACK
Definition: prsht.h:30
DWORD dwSize
Definition: prsht.h:205
static WCHAR * heap_strdupW(const WCHAR *str)
Definition: propsheet.c:178
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
smooth NULL
Definition: ftsmooth.c:416
LPCWSTR pszTitle
Definition: prsht.h:216
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
HINSTANCE hInstance
Definition: prsht.h:207
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define PSP_USETITLE
Definition: prsht.h:26
#define min(a, b)
Definition: monoChain.cc:55
#define PROPSHEETPAGEW_V1_SIZE
Definition: prsht.h:228
#define PSP_INTERNAL_UNICODE
Definition: propsheet.c:146
#define PSPCB_ADDREF
Definition: prsht.h:171
LPCWSTR pszIcon
Definition: prsht.h:214
static LPWSTR load_string(HINSTANCE instance, LPCWSTR str)
Definition: propsheet.c:2932
DWORD dwFlags
Definition: prsht.h:206
#define PSP_DLGINDIRECT
Definition: prsht.h:23

Referenced by init_functions(), InitializePropertySheetPage(), NetPropPageProvider(), OleCreatePropertyFrameIndirect(), ParallelPortPropPageProvider(), PropertySheetW(), PS2MousePropPageProvider(), SerialPortPropPageProvider(), and SH_CreatePropertySheetPage().

◆ DestroyPropertySheetPage()

BOOL WINAPI DestroyPropertySheetPage ( HPROPSHEETPAGE  hPropPage)

Definition at line 3135 of file propsheet.c.

3136 {
3137  PROPSHEETPAGEW *psp = (PROPSHEETPAGEW *)hPropPage;
3138 
3139  if (!psp)
3140  return FALSE;
3141 
3142  if ((psp->dwFlags & PSP_USECALLBACK) && psp->pfnCallback)
3143  psp->pfnCallback(0, PSPCB_RELEASE, psp + 1);
3144 
3145  if (!(psp->dwFlags & PSP_DLGINDIRECT) && !IS_INTRESOURCE( psp->u.pszTemplate ))
3146  Free ((LPVOID)psp->u.pszTemplate);
3147 
3148  if ((psp->dwFlags & PSP_USEICONID) && !IS_INTRESOURCE( psp->u2.pszIcon ))
3149  Free ((LPVOID)psp->u2.pszIcon);
3150 
3151  if ((psp->dwFlags & PSP_USETITLE) && !IS_INTRESOURCE( psp->pszTitle ))
3152  Free ((LPVOID)psp->pszTitle);
3153 
3154  if ((psp->dwFlags & PSP_USEHEADERTITLE) && !IS_INTRESOURCE( psp->pszHeaderTitle ))
3155  Free ((LPVOID)psp->pszHeaderTitle);
3156 
3157  if ((psp->dwFlags & PSP_USEHEADERSUBTITLE) && !IS_INTRESOURCE( psp->pszHeaderSubTitle ))
3158  Free ((LPVOID)psp->pszHeaderSubTitle);
3159 
3160  Free(hPropPage);
3161 
3162  return TRUE;
3163 }
#define TRUE
Definition: types.h:120
LPCWSTR pszTemplate
Definition: prsht.h:209
#define PSP_USEICONID
Definition: prsht.h:25
#define PSP_USECALLBACK
Definition: prsht.h:30
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:656
LPCWSTR pszTitle
Definition: prsht.h:216
#define PSPCB_RELEASE
Definition: prsht.h:37
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
#define PSP_USETITLE
Definition: prsht.h:26
LPCWSTR pszIcon
Definition: prsht.h:214
DWORD dwFlags
Definition: prsht.h:206
#define PSP_DLGINDIRECT
Definition: prsht.h:23

Referenced by AddNetIdPage(), CLayerUIPropPage::AddPages(), CNetConnectionPropertyUi::AddPages(), CVfdShExt::AddPages(), BtrfsVolPropSheet::AddPages(), BtrfsPropSheet::AddPages(), INetCfgComponentPropertyUi_fnMergePropPages(), init_functions(), NetPropPageProvider(), ParallelPortPropPageProvider(), PropertySheetA(), PropertySheetW(), PROPSHEET_CleanUp(), PROPSHEET_RemovePage(), PropSheetExtProc(), PS2MousePropPageProvider(), and SerialPortPropPageProvider().

◆ do_loop()

static INT do_loop ( const PropSheetInfo psInfo)
static

Definition at line 2781 of file propsheet.c.

2782 {
2783  MSG msg;
2784  INT ret = -1;
2785  HWND hwnd = psInfo->hwnd;
2786  HWND parent = psInfo->ppshheader.hwndParent;
2787 
2788  while(IsWindow(hwnd) && !psInfo->ended && (ret = GetMessageW(&msg, NULL, 0, 0)))
2789  {
2790  if(ret == -1)
2791  break;
2792 
2793  if(!IsDialogMessageW(hwnd, &msg))
2794  {
2797  }
2798  }
2799 
2800  if(ret == 0)
2801  {
2802  PostQuitMessage(msg.wParam);
2803  ret = -1;
2804  }
2805 
2806  if(ret != -1)
2807  ret = psInfo->result;
2808 
2809  if(parent)
2811 
2813  return ret;
2814 }
HWND hwndParent
Definition: prsht.h:277
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
BOOL WINAPI TranslateMessage(_In_ const MSG *)
#define TRUE
Definition: types.h:120
BOOL WINAPI IsWindow(_In_opt_ HWND)
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
BOOL WINAPI DestroyWindow(_In_ HWND)
int32_t INT
Definition: typedefs.h:56
LRESULT WINAPI DispatchMessageW(_In_ const MSG *)
smooth NULL
Definition: ftsmooth.c:416
r parent
Definition: btrfs.c:2677
int ret
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
BOOL WINAPI GetMessageW(_Out_ LPMSG, _In_opt_ HWND, _In_ UINT, _In_ UINT)
#define msg(x)
Definition: auth_time.c:54
BOOL WINAPI IsDialogMessageW(_In_ HWND, _In_ LPMSG)
__analysis_noreturn void WINAPI PostQuitMessage(_In_ int)

Referenced by PROPSHEET_PropertySheet().

◆ GetTemplateSize()

static UINT GetTemplateSize ( const DLGTEMPLATE pTemplate)
static

Definition at line 1209 of file propsheet.c.

1211 {
1212  const WORD* p = (const WORD *)pTemplate;
1213  BOOL istemplateex = (((const MyDLGTEMPLATEEX*)pTemplate)->signature == 0xFFFF);
1214  WORD nrofitems;
1215  UINT ret;
1216 
1217  if (istemplateex)
1218  {
1219  /* DLGTEMPLATEEX (not defined in any std. header file) */
1220 
1221  TRACE("is DLGTEMPLATEEX\n");
1222  p++; /* dlgVer */
1223  p++; /* signature */
1224  p += 2; /* help ID */
1225  p += 2; /* ext style */
1226  p += 2; /* style */
1227  }
1228  else
1229  {
1230  /* DLGTEMPLATE */
1231 
1232  TRACE("is DLGTEMPLATE\n");
1233  p += 2; /* style */
1234  p += 2; /* ext style */
1235  }
1236 
1237  nrofitems = (WORD)*p; p++; /* nb items */
1238  p++; /* x */
1239  p++; /* y */
1240  p++; /* width */
1241  p++; /* height */
1242 
1243  /* menu */
1244  switch ((WORD)*p)
1245  {
1246  case 0x0000:
1247  p++;
1248  break;
1249  case 0xffff:
1250  p += 2;
1251  break;
1252  default:
1253  TRACE("menu %s\n",debugstr_w( p ));
1254  p += lstrlenW( p ) + 1;
1255  break;
1256  }
1257 
1258  /* class */
1259  switch ((WORD)*p)
1260  {
1261  case 0x0000:
1262  p++;
1263  break;
1264  case 0xffff:
1265  p += 2; /* 0xffff plus predefined window class ordinal value */
1266  break;
1267  default:
1268  TRACE("class %s\n",debugstr_w( p ));
1269  p += lstrlenW( p ) + 1;
1270  break;
1271  }
1272 
1273  /* title */
1274  TRACE("title %s\n",debugstr_w( p ));
1275  p += lstrlenW( p ) + 1;
1276 
1277  /* font, if DS_SETFONT set */
1278  if ((DS_SETFONT & ((istemplateex)? ((const MyDLGTEMPLATEEX*)pTemplate)->style :
1279  pTemplate->style)))
1280  {
1281  p+=(istemplateex)?3:1;
1282  TRACE("font %s\n",debugstr_w( p ));
1283  p += lstrlenW( p ) + 1; /* the font name */
1284  }
1285 
1286  /* now process the DLGITEMTEMPLATE(EX) structs (plus custom data)
1287  * that are following the DLGTEMPLATE(EX) data */
1288  TRACE("%d items\n",nrofitems);
1289  while (nrofitems > 0)
1290  {
1291  p = (WORD*)(((DWORD_PTR)p + 3) & ~3); /* DWORD align */
1292 
1293  /* skip header */
1294  p += (istemplateex ? sizeof(MyDLGITEMTEMPLATEEX) : sizeof(DLGITEMTEMPLATE))/sizeof(WORD);
1295 
1296  /* check class */
1297  switch ((WORD)*p)
1298  {
1299  case 0x0000:
1300  p++;
1301  break;
1302  case 0xffff:
1303  TRACE("class ordinal 0x%08x\n",*(const DWORD*)p);
1304  p += 2;
1305  break;
1306  default:
1307  TRACE("class %s\n",debugstr_w( p ));
1308  p += lstrlenW( p ) + 1;
1309  break;
1310  }
1311 
1312  /* check title text */
1313  switch ((WORD)*p)
1314  {
1315  case 0x0000:
1316  p++;
1317  break;
1318  case 0xffff:
1319  TRACE("text ordinal 0x%08x\n",*(const DWORD*)p);
1320  p += 2;
1321  break;
1322  default:
1323  TRACE("text %s\n",debugstr_w( p ));
1324  p += lstrlenW( p ) + 1;
1325  break;
1326  }
1327  p += *p / sizeof(WORD) + 1; /* Skip extra data */
1328  --nrofitems;
1329  }
1330 
1331  ret = (p - (const WORD*)pTemplate) * sizeof(WORD);
1332  TRACE("%p %p size 0x%08x\n", p, pTemplate, ret);
1333  return ret;
1334 }
#define lstrlenW
Definition: compat.h:407
unsigned int BOOL
Definition: ntddk_ex.h:94
#define debugstr_w
Definition: kernel32.h:32
#define TRACE(s)
Definition: solgame.cpp:4
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
int ret
#define DS_SETFONT
Definition: winuser.h:378
uint32_t DWORD_PTR
Definition: typedefs.h:63
unsigned int UINT
Definition: ndis.h:50
GLfloat GLfloat p
Definition: glext.h:8902
Arabic default style
Definition: afstyles.h:93

Referenced by PROPSHEET_CreatePage().

◆ heap_strdupAtoW()

static WCHAR* heap_strdupAtoW ( const char str)
static

Definition at line 186 of file propsheet.c.

187 {
188  WCHAR *ret;
189  INT len;
190 
191  len = MultiByteToWideChar(CP_ACP, 0, str, -1, 0, 0);
192  ret = Alloc(len * sizeof(WCHAR));
193  MultiByteToWideChar(CP_ACP, 0, str, -1, ret, len);
194 
195  return ret;
196 }
#define CP_ACP
Definition: compat.h:99
int32_t INT
Definition: typedefs.h:56
const WCHAR * str
__wchar_t WCHAR
Definition: xmlstorage.h:180
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
int ret
GLenum GLsizei len
Definition: glext.h:6722
#define MultiByteToWideChar
Definition: compat.h:100

Referenced by CreatePropertySheetPageA(), PROPSHEET_SetHeaderSubTitleA(), and PROPSHEET_SetHeaderTitleA().

◆ heap_strdupW()

static WCHAR* heap_strdupW ( const WCHAR str)
static

Definition at line 178 of file propsheet.c.

179 {
180  int len = strlenW(str) + 1;
181  WCHAR *ret = Alloc(len * sizeof(WCHAR));
182  strcpyW(ret, str);
183  return ret;
184 }
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
Definition: unicode.h:212
const WCHAR * str
__wchar_t WCHAR
Definition: xmlstorage.h:180
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
int ret
GLenum GLsizei len
Definition: glext.h:6722
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
Definition: unicode.h:219

Referenced by add_prop(), alloc_global_prop(), alloc_prop(), alloc_vbscode(), APPINFO_SetOption(), BPInternetProtocolSink_ReportProgress(), BPInternetProtocolSink_ReportResult(), cache_authorization(), cache_basic_authorization(), cache_containers_add(), cache_file_available(), create_channelbsc(), create_class_object(), create_req_file(), create_signature_columns_and_data(), create_table(), CreatePropertySheetPageW(), dispid_from_elem_name(), DownloadBSC_Create(), DownloadBSC_OnProgress(), fill_cdromdrive(), fill_diskdrive(), fill_diskpartition(), fill_logicaldisk(), fill_networkadapter(), fill_networkadapterconfig(), fill_os(), fill_pnpentity(), fill_printer(), fill_process(), fill_processor(), fill_service(), fill_sid(), fill_videocontroller(), fix_url_value(), FTP_Connect(), FTP_FtpOpenFileW(), FtpCreateDirectoryW(), FtpDeleteFileW(), FtpFindFirstFileW(), FtpGetFileW(), FtpOpenFileW(), FtpPutFileW(), FtpRemoveDirectoryW(), FtpRenameFileW(), FtpSetCurrentDirectoryW(), get_accountname(), get_cmdline(), get_compsysproduct_uuid(), get_defaultipgateway(), get_dnshostname(), get_dnsserversearchorder(), get_dynamic_prop(), get_filesystem(), get_host_header(), get_ipaddress(), get_ipsubnet(), get_referenceddomainname(), get_settingid(), get_useragent(), get_volumename(), get_volumeserialnumber(), HTMLDOMAttribute_Create(), HTMLElement_clone(), HTMLStyle_put_filter(), HTTP_Connect(), HTTP_DoAuthorization(), HTTP_FixURL(), HTTP_GetResponseHeaders(), HTTP_HttpEndRequestW(), HTTP_HttpOpenRequestW(), HTTP_HttpSendRequestW(), HTTP_InsertCustomHeader(), HTTP_ProcessCookies(), HTTPREQ_SetOption(), HTTPSESSION_SetOption(), init_code(), INTERNET_LoadProxySettings(), INTERNET_SendCallback(), InternetOpenUrlW(), InternetOpenW(), InternetProtocolSink_ReportProgress(), InternetSession_RegisterMimeFilter(), InternetSetOptionW(), is_basic_auth_value(), JScript_AddNamedItem(), MetadataQueryReader_CreateInstance(), mime_available(), MonikerProp_PutProperty(), parse_event_elem(), parse_proxy_url(), PROPSHEET_CollectPageInfo(), PROPSHEET_CollectSheetInfoW(), PROPSHEET_SetHeaderSubTitleW(), PROPSHEET_SetHeaderTitleW(), ProtocolSinkHandler_ReportData(), query_global_option(), register_namespace(), retrieve_cached_authorization(), set_dochost_url(), to_array(), to_longlong(), update_travellog(), VBScript_AddNamedItem(), wbem_services_ExecNotificationQueryAsync(), wbem_services_ExecQueryAsync(), WbemQualifierSet_create(), WbemServices_create(), and WININET_SetAuthorization().

◆ load_string()

static LPWSTR load_string ( HINSTANCE  instance,
LPCWSTR  str 
)
static

Definition at line 2932 of file propsheet.c.

2933 {
2934  LPWSTR ret;
2935 
2936  if (IS_INTRESOURCE(str))
2937  {
2938  HRSRC hrsrc;
2939  HGLOBAL hmem;
2940  WCHAR *ptr;
2941  WORD i, id = LOWORD(str);
2942  UINT len;
2943 
2944  if (!(hrsrc = FindResourceW( instance, MAKEINTRESOURCEW((id >> 4) + 1), (LPWSTR)RT_STRING )))
2945  return NULL;
2946  if (!(hmem = LoadResource( instance, hrsrc ))) return NULL;
2947  if (!(ptr = LockResource( hmem ))) return NULL;
2948  for (i = id & 0x0f; i > 0; i--) ptr += *ptr + 1;
2949  len = *ptr;
2950  if (!len) return NULL;
2951  ret = Alloc( (len + 1) * sizeof(WCHAR) );
2952  if (ret)
2953  {
2954  memcpy( ret, ptr + 1, len * sizeof(WCHAR) );
2955  ret[len] = 0;
2956  }
2957  }
2958  else
2959  {
2960  int len = (strlenW(str) + 1) * sizeof(WCHAR);
2961  ret = Alloc( len );
2962  if (ret) memcpy( ret, str, len );
2963  }
2964  return ret;
2965 }
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
Definition: unicode.h:212
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static PVOID ptr
Definition: dispmode.c:27
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
const WCHAR * str
smooth NULL
Definition: ftsmooth.c:416
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
__wchar_t WCHAR
Definition: xmlstorage.h:180
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
unsigned short WORD
Definition: ntddk_ex.h:93
int ret
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
#define RT_STRING
Definition: pedump.c:368
static HINSTANCE instance
Definition: main.c:40
unsigned int UINT
Definition: ndis.h:50
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LOWORD(l)
Definition: pedump.c:82

Referenced by CreatePropertySheetPageA(), and CreatePropertySheetPageW().

◆ PropertySheetA()

INT_PTR WINAPI PropertySheetA ( LPCPROPSHEETHEADERA  lppsh)

Definition at line 2855 of file propsheet.c.

2856 {
2857  PropSheetInfo* psInfo = GlobalAlloc(GPTR, sizeof(PropSheetInfo));
2858  UINT i, n;
2859  const BYTE* pByte;
2860 
2861  TRACE("(%p)\n", lppsh);
2862 
2863  PROPSHEET_CollectSheetInfoA(lppsh, psInfo);
2864 
2865  psInfo->proppage = Alloc(sizeof(PropPageInfo) * lppsh->nPages);
2866  pByte = (const BYTE*) psInfo->ppshheader.u3.ppsp;
2867 
2868  for (n = i = 0; i < lppsh->nPages; i++, n++)
2869  {
2870  if (!psInfo->usePropPage)
2871  psInfo->proppage[n].hpage = psInfo->ppshheader.u3.phpage[i];
2872  else
2873  {
2875  pByte += ((LPCPROPSHEETPAGEA)pByte)->dwSize;
2876  }
2877 
2879  psInfo, n, TRUE))
2880  {
2881  if (psInfo->usePropPage)
2883  n--;
2884  psInfo->nPages--;
2885  }
2886  }
2887 
2888  return PROPSHEET_PropertySheet(psInfo, FALSE);
2889 }
#define TRUE
Definition: types.h:120
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
LPCPROPSHEETPAGEW ppsp
Definition: prsht.h:290
#define GPTR
Definition: winbase.h:293
BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
Definition: propsheet.c:3135
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
GLdouble n
Definition: glext.h:7729
static BOOL PROPSHEET_CollectPageInfo(LPCPROPSHEETPAGEW lppsp, PropSheetInfo *psInfo, int index, BOOL resize)
Definition: propsheet.c:399
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static void PROPSHEET_CollectSheetInfoA(LPCPROPSHEETHEADERA lppsh, PropSheetInfo *psInfo)
Definition: propsheet.c:317
#define TRACE(s)
Definition: solgame.cpp:4
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
#define for
Definition: utility.h:88
const PROPSHEETPAGEA * LPCPROPSHEETPAGEA
Definition: prsht.h:199
unsigned char BYTE
Definition: mem.h:68
HPROPSHEETPAGE * phpage
Definition: prsht.h:291
HPROPSHEETPAGE WINAPI CreatePropertySheetPageA(LPCPROPSHEETPAGEA lpPropSheetPage)
Definition: propsheet.c:2982
HPROPSHEETPAGE hpage
Definition: propsheet.c:99
unsigned int UINT
Definition: ndis.h:50
PropPageInfo * proppage
Definition: propsheet.c:123
static INT_PTR PROPSHEET_PropertySheet(PropSheetInfo *psInfo, BOOL unicode)
Definition: propsheet.c:2821

Referenced by init_functions(), and WINHELP_CreateIndexWindow().

◆ PropertySheetW()

INT_PTR WINAPI PropertySheetW ( LPCPROPSHEETHEADERW  lppsh)

Definition at line 2896 of file propsheet.c.

2897 {
2898  PropSheetInfo* psInfo = GlobalAlloc(GPTR, sizeof(PropSheetInfo));
2899  UINT i, n;
2900  const BYTE* pByte;
2901 
2902  TRACE("(%p)\n", lppsh);
2903 
2904  PROPSHEET_CollectSheetInfoW(lppsh, psInfo);
2905 
2906  psInfo->proppage = Alloc(sizeof(PropPageInfo) * lppsh->nPages);
2907  pByte = (const BYTE*) psInfo->ppshheader.u3.ppsp;
2908 
2909  for (n = i = 0; i < lppsh->nPages; i++, n++)
2910  {
2911  if (!psInfo->usePropPage)
2912  psInfo->proppage[n].hpage = psInfo->ppshheader.u3.phpage[i];
2913  else
2914  {
2916  pByte += ((LPCPROPSHEETPAGEW)pByte)->dwSize;
2917  }
2918 
2920  psInfo, n, TRUE))
2921  {
2922  if (psInfo->usePropPage)
2924  n--;
2925  psInfo->nPages--;
2926  }
2927  }
2928 
2929  return PROPSHEET_PropertySheet(psInfo, TRUE);
2930 }
#define TRUE
Definition: types.h:120
HGLOBAL NTAPI GlobalAlloc(UINT uFlags, SIZE_T dwBytes)
Definition: heapmem.c:368
LPCPROPSHEETPAGEW ppsp
Definition: prsht.h:290
#define GPTR
Definition: winbase.h:293
BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
Definition: propsheet.c:3135
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
GLdouble n
Definition: glext.h:7729
static BOOL PROPSHEET_CollectPageInfo(LPCPROPSHEETPAGEW lppsp, PropSheetInfo *psInfo, int index, BOOL resize)
Definition: propsheet.c:399
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
static void PROPSHEET_CollectSheetInfoW(LPCPROPSHEETHEADERW lppsh, PropSheetInfo *psInfo)
Definition: propsheet.c:361
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
Definition: propsheet.c:3066
#define TRACE(s)
Definition: solgame.cpp:4
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
#define for
Definition: utility.h:88
unsigned char BYTE
Definition: mem.h:68
HPROPSHEETPAGE * phpage
Definition: prsht.h:291
const PROPSHEETPAGEW * LPCPROPSHEETPAGEW
Definition: prsht.h:227
HPROPSHEETPAGE hpage
Definition: propsheet.c:99
unsigned int UINT
Definition: ndis.h:50
PropPageInfo * proppage
Definition: propsheet.c:123
static INT_PTR PROPSHEET_PropertySheet(PropSheetInfo *psInfo, BOOL unicode)
Definition: propsheet.c:2821

Referenced by Applet(), CreatePropSheet(), CustomizeLocalePropertySheet(), dialog_viewproperties(), display_cpl_sheets(), EventLogProperties(), INetCfgComponent_fnRaisePropertyUi(), InitApplet(), LaunchAdvancedTcpipSettings(), OleCreatePropertyFrameIndirect(), PropSheetThread(), CZipExtract::runWizard(), SH_ShowDriveProperties(), SH_ShowPropertiesDialog(), SH_ShowRecycleBinProperties(), show_cert_dialog(), show_edit_cert_properties_dialog(), show_export_ui(), show_import_ui(), ShowFolderOptionsDialog(), ShowNetConnectionProperties(), ShowPropSheetW(), ShowStatusPropertyDialog(), SystemApplet(), and wmain().

◆ PROPSHEET_AddPage()

static BOOL PROPSHEET_AddPage ( HWND  hwndDlg,
HPROPSHEETPAGE  hpage 
)
static

Definition at line 2333 of file propsheet.c.

2334 {
2335  PropSheetInfo * psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
2336  TRACE("hwndDlg %p, hpage %p\n", hwndDlg, hpage);
2337  return PROPSHEET_InsertPage(hwndDlg, UlongToPtr(psInfo->nPages), hpage);
2338 }
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
#define UlongToPtr(u)
Definition: config.h:106
#define TRACE(s)
Definition: solgame.cpp:4
static BOOL PROPSHEET_InsertPage(HWND hwndDlg, HPROPSHEETPAGE hpageInsertAfter, HPROPSHEETPAGE hpage)
Definition: propsheet.c:2239
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_AdjustButtons()

static BOOL PROPSHEET_AdjustButtons ( HWND  hwndParent,
const PropSheetInfo psInfo 
)
static

Definition at line 839 of file propsheet.c.

840 {
841  HWND hwndButton = GetDlgItem(hwndParent, IDOK);
842  RECT rcSheet;
843  int x, y;
844  int num_buttons = 2;
845  int buttonWidth, buttonHeight;
847 
848  if (psInfo->hasApply)
849  num_buttons++;
850 
851  if (psInfo->hasHelp)
852  num_buttons++;
853 
854  /*
855  * Obtain the size of the buttons.
856  */
857  GetClientRect(hwndButton, &rcSheet);
858  buttonWidth = rcSheet.right;
859  buttonHeight = rcSheet.bottom;
860 
861  /*
862  * Get the size of the property sheet.
863  */
864  GetClientRect(hwndParent, &rcSheet);
865 
866  /*
867  * All buttons will be at this y coordinate.
868  */
869  y = rcSheet.bottom - (padding.y + buttonHeight);
870 
871  /*
872  * Position OK button and make it default.
873  */
874  hwndButton = GetDlgItem(hwndParent, IDOK);
875 
876  x = rcSheet.right - ((padding.x + buttonWidth) * num_buttons);
877 
878  SetWindowPos(hwndButton, 0, x, y, 0, 0,
880 
882 
883 
884  /*
885  * Position Cancel button.
886  */
887  hwndButton = GetDlgItem(hwndParent, IDCANCEL);
888 
889  x += padding.x + buttonWidth;
890 
891  SetWindowPos(hwndButton, 0, x, y, 0, 0,
893 
894  /*
895  * Position Apply button.
896  */
897  hwndButton = GetDlgItem(hwndParent, IDC_APPLY_BUTTON);
898 
899  if(psInfo->hasApply)
900  x += padding.x + buttonWidth;
901  else
902  ShowWindow(hwndButton, SW_HIDE);
903 
904  SetWindowPos(hwndButton, 0, x, y, 0, 0,
906  EnableWindow(hwndButton, FALSE);
907 
908  /*
909  * Position Help button.
910  */
911  hwndButton = GetDlgItem(hwndParent, IDHELP);
912 
913  x += padding.x + buttonWidth;
914  SetWindowPos(hwndButton, 0, x, y, 0, 0,
916 
917  if(!psInfo->hasHelp)
918  ShowWindow(hwndButton, SW_HIDE);
919 
920  return TRUE;
921 }
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
#define SW_HIDE
Definition: winuser.h:762
#define DM_SETDEFID
Definition: winuser.h:2060
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define SWP_NOZORDER
Definition: winuser.h:1232
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LONG right
Definition: windef.h:293
#define IDHELP
Definition: resource_2.h:8
static HWND hwndParent
Definition: cryptui.c:300
static PADDING_INFO PROPSHEET_GetPaddingInfo(HWND hwndDlg)
Definition: propsheet.c:1055
unsigned int padding
Definition: isohybrid.c:50
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SWP_NOACTIVATE
Definition: winuser.h:1227
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define SWP_NOSIZE
Definition: winuser.h:1230
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
#define IDC_APPLY_BUTTON
Definition: propsheet.c:39
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
LONG bottom
Definition: windef.h:294
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define IDCANCEL
Definition: winuser.h:825

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_AdjustButtonsWizard()

static BOOL PROPSHEET_AdjustButtonsWizard ( HWND  hwndParent,
const PropSheetInfo psInfo 
)
static

Definition at line 928 of file propsheet.c.

930 {
931  HWND hwndButton = GetDlgItem(hwndParent, IDCANCEL);
933  HWND hwndLineHeader = GetDlgItem(hwndParent, IDC_SUNKEN_LINEHEADER);
934  RECT rcSheet;
935  int x, y;
936  int num_buttons = 3;
937  int buttonWidth, buttonHeight, lineHeight, lineWidth;
939 
940  if (psInfo->hasHelp)
941  num_buttons++;
942  if (psInfo->hasFinish)
943  num_buttons++;
944 
945  /*
946  * Obtain the size of the buttons.
947  */
948  GetClientRect(hwndButton, &rcSheet);
949  buttonWidth = rcSheet.right;
950  buttonHeight = rcSheet.bottom;
951 
952  GetClientRect(hwndLine, &rcSheet);
953  lineHeight = rcSheet.bottom;
954 
955  /*
956  * Get the size of the property sheet.
957  */
958  GetClientRect(hwndParent, &rcSheet);
959 
960  /*
961  * All buttons will be at this y coordinate.
962  */
963  y = rcSheet.bottom - (padding.y + buttonHeight);
964 
965  /*
966  * Position the Back button.
967  */
968  hwndButton = GetDlgItem(hwndParent, IDC_BACK_BUTTON);
969 
970  x = rcSheet.right - ((padding.x + buttonWidth) * (num_buttons - 1)) - buttonWidth;
971 
972  SetWindowPos(hwndButton, 0, x, y, 0, 0,
974 
975  /*
976  * Position the Next button.
977  */
978  hwndButton = GetDlgItem(hwndParent, IDC_NEXT_BUTTON);
979 
980  x += buttonWidth;
981 
982  SetWindowPos(hwndButton, 0, x, y, 0, 0,
984 
985  /*
986  * Position the Finish button.
987  */
988  hwndButton = GetDlgItem(hwndParent, IDC_FINISH_BUTTON);
989 
990  if (psInfo->hasFinish)
991  x += padding.x + buttonWidth;
992 
993  SetWindowPos(hwndButton, 0, x, y, 0, 0,
995 
996  if (!psInfo->hasFinish)
997  ShowWindow(hwndButton, SW_HIDE);
998 
999  /*
1000  * Position the Cancel button.
1001  */
1002  hwndButton = GetDlgItem(hwndParent, IDCANCEL);
1003 
1004  x += padding.x + buttonWidth;
1005 
1006  SetWindowPos(hwndButton, 0, x, y, 0, 0,
1008 
1009  /*
1010  * Position Help button.
1011  */
1012  hwndButton = GetDlgItem(hwndParent, IDHELP);
1013 
1014  if (psInfo->hasHelp)
1015  {
1016  x += padding.x + buttonWidth;
1017 
1018  SetWindowPos(hwndButton, 0, x, y, 0, 0,
1020  }
1021  else
1022  ShowWindow(hwndButton, SW_HIDE);
1023 
1024  if (psInfo->ppshheader.dwFlags &
1025  (PSH_WIZARD97_OLD | PSH_WIZARD97_NEW | PSH_WIZARD_LITE))
1026  padding.x = 0;
1027 
1028  /*
1029  * Position and resize the sunken line.
1030  */
1031  x = padding.x;
1032  y = rcSheet.bottom - ((padding.y * 2) + buttonHeight + lineHeight);
1033 
1034  lineWidth = rcSheet.right - (padding.x * 2);
1035  SetWindowPos(hwndLine, 0, x, y, lineWidth, 2,
1037 
1038  /*
1039  * Position and resize the header sunken line.
1040  */
1041 
1042  SetWindowPos(hwndLineHeader, 0, 0, 0, rcSheet.right, 2,
1044  if (!(psInfo->ppshheader.dwFlags & (PSH_WIZARD97_OLD | PSH_WIZARD97_NEW)))
1045  ShowWindow(hwndLineHeader, SW_HIDE);
1046 
1047  return TRUE;
1048 }
#define TRUE
Definition: types.h:120
#define IDC_SUNKEN_LINE
Definition: comctl32.h:50
#define SW_HIDE
Definition: winuser.h:762
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
#define IDC_FINISH_BUTTON
Definition: comctl32.h:49
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
#define SWP_NOZORDER
Definition: winuser.h:1232
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
LONG right
Definition: windef.h:293
#define IDHELP
Definition: resource_2.h:8
static HWND hwndParent
Definition: cryptui.c:300
unsigned int padding
Definition: isohybrid.c:50
#define IDC_SUNKEN_LINEHEADER
Definition: comctl32.h:51
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SWP_NOACTIVATE
Definition: winuser.h:1227
DWORD dwFlags
Definition: prsht.h:276
#define IDC_BACK_BUTTON
Definition: comctl32.h:47
#define SWP_NOSIZE
Definition: winuser.h:1230
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
static PADDING_INFO PROPSHEET_GetPaddingInfoWizard(HWND hwndDlg, const PropSheetInfo *psInfo)
Definition: propsheet.c:1082
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
#define IDC_NEXT_BUTTON
Definition: comctl32.h:48
LONG bottom
Definition: windef.h:294
#define SWP_NOMOVE
Definition: winuser.h:1229
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
#define IDCANCEL
Definition: winuser.h:825

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_AdjustSize()

static BOOL PROPSHEET_AdjustSize ( HWND  hwndDlg,
PropSheetInfo psInfo 
)
static

Definition at line 723 of file propsheet.c.

724 {
725  HWND hwndTabCtrl = GetDlgItem(hwndDlg, IDC_TABCONTROL);
726  HWND hwndButton = GetDlgItem(hwndDlg, IDOK);
727  RECT rc,tabRect;
728  int buttonHeight;
730  RECT units;
731  LONG style;
732 
733  /* Get the height of buttons */
734  GetClientRect(hwndButton, &rc);
735  buttonHeight = rc.bottom;
736 
737  /*
738  * Biggest page size.
739  */
740  SetRect(&rc, 0, 0, psInfo->width, psInfo->height);
741  MapDialogRect(hwndDlg, &rc);
742 
743  /* retrieve the dialog units */
744  units.left = units.right = 4;
745  units.top = units.bottom = 8;
746  MapDialogRect(hwndDlg, &units);
747 
748  /*
749  * Resize the tab control.
750  */
751  GetClientRect(hwndTabCtrl,&tabRect);
752 
753  SendMessageW(hwndTabCtrl, TCM_ADJUSTRECT, FALSE, (LPARAM)&tabRect);
754 
755  if ((rc.bottom - rc.top) < (tabRect.bottom - tabRect.top))
756  {
757  rc.bottom = rc.top + tabRect.bottom - tabRect.top;
758  psInfo->height = MulDiv((rc.bottom - rc.top),8,units.top);
759  }
760 
761  if ((rc.right - rc.left) < (tabRect.right - tabRect.left))
762  {
763  rc.right = rc.left + tabRect.right - tabRect.left;
764  psInfo->width = MulDiv((rc.right - rc.left),4,units.left);
765  }
766 
767  SendMessageW(hwndTabCtrl, TCM_ADJUSTRECT, TRUE, (LPARAM)&rc);
768 
769  rc.right -= rc.left;
770  rc.bottom -= rc.top;
771  TRACE("setting tab %p, rc (0,0)-(%d,%d)\n",
772  hwndTabCtrl, rc.right, rc.bottom);
773  SetWindowPos(hwndTabCtrl, 0, 0, 0, rc.right, rc.bottom,
775 
776  GetClientRect(hwndTabCtrl, &rc);
777 
778  TRACE("tab client rc %s\n", wine_dbgstr_rect(&rc));
779 
780  rc.right += (padding.x * 2);
781  rc.bottom += buttonHeight + (3 * padding.y);
782 
783  style = GetWindowLongW(hwndDlg, GWL_STYLE);
784  if (!(style & WS_CHILD))
786 
787  rc.right -= rc.left;
788  rc.bottom -= rc.top;
789 
790  /*
791  * Resize the property sheet.
792  */
793  TRACE("setting dialog %p, rc (0,0)-(%d,%d)\n",
794  hwndDlg, rc.right, rc.bottom);
795  SetWindowPos(hwndDlg, 0, 0, 0, rc.right, rc.bottom,
797  return TRUE;
798 }
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
#define TCM_ADJUSTRECT
Definition: commctrl.h:4057
LONG top
Definition: windef.h:292
BOOL WINAPI MapDialogRect(_In_ HWND, _Inout_ LPRECT)
#define WS_CHILD
Definition: pedump.c:617
LONG left
Definition: windef.h:291
#define SWP_NOZORDER
Definition: winuser.h:1232
LONG right
Definition: windef.h:293
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
long LONG
Definition: pedump.c:60
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
LONG_PTR LPARAM
Definition: windef.h:208
static PADDING_INFO PROPSHEET_GetPaddingInfo(HWND hwndDlg)
Definition: propsheet.c:1055
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int padding
Definition: isohybrid.c:50
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SWP_NOACTIVATE
Definition: winuser.h:1227
const char * wine_dbgstr_rect(const RECT *rect)
#define GWL_STYLE
Definition: winuser.h:846
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
#define IDC_TABCONTROL
Definition: comctl32.h:45
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
LONG bottom
Definition: windef.h:294
#define SWP_NOMOVE
Definition: winuser.h:1229
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)
GLfloat units
Definition: glext.h:11727
Arabic default style
Definition: afstyles.h:93
#define MulDiv(x, y, z)
Definition: gdifloat.h:86

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_AdjustSizeWizard()

static BOOL PROPSHEET_AdjustSizeWizard ( HWND  hwndDlg,
const PropSheetInfo psInfo 
)
static

Definition at line 805 of file propsheet.c.

806 {
807  HWND hwndLine = GetDlgItem(hwndDlg, IDC_SUNKEN_LINE);
808  RECT rc, lineRect, dialogRect;
809 
810  /* Biggest page size */
811  SetRect(&rc, 0, 0, psInfo->width, psInfo->height);
812  MapDialogRect(hwndDlg, &rc);
813 
814  TRACE("Biggest page %s\n", wine_dbgstr_rect(&rc));
815 
816  /* Add space for the buttons row */
817  GetWindowRect(hwndLine, &lineRect);
818  MapWindowPoints(NULL, hwndDlg, (LPPOINT)&lineRect, 2);
819  GetClientRect(hwndDlg, &dialogRect);
820  rc.bottom += dialogRect.bottom - lineRect.top - 1;
821 
822  /* Convert the client coordinates to window coordinates */
824 
825  /* Resize the property sheet */
826  TRACE("setting dialog %p, rc (0,0)-(%d,%d)\n",
827  hwndDlg, rc.right, rc.bottom);
828  SetWindowPos(hwndDlg, 0, 0, 0, rc.right - rc.left, rc.bottom - rc.top,
830 
831  return TRUE;
832 }
#define TRUE
Definition: types.h:120
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
#define IDC_SUNKEN_LINE
Definition: comctl32.h:50
LONG top
Definition: windef.h:292
BOOL WINAPI MapDialogRect(_In_ HWND, _Inout_ LPRECT)
LONG left
Definition: windef.h:291
#define SWP_NOZORDER
Definition: winuser.h:1232
LONG right
Definition: windef.h:293
BOOL WINAPI AdjustWindowRect(_Inout_ LPRECT, _In_ DWORD, _In_ BOOL)
LONG WINAPI GetWindowLongW(_In_ HWND, _In_ int)
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define SWP_NOACTIVATE
Definition: winuser.h:1227
const char * wine_dbgstr_rect(const RECT *rect)
#define GWL_STYLE
Definition: winuser.h:846
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetRect(_Out_ LPRECT, _In_ int, _In_ int, _In_ int, _In_ int)
LONG bottom
Definition: windef.h:294
#define SWP_NOMOVE
Definition: winuser.h:1229
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
BOOL WINAPI SetWindowPos(_In_ HWND, _In_opt_ HWND, _In_ int, _In_ int, _In_ int, _In_ int, _In_ UINT)

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_Apply()

static BOOL PROPSHEET_Apply ( HWND  hwndDlg,
LPARAM  lParam 
)
static

Definition at line 1698 of file propsheet.c.

1699 {
1700  int i;
1701  HWND hwndPage;
1702  PSHNOTIFY psn;
1703  PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
1704 
1705  TRACE("active_page %d\n", psInfo->active_page);
1706  if (psInfo->active_page < 0)
1707  return FALSE;
1708 
1709  psn.hdr.hwndFrom = hwndDlg;
1710  psn.hdr.idFrom = 0;
1711  psn.lParam = 0;
1712 
1713 
1714  /*
1715  * Send PSN_KILLACTIVE to the current page.
1716  */
1717  psn.hdr.code = PSN_KILLACTIVE;
1718 
1719  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
1720 
1721  if (SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn) != FALSE)
1722  return FALSE;
1723 
1724  /*
1725  * Send PSN_APPLY to all pages.
1726  */
1727  psn.hdr.code = PSN_APPLY;
1728  psn.lParam = lParam;
1729 
1730  for (i = 0; i < psInfo->nPages; i++)
1731  {
1732  hwndPage = psInfo->proppage[i].hwndPage;
1733  if (hwndPage)
1734  {
1735  switch (SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn))
1736  {
1737  case PSNRET_INVALID:
1738  PROPSHEET_ShowPage(hwndDlg, i, psInfo);
1739  /* fall through */
1741  return FALSE;
1742  }
1743  }
1744  }
1745 
1746  if(lParam)
1747  {
1748  psInfo->activeValid = FALSE;
1749  }
1750  else if(psInfo->active_page >= 0)
1751  {
1752  psn.hdr.code = PSN_SETACTIVE;
1753  psn.lParam = 0;
1754  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
1755  SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
1756  }
1757 
1758  return TRUE;
1759 }
#define TRUE
Definition: types.h:120
#define PSN_APPLY
Definition: prsht.h:117
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
#define PSN_SETACTIVE
Definition: prsht.h:115
UINT code
Definition: winuser.h:3112
NMHDR hdr
Definition: prsht.h:312
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define PSN_KILLACTIVE
Definition: prsht.h:116
UINT_PTR idFrom
Definition: winuser.h:3111
#define PSNRET_INVALID_NOCHANGEPAGE
Definition: prsht.h:131
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
HWND hwndFrom
Definition: winuser.h:3110
#define PSNRET_INVALID
Definition: prsht.h:130
static BOOL PROPSHEET_ShowPage(HWND hwndDlg, int index, PropSheetInfo *psInfo)
Definition: propsheet.c:1514
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
PropPageInfo * proppage
Definition: propsheet.c:123
LPARAM lParam
Definition: prsht.h:313
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by PROPSHEET_DialogProc(), and PROPSHEET_DoCommand().

◆ PROPSHEET_Back()

static BOOL PROPSHEET_Back ( HWND  hwndDlg)
static

Definition at line 1575 of file propsheet.c.

1576 {
1577  PSHNOTIFY psn;
1578  HWND hwndPage;
1579  PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
1580  LRESULT result;
1581  int idx;
1582 
1583  TRACE("active_page %d\n", psInfo->active_page);
1584  if (psInfo->active_page < 0)
1585  return FALSE;
1586 
1587  psn.hdr.code = PSN_WIZBACK;
1588  psn.hdr.hwndFrom = hwndDlg;
1589  psn.hdr.idFrom = 0;
1590  psn.lParam = 0;
1591 
1592  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
1593 
1594  result = SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
1595  if (result == -1)
1596  return FALSE;
1597  else if (result == 0)
1598  idx = psInfo->active_page - 1;
1599  else
1601 
1602  if (idx >= 0 && idx < psInfo->nPages)
1603  {
1604  if (PROPSHEET_CanSetCurSel(hwndDlg))
1605  {
1606  SetFocus(GetDlgItem(hwndDlg, IDC_BACK_BUTTON));
1608  PROPSHEET_SetCurSel(hwndDlg, idx, -1, 0);
1609  }
1610  }
1611  return TRUE;
1612 }
#define TRUE
Definition: types.h:120
#define DM_SETDEFID
Definition: winuser.h:2060
HWND WINAPI SetFocus(_In_opt_ HWND)
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
UINT code
Definition: winuser.h:3112
NMHDR hdr
Definition: prsht.h:312
static INT PROPSHEET_FindPageByResId(const PropSheetInfo *psInfo, LRESULT resId)
Definition: propsheet.c:274
static BOOL PROPSHEET_CanSetCurSel(HWND hwndDlg)
Definition: propsheet.c:1934
UINT_PTR idFrom
Definition: winuser.h:3111
unsigned int idx
Definition: utils.c:41
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, int index, int skipdir, HPROPSHEETPAGE hpage)
Definition: propsheet.c:1973
#define IDC_BACK_BUTTON
Definition: comctl32.h:47
HWND hwndFrom
Definition: winuser.h:3110
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define PSN_WIZBACK
Definition: prsht.h:120
PropPageInfo * proppage
Definition: propsheet.c:123
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: prsht.h:313
GLuint64EXT * result
Definition: glext.h:11304
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by PROPSHEET_DoCommand(), and PROPSHEET_PressButton().

◆ PROPSHEET_Cancel()

static void PROPSHEET_Cancel ( HWND  hwndDlg,
LPARAM  lParam 
)
static

Definition at line 1764 of file propsheet.c.

1765 {
1766  PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
1767  HWND hwndPage;
1768  PSHNOTIFY psn;
1769  int i;
1770 
1771  TRACE("active_page %d\n", psInfo->active_page);
1772  if (psInfo->active_page < 0)
1773  return;
1774 
1775  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
1776  psn.hdr.code = PSN_QUERYCANCEL;
1777  psn.hdr.hwndFrom = hwndDlg;
1778  psn.hdr.idFrom = 0;
1779  psn.lParam = 0;
1780 
1781  if (SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn))
1782  return;
1783 
1784  psn.hdr.code = PSN_RESET;
1785  psn.lParam = lParam;
1786 
1787  for (i = 0; i < psInfo->nPages; i++)
1788  {
1789  hwndPage = psInfo->proppage[i].hwndPage;
1790 
1791  if (hwndPage)
1792  SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
1793  }
1794 
1795  if (psInfo->isModeless)
1796  {
1797  /* makes PSM_GETCURRENTPAGEHWND return NULL */
1798  psInfo->activeValid = FALSE;
1799  }
1800  else
1801  psInfo->ended = TRUE;
1802 }
#define TRUE
Definition: types.h:120
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
#define PSN_QUERYCANCEL
Definition: prsht.h:123
UINT code
Definition: winuser.h:3112
NMHDR hdr
Definition: prsht.h:312
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
UINT_PTR idFrom
Definition: winuser.h:3111
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
HWND hwndFrom
Definition: winuser.h:3110
#define PSN_RESET
Definition: prsht.h:118
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
PropPageInfo * proppage
Definition: propsheet.c:123
LPARAM lParam
Definition: prsht.h:313
LPARAM lParam
Definition: combotst.c:139
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by PROPSHEET_DialogProc(), and PROPSHEET_DoCommand().

◆ PROPSHEET_CanSetCurSel()

static BOOL PROPSHEET_CanSetCurSel ( HWND  hwndDlg)
static

Definition at line 1934 of file propsheet.c.

1935 {
1936  PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
1937  HWND hwndPage;
1938  PSHNOTIFY psn;
1939  BOOL res = FALSE;
1940 
1941  if (!psInfo)
1942  {
1943  res = FALSE;
1944  goto end;
1945  }
1946 
1947  TRACE("active_page %d\n", psInfo->active_page);
1948  if (psInfo->active_page < 0)
1949  {
1950  res = TRUE;
1951  goto end;
1952  }
1953 
1954  /*
1955  * Notify the current page.
1956  */
1957  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
1958  psn.hdr.code = PSN_KILLACTIVE;
1959  psn.hdr.hwndFrom = hwndDlg;
1960  psn.hdr.idFrom = 0;
1961  psn.lParam = 0;
1962 
1963  res = !SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
1964 
1965 end:
1966  TRACE("<-- %d\n", res);
1967  return res;
1968 }
#define TRUE
Definition: types.h:120
GLuint GLuint end
Definition: gl.h:1545
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
UINT code
Definition: winuser.h:3112
NMHDR hdr
Definition: prsht.h:312
#define PSN_KILLACTIVE
Definition: prsht.h:116
unsigned int BOOL
Definition: ntddk_ex.h:94
UINT_PTR idFrom
Definition: winuser.h:3111
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
HWND hwndFrom
Definition: winuser.h:3110
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
GLuint res
Definition: glext.h:9613
PropPageInfo * proppage
Definition: propsheet.c:123
LPARAM lParam
Definition: prsht.h:313
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by PROPSHEET_Back(), PROPSHEET_DialogProc(), PROPSHEET_IsDialogMessage(), PROPSHEET_Next(), and PROPSHEET_SetCurSelId().

◆ PROPSHEET_Changed()

static void PROPSHEET_Changed ( HWND  hwndDlg,
HWND  hwndDirtyPage 
)
static

Definition at line 1829 of file propsheet.c.

1830 {
1831  int i;
1832  PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
1833 
1834  TRACE("\n");
1835  if (!psInfo) return;
1836  /*
1837  * Set the dirty flag of this page.
1838  */
1839  for (i = 0; i < psInfo->nPages; i++)
1840  {
1841  if (psInfo->proppage[i].hwndPage == hwndDirtyPage)
1842  psInfo->proppage[i].isDirty = TRUE;
1843  }
1844 
1845  /*
1846  * Enable the Apply button.
1847  */
1848  if (psInfo->hasApply)
1849  {
1850  HWND hwndApplyBtn = GetDlgItem(hwndDlg, IDC_APPLY_BUTTON);
1851 
1852  EnableWindow(hwndApplyBtn, TRUE);
1853  }
1854 }
#define TRUE
Definition: types.h:120
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
#define TRACE(s)
Definition: solgame.cpp:4
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define IDC_APPLY_BUTTON
Definition: propsheet.c:39
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
PropPageInfo * proppage
Definition: propsheet.c:123

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_CleanUp()

static void PROPSHEET_CleanUp ( HWND  hwndDlg)
static

Definition at line 2729 of file propsheet.c.

2730 {
2731  int i;
2732  PropSheetInfo* psInfo = RemovePropW(hwndDlg, PropSheetInfoStr);
2733 
2734  TRACE("\n");
2735  if (!psInfo) return;
2736  if (!IS_INTRESOURCE(psInfo->ppshheader.pszCaption))
2737  Free ((LPVOID)psInfo->ppshheader.pszCaption);
2738 
2739  for (i = 0; i < psInfo->nPages; i++)
2740  {
2741  PROPSHEETPAGEA* psp = (PROPSHEETPAGEA*)psInfo->proppage[i].hpage;
2742 
2743  /* Unsubclass the page dialog window */
2744  if((psInfo->ppshheader.dwFlags & (PSH_WIZARD97_NEW | PSH_WIZARD97_OLD)) &&
2745  (psInfo->ppshheader.dwFlags & PSH_WATERMARK) &&
2746  (psp->dwFlags & PSP_HIDEHEADER))
2747  {
2750  }
2751 
2752  if(psInfo->proppage[i].hwndPage)
2753  DestroyWindow(psInfo->proppage[i].hwndPage);
2754 
2755  if(psp)
2756  {
2757  if (psp->dwFlags & PSP_USETITLE)
2758  Free ((LPVOID)psInfo->proppage[i].pszText);
2759 
2761  }
2762  }
2763 
2764  DeleteObject(psInfo->hFont);
2765  DeleteObject(psInfo->hFontBold);
2766  /* If we created the bitmaps, destroy them */
2767  if ((psInfo->ppshheader.dwFlags & PSH_WATERMARK) &&
2768  (!(psInfo->ppshheader.dwFlags & PSH_USEHBMWATERMARK)) )
2769  DeleteObject(psInfo->ppshheader.u4.hbmWatermark);
2770  if ((psInfo->ppshheader.dwFlags & PSH_HEADER) &&
2771  (!(psInfo->ppshheader.dwFlags & PSH_USEHBMHEADER)) )
2772  DeleteObject(psInfo->ppshheader.u5.hbmHeader);
2773 
2774  Free(psInfo->proppage);
2775  Free(psInfo->strPropertiesFor);
2776  ImageList_Destroy(psInfo->hImageList);
2777 
2778  GlobalFree(psInfo);
2779 }
BOOL WINAPI DestroyPropertySheetPage(HPROPSHEETPAGE hPropPage)
Definition: propsheet.c:3135
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
BOOL WINAPI DestroyWindow(_In_ HWND)
HANDLE WINAPI RemovePropW(_In_ HWND, _In_ LPCWSTR)
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:656
BOOL WINAPI ImageList_Destroy(HIMAGELIST himl)
Definition: imagelist.c:893
LPWSTR strPropertiesFor
Definition: propsheet.c:113
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
HIMAGELIST hImageList
Definition: propsheet.c:128
LPCWSTR pszCaption
Definition: prsht.h:283
LPCWSTR pszText
Definition: propsheet.c:102
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
HGLOBAL NTAPI GlobalFree(HGLOBAL hMem)
Definition: heapmem.c:611
DWORD dwFlags
Definition: prsht.h:276
DWORD dwFlags
Definition: prsht.h:178
#define PSP_USETITLE
Definition: prsht.h:26
BOOL WINAPI RemoveWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uID)
Definition: commctrl.c:1390
HPROPSHEETPAGE hpage
Definition: propsheet.c:99
PropPageInfo * proppage
Definition: propsheet.c:123
static LRESULT CALLBACK PROPSHEET_WizardSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uID, DWORD_PTR dwRef)
Definition: propsheet.c:1187

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_CollectPageInfo()

static BOOL PROPSHEET_CollectPageInfo ( LPCPROPSHEETPAGEW  lppsp,
PropSheetInfo psInfo,
int  index,
BOOL  resize 
)
static

Definition at line 399 of file propsheet.c.

402 {
403  const DLGTEMPLATE* pTemplate;
404  const WORD* p;
405  DWORD dwFlags;
406  int width, height;
407 
408  if (!lppsp)
409  return FALSE;
410 
411  TRACE("\n");
412  psInfo->proppage[index].hpage = (HPROPSHEETPAGE)lppsp;
413  psInfo->proppage[index].hwndPage = 0;
414  psInfo->proppage[index].isDirty = FALSE;
415 
416  /*
417  * Process property page flags.
418  */
419  dwFlags = lppsp->dwFlags;
420  psInfo->proppage[index].useCallback = (dwFlags & PSP_USECALLBACK) && (lppsp->pfnCallback);
423 
424  /* as soon as we have a page with the help flag, set the sheet flag on */
425  if (psInfo->proppage[index].hasHelp)
426  psInfo->hasHelp = TRUE;
427 
428  /*
429  * Process page template.
430  */
431  if (dwFlags & PSP_DLGINDIRECT)
432  pTemplate = lppsp->u.pResource;
433  else if(dwFlags & PSP_INTERNAL_UNICODE )
434  {
435  HRSRC hResource = FindResourceW(lppsp->hInstance,
436  lppsp->u.pszTemplate,
437  (LPWSTR)RT_DIALOG);
438  HGLOBAL hTemplate = LoadResource(lppsp->hInstance,
439  hResource);
440  pTemplate = LockResource(hTemplate);
441  }
442  else
443  {
444  HRSRC hResource = FindResourceA(lppsp->hInstance,
445  (LPCSTR)lppsp->u.pszTemplate,
446  (LPSTR)RT_DIALOG);
447  HGLOBAL hTemplate = LoadResource(lppsp->hInstance,
448  hResource);
449  pTemplate = LockResource(hTemplate);
450  }
451 
452  /*
453  * Extract the size of the page and the caption.
454  */
455  if (!pTemplate)
456  return FALSE;
457 
458  p = (const WORD *)pTemplate;
459 
460  if (((const MyDLGTEMPLATEEX*)pTemplate)->signature == 0xFFFF)
461  {
462  /* DLGTEMPLATEEX (not defined in any std. header file) */
463 
464  p++; /* dlgVer */
465  p++; /* signature */
466  p += 2; /* help ID */
467  p += 2; /* ext style */
468  p += 2; /* style */
469  }
470  else
471  {
472  /* DLGTEMPLATE */
473 
474  p += 2; /* style */
475  p += 2; /* ext style */
476  }
477 
478  p++; /* nb items */
479  p++; /* x */
480  p++; /* y */
481  width = (WORD)*p; p++;
482  height = (WORD)*p; p++;
483 
484  if (lppsp->dwFlags & (PSP_USEHEADERTITLE | PSP_USEHEADERSUBTITLE))
485  psInfo->ppshheader.dwFlags |= PSH_HEADER;
486 
487  /* Special calculation for interior wizard pages so the largest page is
488  * calculated correctly. We need to add all the padding and space occupied
489  * by the header so the width and height sums up to the whole wizard client
490  * area. */
491  if ((psInfo->ppshheader.dwFlags & (PSH_WIZARD97_OLD | PSH_WIZARD97_NEW)) &&
492  (psInfo->ppshheader.dwFlags & PSH_HEADER) &&
493  !(dwFlags & PSP_HIDEHEADER))
494  {
496  width += 2 * WIZARD_PADDING;
497  }
498  if (psInfo->ppshheader.dwFlags & PSH_WIZARD)
499  {
500  height += 2 * WIZARD_PADDING;
501  width += 2 * WIZARD_PADDING;
502  }
503 
504  /* remember the largest width and height */
505  if (resize)
506  {
507  if (width > psInfo->width)
508  psInfo->width = width;
509 
510  if (height > psInfo->height)
511  psInfo->height = height;
512  }
513 
514  /* menu */
515  switch ((WORD)*p)
516  {
517  case 0x0000:
518  p++;
519  break;
520  case 0xffff:
521  p += 2;
522  break;
523  default:
524  p += lstrlenW( p ) + 1;
525  break;
526  }
527 
528  /* class */
529  switch ((WORD)*p)
530  {
531  case 0x0000:
532  p++;
533  break;
534  case 0xffff:
535  p += 2;
536  break;
537  default:
538  p += lstrlenW( p ) + 1;
539  break;
540  }
541 
542  /* Extract the caption */
543  psInfo->proppage[index].pszText = p;
544  TRACE("Tab %d %s\n",index,debugstr_w( p ));
545 
546  if (dwFlags & PSP_USETITLE)
547  {
548  WCHAR szTitle[256];
549  const WCHAR *pTitle;
550  static const WCHAR pszNull[] = { '(','n','u','l','l',')',0 };
551 
552  if (IS_INTRESOURCE( lppsp->pszTitle ))
553  {
555  pTitle = szTitle;
556  else if (*p)
557  pTitle = p;
558  else
559  pTitle = pszNull;
560  }
561  else
562  pTitle = lppsp->pszTitle;
563 
564  psInfo->proppage[index].pszText = heap_strdupW( pTitle );
565  }
566 
567  /*
568  * Build the image list for icons
569  */
570  if ((dwFlags & PSP_USEHICON) || (dwFlags & PSP_USEICONID))
571  {
572  HICON hIcon;
573  int icon_cx = GetSystemMetrics(SM_CXSMICON);
574  int icon_cy = GetSystemMetrics(SM_CYSMICON);
575 
576  if (dwFlags & PSP_USEICONID)
577  hIcon = LoadImageW(lppsp->hInstance, lppsp->u2.pszIcon, IMAGE_ICON,
578  icon_cx, icon_cy, LR_DEFAULTCOLOR);
579  else
580  hIcon = lppsp->u2.hIcon;
581 
582  if ( hIcon )
583  {
584  if (psInfo->hImageList == 0 )
585  psInfo->hImageList = ImageList_Create(icon_cx, icon_cy, ILC_COLOR, 1, 1);
586 
588  }
589 
590  }
591 
592  return TRUE;
593 }
GLint GLint GLsizei width
Definition: gl.h:1546
#define WIZARD_HEADER_HEIGHT
Definition: propsheet.c:156
static HICON
Definition: imagelist.c:84
#define TRUE
Definition: types.h:120
#define IMAGE_ICON
Definition: winuser.h:212
LPCWSTR pszTemplate
Definition: prsht.h:209
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
LPCDLGTEMPLATE pResource
Definition: prsht.h:210
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
#define SM_CYSMICON
Definition: winuser.h:1003
#define PSP_USEICONID
Definition: prsht.h:25
#define PSP_USECALLBACK
Definition: prsht.h:30
#define PSH_WIZARD
Definition: prsht.h:45
char * LPSTR
Definition: xmlstorage.h:182
#define lstrlenW
Definition: compat.h:407
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
HIMAGELIST WINAPI ImageList_Create(INT cx, INT cy, UINT flags, INT cInitial, INT cGrow)
Definition: imagelist.c:769
HIMAGELIST hImageList
Definition: propsheet.c:128
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
static WCHAR * heap_strdupW(const WCHAR *str)
Definition: propsheet.c:178
#define debugstr_w
Definition: kernel32.h:32
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define ILC_COLOR
Definition: commctrl.h:337
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
LPCWSTR pszText
Definition: propsheet.c:102
GLuint index
Definition: glext.h:6031
const char * LPCSTR
Definition: xmlstorage.h:183
LPCWSTR pszTitle
Definition: prsht.h:216
#define RT_DIALOG
Definition: pedump.c:367
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
if(!(yy_init))
Definition: macro.lex.yy.c:714
__wchar_t WCHAR
Definition: xmlstorage.h:180
unsigned short WORD
Definition: ntddk_ex.h:93
int WINAPI GetSystemMetrics(_In_ int)
unsigned long DWORD
Definition: ntddk_ex.h:95
INT WINAPI ImageList_AddIcon(HIMAGELIST himl, HICON hIcon)
Definition: imagelist.c:505
DWORD dwFlags
Definition: prsht.h:276
TCHAR szTitle[MAX_LOADSTRING]
Definition: magnifier.c:37
#define SM_CXSMICON
Definition: winuser.h:1002
#define index(s, c)
Definition: various.h:29
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
HINSTANCE hInstance
Definition: prsht.h:207
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define PSP_USETITLE
Definition: prsht.h:26
GLint GLint GLsizei GLsizei height
Definition: gl.h:1546
HICON hIcon
Definition: prsht.h:213
#define WIZARD_PADDING
Definition: propsheet.c:155
HICON hIcon
Definition: msconfig.c:44
#define ARRAY_SIZE(a)
Definition: main.h:24
HPROPSHEETPAGE hpage
Definition: propsheet.c:99
#define PSP_USEHICON
Definition: prsht.h:24
#define PSP_INTERNAL_UNICODE
Definition: propsheet.c:146
PropPageInfo * proppage
Definition: propsheet.c:123
#define PSP_HASHELP
Definition: prsht.h:28
LPCWSTR pszIcon
Definition: prsht.h:214
GLfloat GLfloat p
Definition: glext.h:8902
WCHAR * LPWSTR
Definition: xmlstorage.h:184
#define LR_DEFAULTCOLOR
Definition: winuser.h:1077
DWORD dwFlags
Definition: prsht.h:206
#define PSP_DLGINDIRECT
Definition: prsht.h:23

Referenced by PropertySheetA(), PropertySheetW(), and PROPSHEET_InsertPage().

◆ PROPSHEET_CollectSheetInfoA()

static void PROPSHEET_CollectSheetInfoA ( LPCPROPSHEETHEADERA  lppsh,
PropSheetInfo psInfo 
)
static

Definition at line 317 of file propsheet.c.

319 {
320  DWORD dwSize = min(lppsh->dwSize,sizeof(PROPSHEETHEADERA));
321  DWORD dwFlags = lppsh->dwFlags;
322 
323  psInfo->useCallback = (dwFlags & PSH_USECALLBACK )&& (lppsh->pfnCallback);
324 
325  memcpy(&psInfo->ppshheader,lppsh,dwSize);
326  TRACE("\n** PROPSHEETHEADER **\ndwSize\t\t%d\ndwFlags\t\t%08x\nhwndParent\t%p\nhInstance\t%p\npszCaption\t'%s'\nnPages\t\t%d\npfnCallback\t%p\n",
327  lppsh->dwSize, lppsh->dwFlags, lppsh->hwndParent, lppsh->hInstance,
328  debugstr_a(lppsh->pszCaption), lppsh->nPages, lppsh->pfnCallback);
329 
330  if (lppsh->dwFlags & INTRNL_ANY_WIZARD)
331  psInfo->ppshheader.pszCaption = NULL;
332  else
333  {
334  if (!IS_INTRESOURCE(lppsh->pszCaption))
335  {
336  int len = MultiByteToWideChar(CP_ACP, 0, lppsh->pszCaption, -1, NULL, 0);
337  WCHAR *caption = Alloc( len*sizeof (WCHAR) );
338 
339  MultiByteToWideChar(CP_ACP, 0, lppsh->pszCaption, -1, caption, len);
340  psInfo->ppshheader.pszCaption = caption;
341  }
342  }
343  psInfo->nPages = lppsh->nPages;
344 
346  {
347  TRACE("PSH_USEPSTARTPAGE is on\n");
348  psInfo->active_page = 0;
349  }
350  else
351  psInfo->active_page = lppsh->u2.nStartPage;
352 
354 }
#define INTRNL_ANY_WIZARD
Definition: propsheet.c:152
#define CP_ACP
Definition: compat.h:99
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
LPCSTR pszCaption
Definition: prsht.h:248
#define PSH_USECALLBACK
Definition: prsht.h:48
UINT nStartPage
Definition: prsht.h:251
LPCWSTR pszCaption
Definition: prsht.h:283
HWND hwndParent
Definition: prsht.h:242
PFNPROPSHEETCALLBACK pfnCallback
Definition: prsht.h:258
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define debugstr_a
Definition: kernel32.h:31
DWORD dwSize
Definition: prsht.h:240
#define PSH_USEPSTARTPAGE
Definition: prsht.h:46
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwFlags
Definition: prsht.h:241
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
GLenum GLsizei len
Definition: glext.h:6722
static void PROPSHEET_CollectSheetInfoCommon(PropSheetInfo *psInfo, DWORD dwFlags)
Definition: propsheet.c:295
#define min(a, b)
Definition: monoChain.cc:55
#define MultiByteToWideChar
Definition: compat.h:100
HINSTANCE hInstance
Definition: prsht.h:243
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54

Referenced by PropertySheetA().

◆ PROPSHEET_CollectSheetInfoCommon()

static void PROPSHEET_CollectSheetInfoCommon ( PropSheetInfo psInfo,
DWORD  dwFlags 
)
static

Definition at line 295 of file propsheet.c.

296 {
298 
299  psInfo->hasHelp = dwFlags & PSH_HASHELP;
300  psInfo->hasApply = !(dwFlags & PSH_NOAPPLYNOW);
302  psInfo->isModeless = dwFlags & PSH_MODELESS;
304  if (psInfo->active_page < 0 || psInfo->active_page >= psInfo->nPages)
305  psInfo->active_page = 0;
306 
307  psInfo->result = 0;
308  psInfo->hImageList = 0;
309  psInfo->activeValid = FALSE;
310 }
#define PSH_WIZARDHASFINISH
Definition: prsht.h:44
#define PSH_NOAPPLYNOW
Definition: prsht.h:47
#define PSH_MODELESS
Definition: prsht.h:50
HIMAGELIST hImageList
Definition: propsheet.c:128
static VOID PROPSHEET_UnImplementedFlags(DWORD dwFlags)
Definition: propsheet.c:204
#define PSH_HASHELP
Definition: prsht.h:49
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define PSH_PROPSHEETPAGE
Definition: prsht.h:43

Referenced by PROPSHEET_CollectSheetInfoA(), and PROPSHEET_CollectSheetInfoW().

◆ PROPSHEET_CollectSheetInfoW()

static void PROPSHEET_CollectSheetInfoW ( LPCPROPSHEETHEADERW  lppsh,
PropSheetInfo psInfo 
)
static

Definition at line 361 of file propsheet.c.

363 {
364  DWORD dwSize = min(lppsh->dwSize,sizeof(PROPSHEETHEADERW));
365  DWORD dwFlags = lppsh->dwFlags;
366 
367  psInfo->useCallback = (dwFlags & PSH_USECALLBACK) && (lppsh->pfnCallback);
368 
369  memcpy(&psInfo->ppshheader,lppsh,dwSize);
370  TRACE("\n** PROPSHEETHEADER **\ndwSize\t\t%d\ndwFlags\t\t%08x\nhwndParent\t%p\nhInstance\t%p\npszCaption\t%s\nnPages\t\t%d\npfnCallback\t%p\n",
371  lppsh->dwSize, lppsh->dwFlags, lppsh->hwndParent, lppsh->hInstance, debugstr_w(lppsh->pszCaption), lppsh->nPages, lppsh->pfnCallback);
372 
373  if (lppsh->dwFlags & INTRNL_ANY_WIZARD)
374  psInfo->ppshheader.pszCaption = NULL;
375  else
376  {
377  if (!IS_INTRESOURCE(lppsh->pszCaption))
378  psInfo->ppshheader.pszCaption = heap_strdupW( lppsh->pszCaption );
379  }
380  psInfo->nPages = lppsh->nPages;
381 
383  {
384  TRACE("PSH_USEPSTARTPAGE is on\n");
385  psInfo->active_page = 0;
386  }
387  else
388  psInfo->active_page = lppsh->u2.nStartPage;
389 
391 }
HWND hwndParent
Definition: prsht.h:277
#define INTRNL_ANY_WIZARD
Definition: propsheet.c:152
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
#define PSH_USECALLBACK
Definition: prsht.h:48
LPCWSTR pszCaption
Definition: prsht.h:283
static WCHAR * heap_strdupW(const WCHAR *str)
Definition: propsheet.c:178
#define debugstr_w
Definition: kernel32.h:32
PFNPROPSHEETCALLBACK pfnCallback
Definition: prsht.h:293
smooth NULL
Definition: ftsmooth.c:416
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
HINSTANCE hInstance
Definition: prsht.h:278
#define PSH_USEPSTARTPAGE
Definition: prsht.h:46
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwSize
Definition: prsht.h:275
DWORD dwFlags
Definition: prsht.h:276
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static void PROPSHEET_CollectSheetInfoCommon(PropSheetInfo *psInfo, DWORD dwFlags)
Definition: propsheet.c:295
#define min(a, b)
Definition: monoChain.cc:55
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:54
UINT nStartPage
Definition: prsht.h:286

Referenced by PropertySheetW().

◆ PROPSHEET_CreateDialog()

static INT_PTR PROPSHEET_CreateDialog ( PropSheetInfo psInfo)
static

Definition at line 600 of file propsheet.c.

601 {
602  LRESULT ret;
603  LPCVOID template;
604  LPVOID temp = 0;
605  HRSRC hRes;
606  DWORD resSize;
607  WORD resID = IDD_PROPSHEET;
608 
609  TRACE("(%p)\n", psInfo);
610  if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD)
611  resID = IDD_WIZARD;
612 
613  if( psInfo->unicode )
614  {
615  if(!(hRes = FindResourceW(COMCTL32_hModule,
616  MAKEINTRESOURCEW(resID),
617  (LPWSTR)RT_DIALOG)))
618  return -1;
619  }
620  else
621  {
622  if(!(hRes = FindResourceA(COMCTL32_hModule,
623  MAKEINTRESOURCEA(resID),
624  (LPSTR)RT_DIALOG)))
625  return -1;
626  }
627 
628  if(!(template = LoadResource(COMCTL32_hModule, hRes)))
629  return -1;
630 
631  /*
632  * Make a copy of the dialog template.
633  */
634  resSize = SizeofResource(COMCTL32_hModule, hRes);
635 
636  temp = Alloc(2 * resSize);
637 
638  if (!temp)
639  return -1;
640 
641  memcpy(temp, template, resSize);
642 
643  if (psInfo->ppshheader.dwFlags & PSH_NOCONTEXTHELP)
644  {
645  if (((MyDLGTEMPLATEEX*)temp)->signature == 0xFFFF)
646  ((MyDLGTEMPLATEEX*)temp)->style &= ~DS_CONTEXTHELP;
647  else
649  }
650  if ((psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD) &&
652  {
653  if (((MyDLGTEMPLATEEX*)temp)->signature == 0xFFFF)
654  ((MyDLGTEMPLATEEX*)temp)->style |= DS_CONTEXTHELP;
655  else
657  }
658 
659  if (psInfo->useCallback)
660  (*(psInfo->ppshheader.pfnCallback))(0, PSCB_PRECREATE, (LPARAM)temp);
661 
662  /* NOTE: MSDN states "Returns a positive value if successful, or -1
663  * otherwise for modal property sheets.", but this is wrong. The
664  * actual return value is either TRUE (success), FALSE (cancel) or
665  * -1 (error). */
666  if( psInfo->unicode )
667  {
669  temp, psInfo->ppshheader.hwndParent,
670  PROPSHEET_DialogProc, (LPARAM)psInfo);
671  if ( !ret ) ret = -1;
672  }
673  else
674  {
676  temp, psInfo->ppshheader.hwndParent,
677  PROPSHEET_DialogProc, (LPARAM)psInfo);
678  if ( !ret ) ret = -1;
679  }
680 
681  Free(temp);
682 
683  return ret;
684 }
HWND hwndParent
Definition: prsht.h:277
#define INTRNL_ANY_WIZARD
Definition: propsheet.c:152
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
static INT_PTR(WINAPI *pPropertySheetA)(const PROPSHEETHEADERA *header)
HWND WINAPI CreateDialogIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
#define MAKEINTRESOURCEA(i)
Definition: winuser.h:581
char * LPSTR
Definition: xmlstorage.h:182
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:656
#define IDD_PROPSHEET
Definition: comctl32.h:42
#define PSH_WIZARDCONTEXTHELP
Definition: prsht.h:52
PFNPROPSHEETCALLBACK pfnCallback
Definition: prsht.h:293
#define PSCB_PRECREATE
Definition: prsht.h:76
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
LONG_PTR LPARAM
Definition: windef.h:208
#define RT_DIALOG
Definition: pedump.c:367
#define TRACE(s)
Definition: solgame.cpp:4
HINSTANCE hInstance
Definition: prsht.h:278
HWND WINAPI CreateDialogIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwFlags
Definition: prsht.h:276
#define IDD_WIZARD
Definition: comctl32.h:43
int ret
#define DS_CONTEXTHELP
Definition: winuser.h:371
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
HMODULE COMCTL32_hModule
Definition: commctrl.c:79
static calc_node_t temp
Definition: rpn_ieee.c:38
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:568
CONST void * LPCVOID
Definition: windef.h:191
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WCHAR * LPWSTR
Definition: xmlstorage.h:184
LONG_PTR LRESULT
Definition: windef.h:209
Arabic default style
Definition: afstyles.h:93
static INT_PTR CALLBACK PROPSHEET_DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
Definition: propsheet.c:3484

Referenced by PROPSHEET_PropertySheet().

◆ PROPSHEET_CreatePage()

static BOOL PROPSHEET_CreatePage ( HWND  hwndParent,
int  index,
const PropSheetInfo psInfo,
LPCPROPSHEETPAGEW  ppshpage 
)
static

Definition at line 1341 of file propsheet.c.

1345 {
1346  const DLGTEMPLATE* pTemplate;
1347  HWND hwndPage;
1348  DWORD resSize;
1349  DLGTEMPLATE* pTemplateCopy = NULL;
1350 
1351  TRACE("index %d\n", index);
1352 
1353  if (ppshpage == NULL)
1354  {
1355  return FALSE;
1356  }
1357 
1358  if (ppshpage->dwFlags & PSP_DLGINDIRECT)
1359  {
1360  pTemplate = ppshpage->u.pResource;
1361  resSize = GetTemplateSize(pTemplate);
1362  }
1363  else if(ppshpage->dwFlags & PSP_INTERNAL_UNICODE)
1364  {
1365  HRSRC hResource;
1366  HANDLE hTemplate;
1367 
1368  hResource = FindResourceW(ppshpage->hInstance,
1369  ppshpage->u.pszTemplate,
1370  (LPWSTR)RT_DIALOG);
1371  if(!hResource)
1372  return FALSE;
1373 
1374  resSize = SizeofResource(ppshpage->hInstance, hResource);
1375 
1376  hTemplate = LoadResource(ppshpage->hInstance, hResource);
1377  if(!hTemplate)
1378  return FALSE;
1379 
1380  pTemplate = LockResource(hTemplate);
1381  /*
1382  * Make a copy of the dialog template to make it writable
1383  */
1384  }
1385  else
1386  {
1387  HRSRC hResource;
1388  HANDLE hTemplate;
1389 
1390  hResource = FindResourceA(ppshpage->hInstance,
1391  (LPCSTR)ppshpage->u.pszTemplate,
1392  (LPSTR)RT_DIALOG);
1393  if(!hResource)
1394  return FALSE;
1395 
1396  resSize = SizeofResource(ppshpage->hInstance, hResource);
1397 
1398  hTemplate = LoadResource(ppshpage->hInstance, hResource);
1399  if(!hTemplate)
1400  return FALSE;
1401 
1402  pTemplate = LockResource(hTemplate);
1403  /*
1404  * Make a copy of the dialog template to make it writable
1405  */
1406  }
1407  pTemplateCopy = Alloc(resSize);
1408  if (!pTemplateCopy)
1409  return FALSE;
1410 
1411  TRACE("copying pTemplate %p into pTemplateCopy %p (%d)\n", pTemplate, pTemplateCopy, resSize);
1412  memcpy(pTemplateCopy, pTemplate, resSize);
1413 
1414  if (((MyDLGTEMPLATEEX*)pTemplateCopy)->signature == 0xFFFF)
1415  {
1416  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style |= WS_CHILD | WS_TABSTOP | DS_CONTROL;
1417  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~DS_MODALFRAME;
1418  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~WS_CAPTION;
1419  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~WS_SYSMENU;
1420  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~WS_POPUP;
1421  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~WS_DISABLED;
1422  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~WS_VISIBLE;
1423  ((MyDLGTEMPLATEEX*)pTemplateCopy)->style &= ~WS_THICKFRAME;
1424 
1425  ((MyDLGTEMPLATEEX*)pTemplateCopy)->exStyle |= WS_EX_CONTROLPARENT;
1426  }
1427  else
1428  {
1429  pTemplateCopy->style |= WS_CHILD | WS_TABSTOP | DS_CONTROL;
1430  pTemplateCopy->style &= ~DS_MODALFRAME;
1431  pTemplateCopy->style &= ~WS_CAPTION;
1432  pTemplateCopy->style &= ~WS_SYSMENU;
1433  pTemplateCopy->style &= ~WS_POPUP;
1434  pTemplateCopy->style &= ~WS_DISABLED;
1435  pTemplateCopy->style &= ~WS_VISIBLE;
1436  pTemplateCopy->style &= ~WS_THICKFRAME;
1437 
1438  pTemplateCopy->dwExtendedStyle |= WS_EX_CONTROLPARENT;
1439  }
1440 
1441  if (psInfo->proppage[index].useCallback)
1442  (*(ppshpage->pfnCallback))(0, PSPCB_CREATE,
1443  (LPPROPSHEETPAGEW)ppshpage);
1444 
1445  if(ppshpage->dwFlags & PSP_INTERNAL_UNICODE)
1446  hwndPage = CreateDialogIndirectParamW(ppshpage->hInstance,
1447  pTemplateCopy,
1448  hwndParent,
1449  ppshpage->pfnDlgProc,
1450  (LPARAM)ppshpage);
1451  else
1452  hwndPage = CreateDialogIndirectParamA(ppshpage->hInstance,
1453  pTemplateCopy,
1454  hwndParent,
1455  ppshpage->pfnDlgProc,
1456  (LPARAM)ppshpage);
1457  /* Free a no more needed copy */
1458  Free(pTemplateCopy);
1459 
1460  if(!hwndPage)
1461  return FALSE;
1462 
1463  psInfo->proppage[index].hwndPage = hwndPage;
1464 
1465  /* Subclass exterior wizard pages */
1466  if((psInfo->ppshheader.dwFlags & (PSH_WIZARD97_NEW | PSH_WIZARD97_OLD)) &&
1467  (psInfo->ppshheader.dwFlags & PSH_WATERMARK) &&
1468  (ppshpage->dwFlags & PSP_HIDEHEADER))
1469  {
1471  (DWORD_PTR)ppshpage);
1472  }
1473  if (!(psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD))
1475 
1476  return TRUE;
1477 }
#define WS_DISABLED
Definition: pedump.c:621
#define WS_THICKFRAME
Definition: pedump.c:630
#define TRUE
Definition: types.h:120
#define INTRNL_ANY_WIZARD
Definition: propsheet.c:152
LPCWSTR pszTemplate
Definition: prsht.h:209
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
HRSRC WINAPI FindResourceA(HMODULE hModule, LPCSTR name, LPCSTR type)
Definition: res.c:155
LPCDLGTEMPLATE pResource
Definition: prsht.h:210
HWND WINAPI CreateDialogIndirectParamW(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
#define WS_CHILD
Definition: pedump.c:617
char * LPSTR
Definition: xmlstorage.h:182
static UINT GetTemplateSize(const DLGTEMPLATE *pTemplate)
Definition: propsheet.c:1209
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
Definition: res.c:176
_In_opt_ PALLOCATE_FUNCTION _In_opt_ PFREE_FUNCTION Free
Definition: exfuncs.h:656
#define DS_MODALFRAME
Definition: winuser.h:375
#define WS_EX_CONTROLPARENT
Definition: winuser.h:387
DLGPROC pfnDlgProc
Definition: prsht.h:217
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
smooth NULL
Definition: ftsmooth.c:416
struct _PROPSHEETPAGEW * LPPROPSHEETPAGEW
static HWND hwndParent
Definition: cryptui.c:300
#define ETDT_ENABLETAB
Definition: dxdiag.c:30
LONG_PTR LPARAM
Definition: windef.h:208
GLuint index
Definition: glext.h:6031
const char * LPCSTR
Definition: xmlstorage.h:183
#define RT_DIALOG
Definition: pedump.c:367
BOOL WINAPI SetWindowSubclass(HWND hWnd, SUBCLASSPROC pfnSubclass, UINT_PTR uIDSubclass, DWORD_PTR dwRef)
Definition: commctrl.c:1261
#define WS_CAPTION
Definition: pedump.c:624
#define TRACE(s)
Definition: solgame.cpp:4
HRESULT WINAPI EnableThemeDialogTexture(_In_ HWND hwnd, _In_ DWORD dwFlags)
Definition: uxthemesupp.c:55
HWND WINAPI CreateDialogIndirectParamA(_In_opt_ HINSTANCE, _In_ LPCDLGTEMPLATE, _In_opt_ HWND, _In_opt_ DLGPROC, _In_ LPARAM)
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwFlags
Definition: prsht.h:276
#define PSPCB_CREATE
Definition: prsht.h:38
#define index(s, c)
Definition: various.h:29
HINSTANCE hInstance
Definition: prsht.h:207
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
#define WS_TABSTOP
Definition: pedump.c:634
uint32_t DWORD_PTR
Definition: typedefs.h:63
#define DS_CONTROL
Definition: winuser.h:372
#define WS_POPUP
Definition: pedump.c:616
DWORD WINAPI SizeofResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:568
#define PSP_INTERNAL_UNICODE
Definition: propsheet.c:146
PropPageInfo * proppage
Definition: propsheet.c:123
WCHAR * LPWSTR
Definition: xmlstorage.h:184
static LRESULT CALLBACK PROPSHEET_WizardSubclassProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uID, DWORD_PTR dwRef)
Definition: propsheet.c:1187
#define WS_VISIBLE
Definition: pedump.c:620
#define WS_SYSMENU
Definition: pedump.c:629
DWORD dwFlags
Definition: prsht.h:206
#define PSP_DLGINDIRECT
Definition: prsht.h:23

Referenced by PROPSHEET_InsertPage(), PROPSHEET_SetCurSel(), and PROPSHEET_ShowPage().

◆ PROPSHEET_CreateTabControl()

static BOOL PROPSHEET_CreateTabControl ( HWND  hwndParent,
const PropSheetInfo psInfo 
)
static

Definition at line 1137 of file propsheet.c.

1139 {
1140  HWND hwndTabCtrl = GetDlgItem(hwndParent, IDC_TABCONTROL);
1141  TCITEMW item;
1142  int i, nTabs;
1143  int iImage = 0;
1144 
1145  TRACE("\n");
1146  item.mask = TCIF_TEXT;
1147  item.cchTextMax = MAX_TABTEXT_LENGTH;
1148 
1149  nTabs = psInfo->nPages;
1150 
1151  /*
1152  * Set the image list for icons.
1153  */
1154  if (psInfo->hImageList)
1155  {
1156  SendMessageW(hwndTabCtrl, TCM_SETIMAGELIST, 0, (LPARAM)psInfo->hImageList);
1157  }
1158 
1159  SendMessageW(hwndTabCtrl, WM_SETREDRAW, 0, 0);
1160  for (i = 0; i < nTabs; i++)
1161  {
1162  if ( psInfo->proppage[i].hasIcon )
1163  {
1164  item.mask |= TCIF_IMAGE;
1165  item.iImage = iImage++;
1166  }
1167  else
1168  {
1169  item.mask &= ~TCIF_IMAGE;
1170  }
1171 
1172  item.pszText = (LPWSTR) psInfo->proppage[i].pszText;
1173  SendMessageW(hwndTabCtrl, TCM_INSERTITEMW, i, (LPARAM)&item);
1174  }
1175  SendMessageW(hwndTabCtrl, WM_SETREDRAW, 1, 0);
1176 
1177  return TRUE;
1178 }
#define TRUE
Definition: types.h:120
#define MAX_TABTEXT_LENGTH
Definition: propsheet.c:149
#define WM_SETREDRAW
Definition: winuser.h:1598
#define TCIF_TEXT
Definition: commctrl.h:3943
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
HIMAGELIST hImageList
Definition: propsheet.c:128
#define TCM_INSERTITEMW
Definition: commctrl.h:4019
static HWND hwndParent
Definition: cryptui.c:300
LONG_PTR LPARAM
Definition: windef.h:208
LPCWSTR pszText
Definition: propsheet.c:102
#define TRACE(s)
Definition: solgame.cpp:4
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define TCM_SETIMAGELIST
Definition: commctrl.h:3937
#define TCIF_IMAGE
Definition: commctrl.h:3944
static ATOM item
Definition: dde.c:856
#define IDC_TABCONTROL
Definition: comctl32.h:45
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
PropPageInfo * proppage
Definition: propsheet.c:123
WCHAR * LPWSTR
Definition: xmlstorage.h:184

Referenced by PROPSHEET_DialogProc().

◆ PROPSHEET_DialogProc()

static INT_PTR CALLBACK PROPSHEET_DialogProc ( HWND  hwnd,
UINT  uMsg,
WPARAM  wParam,
LPARAM  lParam 
)
static

Definition at line 3484 of file propsheet.c.

3485 {
3486  TRACE("hwnd=%p msg=0x%04x wparam=%lx lparam=%lx\n",
3487  hwnd, uMsg, wParam, lParam);
3488 
3489  switch (uMsg)
3490  {
3491  case WM_INITDIALOG:
3492  {
3493  PropSheetInfo* psInfo = (PropSheetInfo*) lParam;
3494  WCHAR* strCaption = Alloc(MAX_CAPTION_LENGTH*sizeof(WCHAR));
3495  HWND hwndTabCtrl = GetDlgItem(hwnd, IDC_TABCONTROL);
3496  int idx;
3497  LOGFONTW logFont;
3498 
3499  /* Using PropSheetInfoStr to store extra data doesn't match the native
3500  * common control: native uses TCM_[GS]ETITEM
3501  */
3502  SetPropW(hwnd, PropSheetInfoStr, psInfo);
3503 
3504  /*
3505  * psInfo->hwnd is not being used by WINE code - it exists
3506  * for compatibility with "real" Windoze. The same about
3507  * SetWindowLongPtr - WINE is only using the PropSheetInfoStr
3508  * property.
3509  */
3510  psInfo->hwnd = hwnd;
3512 
3513  if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD)
3514  {
3515  /* set up the Next and Back buttons by default */
3517  }
3518 
3519  /* Set up fonts */
3521  psInfo->hFont = CreateFontIndirectW (&logFont);
3522  logFont.lfWeight = FW_BOLD;
3523  psInfo->hFontBold = CreateFontIndirectW (&logFont);
3524 
3525  /*
3526  * Small icon in the title bar.
3527  */
3528  if ((psInfo->ppshheader.dwFlags & PSH_USEICONID) ||
3529  (psInfo->ppshheader.dwFlags & PSH_USEHICON))
3530  {
3531  HICON hIcon;
3532  int icon_cx = GetSystemMetrics(SM_CXSMICON);
3533  int icon_cy = GetSystemMetrics(SM_CYSMICON);
3534 
3535  if (psInfo->ppshheader.dwFlags & PSH_USEICONID)
3537  psInfo->ppshheader.u.pszIcon,
3538  IMAGE_ICON,
3539  icon_cx, icon_cy,
3540  LR_DEFAULTCOLOR);
3541  else
3542  hIcon = psInfo->ppshheader.u.hIcon;
3543 
3544  SendMessageW(hwnd, WM_SETICON, 0, (LPARAM)hIcon);
3545  }
3546 
3547  if (psInfo->ppshheader.dwFlags & PSH_USEHICON)
3548  SendMessageW(hwnd, WM_SETICON, 0, (LPARAM)psInfo->ppshheader.u.hIcon);
3549 
3550  psInfo->strPropertiesFor = strCaption;
3551 
3553 
3555 
3557 
3558  if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD)
3559  {
3560  ShowWindow(hwndTabCtrl, SW_HIDE);
3564  }
3565  else
3566  {
3567  if (PROPSHEET_SizeMismatch(hwnd, psInfo))
3568  {
3569  PROPSHEET_AdjustSize(hwnd, psInfo);
3570  PROPSHEET_AdjustButtons(hwnd, psInfo);
3571  }
3573  }
3574 
3575  if (IS_INTRESOURCE(psInfo->ppshheader.pszCaption) &&
3576  psInfo->ppshheader.hInstance)
3577  {
3578  WCHAR szText[256];
3579 
3580  if (LoadStringW(psInfo->ppshheader.hInstance,
3581  (UINT_PTR)psInfo->ppshheader.pszCaption, szText, 255))
3583  }
3584  else
3585  {
3587  psInfo->ppshheader.pszCaption);
3588  }
3589 
3590 
3591  if (psInfo->useCallback)
3592  (*(psInfo->ppshheader.pfnCallback))(hwnd, PSCB_INITIALIZED, 0);
3593 
3594  idx = psInfo->active_page;
3595  psInfo->active_page = -1;
3596 
3597  PROPSHEET_SetCurSel(hwnd, idx, 1, psInfo->proppage[idx].hpage);
3598 
3599  /* doing TCM_SETCURSEL seems to be needed even in case of PSH_WIZARD,
3600  * as some programs call TCM_GETCURSEL to get the current selection
3601  * from which to switch to the next page */
3602  SendMessageW(hwndTabCtrl, TCM_SETCURSEL, psInfo->active_page, 0);
3603 
3605 
3606  /* wizards set their focus during init */
3607  if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD)
3608  return FALSE;
3609 
3610  return TRUE;
3611  }
3612 
3613  case WM_PRINTCLIENT:
3614  case WM_PAINT:
3616  return TRUE;
3617 
3618  case WM_DESTROY:
3620  return TRUE;
3621 
3622  case WM_CLOSE:
3623  PROPSHEET_Cancel(hwnd, 1);
3624  return FALSE; /* let DefDlgProc post us WM_COMMAND/IDCANCEL */
3625 
3626  case WM_COMMAND:
3628  {
3630 
3631  if (!psInfo)
3632  return FALSE;
3633 
3634  /* No default handler, forward notification to active page */
3635  if (psInfo->activeValid && psInfo->active_page != -1)
3636  {
3637  HWND hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
3638  SendMessageW(hwndPage, WM_COMMAND, wParam, lParam);
3639  }
3640  }
3641  return TRUE;
3642 
3643  case WM_NOTIFY:
3644  {
3645  NMHDR* pnmh = (LPNMHDR) lParam;
3646 
3647  if (pnmh->code == TCN_SELCHANGE)
3648  {
3649  int index = SendMessageW(pnmh->hwndFrom, TCM_GETCURSEL, 0, 0);
3650  PROPSHEET_SetCurSel(hwnd, index, 1, 0);
3651  }
3652 
3653  if(pnmh->code == TCN_SELCHANGING)
3654  {
3657  return TRUE;
3658  }
3659 
3660  return FALSE;
3661  }
3662 
3663  case WM_SYSCOLORCHANGE:
3665  return FALSE;
3666 
3668  {
3670  HWND hwndPage = 0;
3671 
3672  if (!psInfo)
3673  return FALSE;
3674 
3675  if (psInfo->activeValid && psInfo->active_page != -1)
3676  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
3677 
3679 
3680  return TRUE;
3681  }
3682 
3683  case PSM_CHANGED:
3685  return TRUE;
3686 
3687  case PSM_UNCHANGED:
3689  return TRUE;
3690 
3691  case PSM_GETTABCONTROL:
3692  {
3693  HWND hwndTabCtrl = GetDlgItem(hwnd, IDC_TABCONTROL);
3694 
3696 
3697  return TRUE;
3698  }
3699 
3700  case PSM_SETCURSEL:
3701  {
3702  BOOL msgResult;
3703 
3704  msgResult = PROPSHEET_CanSetCurSel(hwnd);
3705  if(msgResult != FALSE)
3706  {
3707  msgResult = PROPSHEET_SetCurSel(hwnd,
3708  (int)wParam,
3709  1,
3711  }
3712 
3713  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3714 
3715  return TRUE;
3716  }
3717 
3718  case PSM_CANCELTOCLOSE:
3719  {
3721  HWND hwndOK = GetDlgItem(hwnd, IDOK);
3722  HWND hwndCancel = GetDlgItem(hwnd, IDCANCEL);
3723 
3724  EnableWindow(hwndCancel, FALSE);
3726  SetWindowTextW(hwndOK, buf);
3727 
3728  return FALSE;
3729  }
3730 
3731  case PSM_RESTARTWINDOWS:
3732  {
3734 
3735  if (!psInfo)
3736  return FALSE;
3737 
3738  /* reboot system takes precedence over restart windows */
3739  if (psInfo->result != ID_PSREBOOTSYSTEM)
3740  psInfo->result = ID_PSRESTARTWINDOWS;
3741 
3742  return TRUE;
3743  }
3744 
3745  case PSM_REBOOTSYSTEM:
3746  {
3748 
3749  if (!psInfo)
3750  return FALSE;
3751 
3752  psInfo->result = ID_PSREBOOTSYSTEM;
3753 
3754  return TRUE;
3755  }
3756 
3757  case PSM_SETTITLEA:
3759  return TRUE;
3760 
3761  case PSM_SETTITLEW:
3763  return TRUE;
3764 
3765  case PSM_APPLY:
3766  {
3767  BOOL msgResult = PROPSHEET_Apply(hwnd, 0);
3768 
3769  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3770 
3771  return TRUE;
3772  }
3773 
3774  case PSM_QUERYSIBLINGS:
3775  {
3777 
3778  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3779 
3780  return TRUE;
3781  }
3782 
3783  case PSM_ADDPAGE:
3784  {
3785  /*
3786  * Note: MSVC++ 6.0 documentation says that PSM_ADDPAGE does not have
3787  * a return value. This is not true. PSM_ADDPAGE returns TRUE
3788  * on success or FALSE otherwise, as specified on MSDN Online.
3789  * Also see the MFC code for
3790  * CPropertySheet::AddPage(CPropertyPage* pPage).
3791  */
3792 
3794 
3795  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3796 
3797  return TRUE;
3798  }
3799 
3800  case PSM_REMOVEPAGE:
3802  return TRUE;
3803 
3804  case PSM_ISDIALOGMESSAGE:
3805  {
3807  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3808  return TRUE;
3809  }
3810 
3811  case PSM_PRESSBUTTON:
3813  return TRUE;
3814 
3815  case PSM_SETFINISHTEXTA:
3817  return TRUE;
3818 
3819  case PSM_SETWIZBUTTONS:
3821  return TRUE;
3822 
3823  case PSM_SETCURSELID:
3825  return TRUE;
3826 
3827  case PSM_SETFINISHTEXTW:
3829  return FALSE;
3830 
3831  case PSM_INSERTPAGE:
3832  {
3834  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3835  return TRUE;
3836  }
3837 
3838  case PSM_SETHEADERTITLEW:
3840  return TRUE;
3841 
3842  case PSM_SETHEADERTITLEA:
3844  return TRUE;
3845 
3846  case PSM_SETHEADERSUBTITLEW:
3848  return TRUE;
3849 
3850  case PSM_SETHEADERSUBTITLEA:
3852  return TRUE;
3853 
3854  case PSM_HWNDTOINDEX:
3855  {
3856  LRESULT msgResult = PROPSHEET_HwndToIndex(hwnd, (HWND)wParam);
3857  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3858  return TRUE;
3859  }
3860 
3861  case PSM_INDEXTOHWND:
3862  {
3863  LRESULT msgResult = PROPSHEET_IndexToHwnd(hwnd, (int)wParam);
3864  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3865  return TRUE;
3866  }
3867 
3868  case PSM_PAGETOINDEX:
3869  {
3871  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3872  return TRUE;
3873  }
3874 
3875  case PSM_INDEXTOPAGE:
3876  {
3877  LRESULT msgResult = PROPSHEET_IndexToPage(hwnd, (int)wParam);
3878  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3879  return TRUE;
3880  }
3881 
3882  case PSM_IDTOINDEX:
3883  {
3884  LRESULT msgResult = PROPSHEET_IdToIndex(hwnd, (int)lParam);
3885  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3886  return TRUE;
3887  }
3888 
3889  case PSM_INDEXTOID:
3890  {
3891  LRESULT msgResult = PROPSHEET_IndexToId(hwnd, (int)wParam);
3892  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3893  return TRUE;
3894  }
3895 
3896  case PSM_GETRESULT:
3897  {
3898  LRESULT msgResult = PROPSHEET_GetResult(hwnd);
3899  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3900  return TRUE;
3901  }
3902 
3903  case PSM_RECALCPAGESIZES:
3904  {
3905  LRESULT msgResult = PROPSHEET_RecalcPageSizes(hwnd);
3906  SetWindowLongPtrW(hwnd, DWLP_MSGRESULT, msgResult);
3907  return TRUE;
3908  }
3909 
3910  default:
3911  return FALSE;
3912  }
3913 }
static LRESULT PROPSHEET_HwndToIndex(HWND hwndDlg, HWND hPageDlg)
Definition: propsheet.c:2595
static LRESULT PROPSHEET_Paint(HWND hwnd, HDC hdcParam)
Definition: propsheet.c:3283
#define TCM_GETCURSEL
Definition: commctrl.h:4034
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define PSH_USEHICON
Definition: prsht.h:41
#define WM_SYSCOLORCHANGE
Definition: winuser.h:1608
static HICON
Definition: imagelist.c:84
#define TRUE
Definition: types.h:120
#define INTRNL_ANY_WIZARD
Definition: propsheet.c:152
#define IDOK
Definition: winuser.h:824
#define IMAGE_ICON
Definition: winuser.h:212
static void PROPSHEET_SetFinishTextA(HWND hwndDlg, LPCSTR lpszText)
Definition: propsheet.c:2160
const WCHAR * LPCWSTR
Definition: xmlstorage.h:185
#define PSM_GETTABCONTROL
Definition: prsht.h:80
GLenum GLuint GLenum GLsizei const GLchar * buf
Definition: glext.h:7751
#define ID_PSREBOOTSYSTEM
Definition: prsht.h:133
#define SW_HIDE
Definition: winuser.h:762
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
static HDC
Definition: imagelist.c:92
#define PSWIZB_NEXT
Definition: prsht.h:154
#define PSM_REMOVEPAGE
Definition: prsht.h:166
static BOOL PROPSHEET_AddPage(HWND hwndDlg, HPROPSHEETPAGE hpage)
Definition: propsheet.c:2333
#define SM_CYSMICON
Definition: winuser.h:1003
#define TCM_SETCURSEL
Definition: commctrl.h:4037
HWND WINAPI SetFocus(_In_opt_ HWND)
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
static BOOL PROPSHEET_RecalcPageSizes(HWND hwndDlg)
Definition: propsheet.c:2700
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
static void PROPSHEET_SetHeaderTitleA(HWND hwndDlg, UINT page_index, const char *title)
Definition: propsheet.c:2545
int WINAPI LoadStringW(_In_opt_ HINSTANCE hInstance, _In_ UINT uID, _Out_writes_to_(cchBufferMax, return+1) LPWSTR lpBuffer, _In_ int cchBufferMax)
#define PSM_SETFINISHTEXTW
Definition: prsht.h:105
WPARAM wParam
Definition: combotst.c:138
#define DWLP_MSGRESULT
Definition: winuser.h:864
struct tagNMHDR * LPNMHDR
#define MAX_BUTTONTEXT_LENGTH
Definition: propsheet.c:150
#define WM_PRINTCLIENT
Definition: richedit.h:70
static BOOL PROPSHEET_IsDialogMessage(HWND hwnd, LPMSG lpMsg)
Definition: propsheet.c:3168
#define ID_PSRESTARTWINDOWS
Definition: prsht.h:132
#define PSM_ISDIALOGMESSAGE
Definition: prsht.h:96
static BOOL PROPSHEET_AdjustButtonsWizard(HWND hwndParent, const PropSheetInfo *psInfo)
Definition: propsheet.c:928
#define PSM_SETCURSEL
Definition: prsht.h:167
UINT code
Definition: winuser.h:3112
static void PROPSHEET_Changed(HWND hwndDlg, HWND hwndDirtyPage)
Definition: propsheet.c:1829
static void PROPSHEET_SetHeaderTitleW(HWND hwndDlg, UINT page_index, const WCHAR *title)
Definition: propsheet.c:2523
LPWSTR strPropertiesFor
Definition: propsheet.c:113
static BOOL PROPSHEET_CanSetCurSel(HWND hwndDlg)
Definition: propsheet.c:1934
#define PSH_USEICONID
Definition: prsht.h:42
static const WCHAR szText[]
Definition: dialog.c:139
LPCWSTR pszCaption
Definition: prsht.h:283
static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam)
Definition: propsheet.c:1764
unsigned int BOOL
Definition: ntddk_ex.h:94
HANDLE WINAPI LoadImageW(_In_opt_ HINSTANCE, _In_ LPCWSTR, _In_ UINT, _In_ int, _In_ int, _In_ UINT)
Definition: cursoricon.c:2172
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define PSM_SETWIZBUTTONS
Definition: prsht.h:157
PFNPROPSHEETCALLBACK pfnCallback
Definition: prsht.h:293
unsigned int idx
Definition: utils.c:41
static BOOL PROPSHEET_CreateTabControl(HWND hwndParent, const PropSheetInfo *psInfo)
Definition: propsheet.c:1137
static void PROPSHEET_SetCurSelId(HWND hwndDlg, int id)
Definition: propsheet.c:2097
smooth NULL
Definition: ftsmooth.c:416
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
LONG_PTR LPARAM
Definition: windef.h:208
#define PSM_SETCURSELID
Definition: prsht.h:104
static LRESULT PROPSHEET_IdToIndex(HWND hwndDlg, int iPageId)
Definition: propsheet.c:2654
GLuint index
Definition: glext.h:6031
static BOOL PROPSHEET_SizeMismatch(HWND hwndDlg, const PropSheetInfo *psInfo)
Definition: propsheet.c:692
const char * LPCSTR
Definition: xmlstorage.h:183
#define WM_DESTROY
Definition: winuser.h:1591
#define IDS_CLOSE
Definition: comctl32.h:53
#define PSM_REBOOTSYSTEM
Definition: prsht.h:162
BOOL WINAPI SystemParametersInfoW(_In_ UINT, _In_ UINT, _Inout_opt_ PVOID, _In_ UINT)
#define TCN_SELCHANGE
Definition: commctrl.h:4104
#define PSM_APPLY
Definition: prsht.h:158
static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags)
Definition: propsheet.c:2449
static void PROPSHEET_SetFinishTextW(HWND hwndDlg, LPCWSTR lpszText)
Definition: propsheet.c:2189
static VOID PROPSHEET_LoadWizardBitmaps(PropSheetInfo *psInfo)
Definition: propsheet.c:1484
#define TRACE(s)
Definition: solgame.cpp:4
#define IS_INTRESOURCE(i)
Definition: winuser.h:580
BOOL WINAPI SetPropW(_In_ HWND, _In_ LPCWSTR, _In_opt_ HANDLE)
static BOOL PROPSHEET_AdjustButtons(HWND hwndParent, const PropSheetInfo *psInfo)
Definition: propsheet.c:839
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define PSWIZB_BACK
Definition: prsht.h:153
#define PSM_CANCELTOCLOSE
Definition: prsht.h:161
HINSTANCE hInstance
Definition: prsht.h:278
#define WM_CLOSE
Definition: winuser.h:1603
PVOID Alloc(IN DWORD dwFlags, IN SIZE_T dwBytes)
Definition: main.c:63
LPCWSTR pszIcon
Definition: prsht.h:281
int WINAPI GetSystemMetrics(_In_ int)
#define PSM_GETRESULT
Definition: window.cpp:1319
unsigned long DWORD
Definition: ntddk_ex.h:95
static BOOL PROPSHEET_AdjustSizeWizard(HWND hwndDlg, const PropSheetInfo *psInfo)
Definition: propsheet.c:805
#define PSM_GETCURRENTPAGEHWND
Definition: prsht.h:81
unsigned __int3264 UINT_PTR
Definition: mstsclib_h.h:274
#define PSM_RESTARTWINDOWS
Definition: prsht.h:163
DWORD dwFlags
Definition: prsht.h:276
static BOOL PROPSHEET_SetCurSel(HWND hwndDlg, int index, int skipdir, HPROPSHEETPAGE hpage)
Definition: propsheet.c:1973
#define WM_PAINT
Definition: winuser.h:1602
#define SM_CXSMICON
Definition: winuser.h:1002
static BOOL PROPSHEET_InsertPage(HWND hwndDlg, HPROPSHEETPAGE hpageInsertAfter, HPROPSHEETPAGE hpage)
Definition: propsheet.c:2239
static LRESULT PROPSHEET_IndexToHwnd(HWND hwndDlg, int iPageIndex)
Definition: propsheet.c:2612
static BOOL PROPSHEET_AdjustSize(HWND hwndDlg, PropSheetInfo *psInfo)
Definition: propsheet.c:723
#define DWLP_USER
Definition: winuser.h:866
#define PSM_ADDPAGE
Definition: prsht.h:165
#define PSM_UNCHANGED
Definition: prsht.h:159
#define WM_COMMAND
Definition: winuser.h:1716
HWND hwndFrom
Definition: winuser.h:3110
uint32_t DWORD_PTR
Definition: typedefs.h:63
static void PROPSHEET_SetHeaderSubTitleA(HWND hwndDlg, UINT page_index, const char *subtitle)
Definition: propsheet.c:2581
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define MAX_CAPTION_LENGTH
Definition: propsheet.c:148
#define FW_BOLD
Definition: wingdi.h:377
#define PSCB_INITIALIZED
Definition: prsht.h:75
HMODULE COMCTL32_hModule
Definition: commctrl.c:79
#define IDC_TABCONTROL
Definition: comctl32.h:45
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
Definition: window.c:1378
#define PSM_SETTITLEW
Definition: prsht.h:169
static LRESULT PROPSHEET_GetResult(HWND hwndDlg)
Definition: propsheet.c:2691
HICON hIcon
Definition: msconfig.c:44
#define ARRAY_SIZE(a)
Definition: main.h:24
static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam)
Definition: propsheet.c:1698
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HPROPSHEETPAGE hpage
Definition: propsheet.c:99
static LRESULT PROPSHEET_IndexToId(HWND hwndDlg, int iPageIndex)
Definition: propsheet.c:2672
static LRESULT PROPSHEET_IndexToPage(HWND hwndDlg, int iPageIndex)
Definition: propsheet.c:2640
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define PSM_CHANGED
Definition: prsht.h:164
#define SPI_GETICONTITLELOGFONT
Definition: winuser.h:1362
static void PROPSHEET_SetTitleA(HWND hwndDlg, DWORD dwStyle, LPCSTR lpszText)
Definition: propsheet.c:2113
static void PROPSHEET_SetTitleW(HWND hwndDlg, DWORD dwStyle, LPCWSTR lpszText)
Definition: propsheet.c:2130
#define IDC_NEXT_BUTTON
Definition: comctl32.h:48
static BOOL PROPSHEET_RemovePage(HWND hwndDlg, int index, HPROPSHEETPAGE hpage)
Definition: propsheet.c:2343
#define PSM_QUERYSIBLINGS
Definition: prsht.h:160
static void PROPSHEET_CleanUp(HWND hwndDlg)
Definition: propsheet.c:2729
static BOOL PROPSHEET_DoCommand(HWND hwnd, WORD wID)
Definition: propsheet.c:3221
static LRESULT PROPSHEET_QuerySiblings(HWND hwndDlg, WPARAM wParam, LPARAM lParam)
Definition: propsheet.c:2218
PropPageInfo * proppage
Definition: propsheet.c:123
static void PROPSHEET_SetHeaderSubTitleW(HWND hwndDlg, UINT page_index, const WCHAR *subtitle)
Definition: propsheet.c:2559
static void PROPSHEET_PressButton(HWND hwndDlg, int buttonID)
Definition: propsheet.c:1889
static LRESULT PROPSHEET_PageToIndex(HWND hwndDlg, HPROPSHEETPAGE hPage)
Definition: propsheet.c:2628
#define SetWindowLongPtrW
Definition: winuser.h:5215
LONG lfWeight
Definition: dimm.idl:63
#define PSM_PRESSBUTTON
Definition: prsht.h:100
#define PSM_SETFINISHTEXTA
Definition: prsht.h:106
#define IDCANCEL
Definition: winuser.h:825
LONG_PTR LRESULT
Definition: windef.h:209
#define LR_DEFAULTCOLOR
Definition: winuser.h:1077
#define TCN_SELCHANGING
Definition: commctrl.h:4105
#define WM_INITDIALOG
Definition: winuser.h:1715
LPARAM lParam
Definition: combotst.c:139
#define LOWORD(l)
Definition: pedump.c:82
VOID COMCTL32_RefreshSysColors(void) DECLSPEC_HIDDEN
Definition: commctrl.c:1586
#define WM_NOTIFY
Definition: richedit.h:61
#define PSM_SETTITLEA
Definition: prsht.h:168
static void PROPSHEET_UnChanged(HWND hwndDlg, HWND hwndCleanPage)
Definition: propsheet.c:1859

Referenced by PROPSHEET_CreateDialog().

◆ PROPSHEET_DoCommand()

static BOOL PROPSHEET_DoCommand ( HWND  hwnd,
WORD  wID 
)
static

Definition at line 3221 of file propsheet.c.

3222 {
3223 
3224  switch (wID) {
3225 
3226  case IDOK:
3227  case IDC_APPLY_BUTTON:
3228  {
3229  HWND hwndApplyBtn = GetDlgItem(hwnd, IDC_APPLY_BUTTON);
3230 
3231  if (PROPSHEET_Apply(hwnd, wID == IDOK ? 1: 0) == FALSE)
3232  break;
3233 
3234  if (wID == IDOK)
3235  {
3237 
3238  /* don't overwrite ID_PSRESTARTWINDOWS or ID_PSREBOOTSYSTEM */
3239  if (psInfo->result == 0)
3240  psInfo->result = IDOK;
3241 
3242  if (psInfo->isModeless)
3243  psInfo->activeValid = FALSE;
3244  else
3245  psInfo->ended = TRUE;
3246  }
3247  else
3248  EnableWindow(hwndApplyBtn, FALSE);
3249 
3250  break;
3251  }
3252 
3253  case IDC_BACK_BUTTON:
3255  break;
3256 
3257  case IDC_NEXT_BUTTON:
3259  break;
3260 
3261  case IDC_FINISH_BUTTON:
3263  break;
3264 
3265  case IDCANCEL:
3266  PROPSHEET_Cancel(hwnd, 0);
3267  break;
3268 
3269  case IDHELP:
3271  break;
3272 
3273  default:
3274  return FALSE;
3275  }
3276 
3277  return TRUE;
3278 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
static void PROPSHEET_Help(HWND hwndDlg)
Definition: propsheet.c:1807
#define IDC_FINISH_BUTTON
Definition: comctl32.h:49
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
#define IDHELP
Definition: resource_2.h:8
static void PROPSHEET_Cancel(HWND hwndDlg, LPARAM lParam)
Definition: propsheet.c:1764
static BOOL PROPSHEET_Next(HWND hwndDlg)
Definition: propsheet.c:1617
static BOOL PROPSHEET_Back(HWND hwndDlg)
Definition: propsheet.c:1575
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDC_BACK_BUTTON
Definition: comctl32.h:47
BOOL WINAPI EnableWindow(_In_ HWND, _In_ BOOL)
#define IDC_APPLY_BUTTON
Definition: propsheet.c:39
static BOOL PROPSHEET_Apply(HWND hwndDlg, LPARAM lParam)
Definition: propsheet.c:1698
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
#define IDC_NEXT_BUTTON
Definition: comctl32.h:48
static BOOL PROPSHEET_Finish(HWND hwndDlg)
Definition: propsheet.c:1660
#define IDCANCEL
Definition: winuser.h:825

Referenced by PROPSHEET_DialogProc(), and PROPSHEET_PressButton().

◆ PROPSHEET_FindPageByResId()

static INT PROPSHEET_FindPageByResId ( const PropSheetInfo psInfo,
LRESULT  resId 
)
static

Definition at line 274 of file propsheet.c.

275 {
276  INT i;
277 
278  for (i = 0; i < psInfo->nPages; i++)
279  {
281 
282  /* Fixme: if resource ID is a string shall we use strcmp ??? */
283  if (lppsp->u.pszTemplate == (LPVOID)resId)
284  break;
285  }
286 
287  return i;
288 }
LPCSTR pszTemplate
Definition: prsht.h:181
int32_t INT
Definition: typedefs.h:56
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
if(!(yy_init))
Definition: macro.lex.yy.c:714
const PROPSHEETPAGEA * LPCPROPSHEETPAGEA
Definition: prsht.h:199
HPROPSHEETPAGE hpage
Definition: propsheet.c:99
PropPageInfo * proppage
Definition: propsheet.c:123

Referenced by PROPSHEET_Back(), PROPSHEET_Next(), PROPSHEET_SetCurSel(), and PROPSHEET_SetCurSelId().

◆ PROPSHEET_Finish()

static BOOL PROPSHEET_Finish ( HWND  hwndDlg)
static

Definition at line 1660 of file propsheet.c.

1661 {
1662  PSHNOTIFY psn;
1663  HWND hwndPage;
1664  LRESULT msgResult = 0;
1665  PropSheetInfo* psInfo = GetPropW(hwndDlg, PropSheetInfoStr);
1666 
1667  TRACE("active_page %d\n", psInfo->active_page);
1668  if (psInfo->active_page < 0)
1669  return FALSE;
1670 
1671  psn.hdr.code = PSN_WIZFINISH;
1672  psn.hdr.hwndFrom = hwndDlg;
1673  psn.hdr.idFrom = 0;
1674  psn.lParam = 0;
1675 
1676  hwndPage = psInfo->proppage[psInfo->active_page].hwndPage;
1677 
1678  msgResult = SendMessageW(hwndPage, WM_NOTIFY, 0, (LPARAM) &psn);
1679 
1680  TRACE("msg result %ld\n", msgResult);
1681 
1682  if (msgResult != 0)
1683  return FALSE;
1684 
1685  if (psInfo->result == 0)
1686  psInfo->result = IDOK;
1687  if (psInfo->isModeless)
1688  psInfo->activeValid = FALSE;
1689  else
1690  psInfo->ended = TRUE;
1691 
1692  return TRUE;
1693 }
#define TRUE
Definition: types.h:120
#define IDOK
Definition: winuser.h:824
static const WCHAR PropSheetInfoStr[]
Definition: propsheet.c:143
UINT code
Definition: winuser.h:3112
NMHDR hdr
Definition: prsht.h:312
#define PSN_WIZFINISH
Definition: prsht.h:122
UINT_PTR idFrom
Definition: winuser.h:3111
LONG_PTR LPARAM
Definition: windef.h:208
#define TRACE(s)
Definition: solgame.cpp:4
HWND hwndFrom
Definition: winuser.h:3110
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
HANDLE WINAPI GetPropW(_In_ HWND, _In_ LPCWSTR)
PropPageInfo * proppage
Definition: propsheet.c:123
LONG_PTR LRESULT
Definition: windef.h:209
LPARAM lParam
Definition: prsht.h:313
#define WM_NOTIFY
Definition: richedit.h:61

Referenced by PROPSHEET_DoCommand(), and PROPSHEET_PressButton().

◆ PROPSHEET_GetPaddingInfo()

static PADDING_INFO PROPSHEET_GetPaddingInfo ( HWND  hwndDlg)
static

Definition at line 1055 of file propsheet.c.

1056 {
1057  HWND hwndTab = GetDlgItem(hwndDlg, IDC_TABCONTROL);
1058  RECT rcTab;
1060 
1061  GetWindowRect(hwndTab, &rcTab);
1062  MapWindowPoints( 0, hwndDlg, (POINT *)&rcTab, 2 );
1063 
1064  padding.x = rcTab.left;
1065  padding.y = rcTab.top;
1066 
1067  return padding;
1068 }
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
LONG top
Definition: windef.h:292
LONG left
Definition: windef.h:291
unsigned int padding
Definition: isohybrid.c:50
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
#define IDC_TABCONTROL
Definition: comctl32.h:45
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)

Referenced by PROPSHEET_AdjustButtons(), and PROPSHEET_AdjustSize().

◆ PROPSHEET_GetPaddingInfoWizard()

static PADDING_INFO PROPSHEET_GetPaddingInfoWizard ( HWND  hwndDlg,
const PropSheetInfo psInfo 
)
static

Definition at line 1082 of file propsheet.c.

1084 {
1086  RECT rc;
1087  HWND hwndControl;
1088  INT idButton;
1089  POINT ptButton, ptLine;
1090 
1091  TRACE("\n");
1092  if (psInfo->hasHelp)
1093  {
1094  idButton = IDHELP;
1095  }
1096  else
1097  {
1098  if (psInfo->ppshheader.dwFlags & INTRNL_ANY_WIZARD)
1099  {
1100  idButton = IDC_NEXT_BUTTON;
1101  }
1102  else
1103  {
1104  /* hopefully this is ok */
1105  idButton = IDCANCEL;
1106  }
1107  }
1108 
1109  hwndControl = GetDlgItem(hwndDlg, idButton);
1110  GetWindowRect(hwndControl, &rc);
1111  MapWindowPoints( 0, hwndDlg, (POINT *)&rc, 2 );
1112  ptButton.x = rc.left;
1113  ptButton.y = rc.top;
1114 
1115  /* Line */
1116  hwndControl = GetDlgItem(hwndDlg, IDC_SUNKEN_LINE);
1117  GetWindowRect(hwndControl, &rc);
1118  MapWindowPoints( 0, hwndDlg, (POINT *)&rc, 2 );
1119  ptLine.x = rc.left;
1120  ptLine.y = rc.bottom;
1121 
1122  padding.y = ptButton.y - ptLine.y;
1123 
1124  if (padding.y < 0)
1125  ERR("padding negative ! Please report this !\n");
1126 
1127  /* this is most probably not correct, but the best we have now */
1128  padding.x = padding.y;
1129  return padding;
1130 }
#define INTRNL_ANY_WIZARD
Definition: propsheet.c:152
long y
Definition: polytest.cpp:48
int WINAPI MapWindowPoints(_In_opt_ HWND hWndFrom, _In_opt_ HWND hWndTo, _Inout_updates_(cPoints) LPPOINT lpPoints, _In_ UINT cPoints)
long x
Definition: polytest.cpp:48
#define IDC_SUNKEN_LINE
Definition: comctl32.h:50
PROPSHEETHEADERW ppshheader
Definition: propsheet.c:111
LONG top
Definition: windef.h:292
LONG left
Definition: windef.h:291
int32_t INT
Definition: typedefs.h:56
#define IDHELP
Definition: resource_2.h:8
#define TRACE(s)
Definition: solgame.cpp:4
unsigned int padding
Definition: isohybrid.c:50
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
DWORD dwFlags
Definition: prsht.h:276
#define ERR(fmt,...)
Definition: debug.h:109
#define IDC_NEXT_BUTTON
Definition: comctl32.h:48
LONG bottom
Definition: windef.h:294
BOOL WINAPI GetWindowRect(_In_ HWND, _Out_ LPRECT)
#define IDCANCEL
Definition: winuser.h:825

Referenced by PROPSHEET_AdjustButtonsWizard().

◆ PROPSHEET_GetPageIndex()

static int PROPSHEET_GetPageIndex ( HPROPSHEETPAGE  hpage,
const PropSheetInfo psInfo,