From 143fc51455817c46cfe612b2d4751a4e07f83c21 Mon Sep 17 00:00:00 2001 From: Thuy Nguyen Date: Sat, 4 Sep 1999 11:09:20 +0000 Subject: [PATCH] Give applications a copy of the property sheet dialog template as they might modify it. --- dlls/comctl32/propsheet.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/dlls/comctl32/propsheet.c b/dlls/comctl32/propsheet.c index d9ad359dca..bd47aaa7de 100644 --- a/dlls/comctl32/propsheet.c +++ b/dlls/comctl32/propsheet.c @@ -314,7 +314,9 @@ BOOL PROPSHEET_CreateDialog(PropSheetInfo* psInfo) { LRESULT ret; LPCVOID template; + LPVOID temp = 0; HRSRC hRes; + DWORD resSize; if(!(hRes = FindResourceA(COMCTL32_hModule, MAKEINTRESOURCEA(IDD_PROPSHEET), @@ -324,22 +326,36 @@ BOOL PROPSHEET_CreateDialog(PropSheetInfo* psInfo) if(!(template = (LPVOID)LoadResource(COMCTL32_hModule, hRes))) return FALSE; + /* + * Make a copy of the dialog template. + */ + resSize = SizeofResource(COMCTL32_hModule, hRes); + + temp = COMCTL32_Alloc(resSize); + + if (!temp) + return FALSE; + + memcpy(temp, template, resSize); + if (psInfo->useCallback) - (*(psInfo->ppshheader->pfnCallback))(0, PSCB_PRECREATE, (LPARAM)template); + (*(psInfo->ppshheader->pfnCallback))(0, PSCB_PRECREATE, (LPARAM)temp); if (psInfo->ppshheader->dwFlags & PSH_MODELESS) ret = CreateDialogIndirectParamA(psInfo->ppshheader->hInstance, - (LPDLGTEMPLATEA) template, + (LPDLGTEMPLATEA) temp, psInfo->ppshheader->hwndParent, (DLGPROC) PROPSHEET_DialogProc, (LPARAM)psInfo); else ret = DialogBoxIndirectParamA(psInfo->ppshheader->hInstance, - (LPDLGTEMPLATEA) template, + (LPDLGTEMPLATEA) temp, psInfo->ppshheader->hwndParent, (DLGPROC) PROPSHEET_DialogProc, (LPARAM)psInfo); + COMCTL32_Free(temp); + return ret; } -- 2.32.0.93.g670b81a890