156{
157 static const WCHAR comctlW[] = {
'c',
'o',
'm',
'c',
't',
'l',
'3',
'2',
'.',
'd',
'l',
'l',0 };
158
161 struct {
166 } *dialogs;
172 HRSRC property_sheet_dialog_find =
NULL;
174 WCHAR *property_sheet_dialog_data =
NULL;
179
180 if(!lpParams)
182
188
191
193 WARN(
"incorrect structure size\n");
195 }
196
198 FIXME(
"dispidInitialProperty not yet implemented\n");
199
202 if(hcomctl)
205 if(property_sheet_dialog_find)
206 property_sheet_dialog_load =
LoadResource(hcomctl, property_sheet_dialog_find);
207 if(property_sheet_dialog_load)
208 property_sheet_dialog_data =
LockResource(property_sheet_dialog_load);
209
210 if(property_sheet_dialog_data) {
211 if(property_sheet_dialog_data[1] == 0xffff) {
212 ERR(
"Expected DLGTEMPLATE structure\n");
215 }
216
218
219 property_sheet_dialog_data +=
lstrlenW(property_sheet_dialog_data)+1;
220 property_sheet_dialog_data +=
lstrlenW(property_sheet_dialog_data)+1;
221 property_sheet_dialog_data +=
lstrlenW(property_sheet_dialog_data)+1;
222
224
231
236 }
237 }
238 if(hcomctl)
241
242 memset(&property_sheet, 0,
sizeof(property_sheet));
243 property_sheet.
dwSize =
sizeof(property_sheet);
247 }
248
254 lpParams->
cPages*
sizeof(*dialogs));
255 if(!property_sheet.u3.
phpage || !property_page || !dialogs) {
260 }
261
266
268 PROPPAGEINFO page_info;
269
273 continue;
274
276 if(!property_page_site)
277 continue;
279 property_page_site->
ref = 1;
280 property_page_site->
lcid = lpParams->
lcid;
281
282 res = IPropertyPage_SetPageSite(property_page[
i],
286 continue;
287
288 res = IPropertyPage_SetObjects(property_page[
i],
291 WARN(
"SetObjects() failed, hr %#x.\n",
res);
292
293 res = IPropertyPage_GetPageInfo(property_page[
i], &page_info);
295 continue;
296
297 dialogs[
i].template.cx =
MulDiv(page_info.size.cx, 4, font_width);
299
300 property_sheet_page.u.
pResource = &dialogs[
i].template;
302 property_sheet_page.
pszTitle = page_info.pszTitle;
303
306 }
307
309
312 IPropertyPage_Release(property_page[
i]);
313 }
314
319}
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)
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
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)
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
static int font_height(HFONT hFont)
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)