154{
157 struct {
162 } *dialogs;
168 HRSRC property_sheet_dialog_find =
NULL;
170 WCHAR *property_sheet_dialog_data =
NULL;
174 LONG font_width = 4, font_height = 8;
175
176 if(!lpParams)
178
179 TRACE(
"%ld, %p, %d, %d, %s, %ld, %p, %ld, %p, %ld, %ld.\n", lpParams->
cbStructSize,
184
187
189 WARN(
"incorrect structure size\n");
191 }
192
194 FIXME(
"dispidInitialProperty not yet implemented\n");
195
198 if(hcomctl)
201 if(property_sheet_dialog_find)
202 property_sheet_dialog_load =
LoadResource(hcomctl, property_sheet_dialog_find);
203 if(property_sheet_dialog_load)
204 property_sheet_dialog_data =
LockResource(property_sheet_dialog_load);
205
206 if(property_sheet_dialog_data) {
207 if(property_sheet_dialog_data[1] == 0xffff) {
208 ERR(
"Expected DLGTEMPLATE structure\n");
211 }
212
214
215 property_sheet_dialog_data +=
lstrlenW(property_sheet_dialog_data)+1;
216 property_sheet_dialog_data +=
lstrlenW(property_sheet_dialog_data)+1;
217 property_sheet_dialog_data +=
lstrlenW(property_sheet_dialog_data)+1;
218
220
227
232 }
233 }
234 if(hcomctl)
237
238 memset(&property_sheet, 0,
sizeof(property_sheet));
239 property_sheet.
dwSize =
sizeof(property_sheet);
243 }
244
250 lpParams->
cPages*
sizeof(*dialogs));
251 if(!property_sheet.
phpage || !property_page || !dialogs) {
256 }
257
262
264 PROPPAGEINFO page_info;
265
269 continue;
270
272 if(!property_page_site)
273 continue;
275 property_page_site->
ref = 1;
276 property_page_site->
lcid = lpParams->
lcid;
277
278 res = IPropertyPage_SetPageSite(property_page[
i],
282 continue;
283
284 res = IPropertyPage_SetObjects(property_page[
i],
287 WARN(
"SetObjects() failed, hr %#lx.\n",
res);
288
289 res = IPropertyPage_GetPageInfo(property_page[
i], &page_info);
291 continue;
292
293 dialogs[
i].template.cx =
MulDiv(page_info.size.cx, 4, font_width);
294 dialogs[
i].template.cy =
MulDiv(page_info.size.cy, 8, font_height);
295
296 property_sheet_page.
pResource = &dialogs[
i].template;
298 property_sheet_page.
pszTitle = page_info.pszTitle;
299
302 }
303
305
308 IPropertyPage_Release(property_page[
i]);
309 }
310
315}
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context, REFIID riid, void **obj)
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
#define HeapFree(x, y, z)
HRSRC WINAPI FindResourceW(HINSTANCE hModule, LPCWSTR name, LPCWSTR type)
LPVOID WINAPI LockResource(HGLOBAL handle)
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
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
#define memcpy(s1, s2, n)
struct _PSP * HPROPSHEETPAGE
INT WINAPI MulDiv(INT nNumber, INT nNumerator, INT nDenominator)
const GUID IID_IPropertyPage
static INT_PTR CALLBACK property_sheet_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
static IPropertyPageSiteVtbl PropertyPageSiteVtbl
struct _PROPSHEETPAGEW PROPSHEETPAGEW
WCHAR lfFaceName[LF_FACESIZE]
IPropertyPageSite IPropertyPageSite_iface
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *)
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
HDC WINAPI GetDC(_In_opt_ HWND)
#define MAKEINTRESOURCEW(i)