ReactOS  0.4.13-dev-247-g0f29b3f
olepropframe.c
Go to the documentation of this file.
1 /*
2  * Copyright 1999 Corel Corporation
3  * Sean Langley
4  * Copyright 2010 Geoffrey Hausheer
5  * Copyright 2010 Piotr Caban for CodeWeavers
6  *
7  * This library is free software; you can redistribute it and/or
8  * modify it under the terms of the GNU Lesser General Public
9  * License as published by the Free Software Foundation; either
10  * version 2.1 of the License, or (at your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
20  */
21 
22 #include <stdarg.h>
23 
24 #define COBJMACROS
25 #define NONAMELESSUNION
26 
27 #include "windef.h"
28 #include "winbase.h"
29 #include "wingdi.h"
30 #include "ole2.h"
31 #include "olectl.h"
32 #include "oledlg.h"
33 #include "wine/debug.h"
34 
36 
37 typedef struct {
42 
44 {
45  return CONTAINING_RECORD(iface, PropertyPageSite, IPropertyPageSite_iface);
46 }
47 
49 {
51 
52  switch(msg) {
53  case WM_INITDIALOG: {
54  RECT rect;
55 
56  property_page = (IPropertyPage*)((LPPROPSHEETPAGEW)lparam)->lParam;
57 
59  IPropertyPage_Activate(property_page, hwnd, &rect, TRUE);
60  IPropertyPage_Show(property_page, SW_SHOW);
61 
62  SetWindowLongPtrW(hwnd, DWLP_USER, (LONG_PTR)property_page);
63  return FALSE;
64  }
65  case WM_DESTROY:
66  IPropertyPage_Show(property_page, SW_HIDE);
67  IPropertyPage_Deactivate(property_page);
68  return FALSE;
69  default:
70  return FALSE;
71  }
72 }
73 
75  REFIID riid, void** ppv)
76 {
77  TRACE("(%p riid: %s)\n",iface, debugstr_guid(riid));
78 
81  *ppv = iface;
82  else {
83  *ppv = NULL;
84  return E_NOINTERFACE;
85  }
86 
87  IUnknown_AddRef((IUnknown*)*ppv);
88  return S_OK;
89 }
90 
92 {
94  LONG ref = InterlockedIncrement(&this->ref);
95 
96  TRACE("(%p) ref=%d\n", this, ref);
97  return ref;
98 }
99 
101 {
103  LONG ref = InterlockedDecrement(&this->ref);
104 
105  TRACE("(%p) ref=%d\n", this, ref);
106  if(!ref)
107  HeapFree(GetProcessHeap(), 0, this);
108  return ref;
109 }
110 
113 {
114  TRACE("(%p, %x)\n", iface, dwFlags);
115  return S_OK;
116 }
117 
119  IPropertyPageSite *iface, LCID *pLocaleID)
120 {
122 
123  TRACE("(%p, %p)\n", iface, pLocaleID);
124  *pLocaleID = this->lcid;
125  return S_OK;
126 }
127 
129  IPropertyPageSite* iface, IUnknown** ppUnk)
130 {
131  FIXME("(%p, %p)\n", iface, ppUnk);
132  return E_NOTIMPL;
133 }
134 
136  IPropertyPageSite* iface, MSG *pMsg)
137 {
138  FIXME("(%p, %p)\n", iface, pMsg);
139  return E_NOTIMPL;
140 }
141 
142 static IPropertyPageSiteVtbl PropertyPageSiteVtbl = {
150 };
151 
152 /***********************************************************************
153  * OleCreatePropertyFrameIndirect (OLEAUT32.416)
154  */
156 {
157  static const WCHAR comctlW[] = { 'c','o','m','c','t','l','3','2','.','d','l','l',0 };
158 
159  PROPSHEETHEADERW property_sheet;
160  PROPSHEETPAGEW property_sheet_page;
161  struct {
162  DLGTEMPLATE template;
163  WORD menu;
164  WORD class;
165  WORD title;
166  } *dialogs;
167  IPropertyPage **property_page;
168  PropertyPageSite *property_page_site;
169  HRESULT res;
170  ULONG i;
171  HMODULE hcomctl;
172  HRSRC property_sheet_dialog_find = NULL;
173  HGLOBAL property_sheet_dialog_load = NULL;
174  WCHAR *property_sheet_dialog_data = NULL;
175  HDC hdc;
176  LOGFONTW font_desc;
177  HFONT hfont;
178  LONG font_width = 4, font_height = 8;
179 
180  if(!lpParams)
181  return E_POINTER;
182 
183  TRACE("(%d %p %d %d %s %d %p %d %p %d %d)\n", lpParams->cbStructSize,
184  lpParams->hWndOwner, lpParams->x, lpParams->y,
185  debugstr_w(lpParams->lpszCaption), lpParams->cObjects,
186  lpParams->lplpUnk, lpParams->cPages, lpParams->lpPages,
187  lpParams->lcid, lpParams->dispidInitialProperty);
188 
189  if(!lpParams->lpPages)
190  return E_POINTER;
191 
192  if(lpParams->cbStructSize != sizeof(OCPFIPARAMS)) {
193  WARN("incorrect structure size\n");
194  return E_INVALIDARG;
195  }
196 
197  if(lpParams->dispidInitialProperty)
198  FIXME("dispidInitialProperty not yet implemented\n");
199 
200  hdc = GetDC(NULL);
201  hcomctl = LoadLibraryW(comctlW);
202  if(hcomctl)
203  property_sheet_dialog_find = FindResourceW(hcomctl,
204  MAKEINTRESOURCEW(1006 /*IDD_PROPSHEET*/), (LPWSTR)RT_DIALOG);
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");
213  FreeLibrary(hcomctl);
214  return E_OUTOFMEMORY;
215  }
216 
217  property_sheet_dialog_data += sizeof(DLGTEMPLATE)/sizeof(WCHAR);
218  /* Skip menu, class and title */
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 
223  memset(&font_desc, 0, sizeof(LOGFONTW));
224  /* Calculate logical height */
225  font_desc.lfHeight = -MulDiv(property_sheet_dialog_data[0],
227  font_desc.lfCharSet = DEFAULT_CHARSET;
228  memcpy(font_desc.lfFaceName, property_sheet_dialog_data+1,
229  sizeof(WCHAR)*(lstrlenW(property_sheet_dialog_data+1)+1));
230  hfont = CreateFontIndirectW(&font_desc);
231 
232  if(hfont) {
234  font_width = GdiGetCharDimensions(hdc, NULL, &font_height);
236  }
237  }
238  if(hcomctl)
239  FreeLibrary(hcomctl);
240  ReleaseDC(NULL, hdc);
241 
242  memset(&property_sheet, 0, sizeof(property_sheet));
243  property_sheet.dwSize = sizeof(property_sheet);
244  if(lpParams->lpszCaption) {
245  property_sheet.dwFlags = PSH_PROPTITLE;
246  property_sheet.pszCaption = lpParams->lpszCaption;
247  }
248 
249  property_sheet.u3.phpage = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
250  lpParams->cPages*sizeof(HPROPSHEETPAGE));
251  property_page = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
252  lpParams->cPages*sizeof(IPropertyPage*));
254  lpParams->cPages*sizeof(*dialogs));
255  if(!property_sheet.u3.phpage || !property_page || !dialogs) {
256  HeapFree(GetProcessHeap(), 0, property_sheet.u3.phpage);
257  HeapFree(GetProcessHeap(), 0, property_page);
258  HeapFree(GetProcessHeap(), 0, dialogs);
259  return E_OUTOFMEMORY;
260  }
261 
262  memset(&property_sheet_page, 0, sizeof(PROPSHEETPAGEW));
263  property_sheet_page.dwSize = sizeof(PROPSHEETPAGEW);
264  property_sheet_page.dwFlags = PSP_DLGINDIRECT|PSP_USETITLE;
265  property_sheet_page.pfnDlgProc = property_sheet_proc;
266 
267  for(i=0; i<lpParams->cPages; i++) {
268  PROPPAGEINFO page_info;
269 
270  res = CoCreateInstance(&lpParams->lpPages[i], NULL, CLSCTX_INPROC_SERVER,
271  &IID_IPropertyPage, (void**)&property_page[i]);
272  if(FAILED(res))
273  continue;
274 
275  property_page_site = HeapAlloc(GetProcessHeap(), 0, sizeof(PropertyPageSite));
276  if(!property_page_site)
277  continue;
278  property_page_site->IPropertyPageSite_iface.lpVtbl = &PropertyPageSiteVtbl;
279  property_page_site->ref = 1;
280  property_page_site->lcid = lpParams->lcid;
281 
282  res = IPropertyPage_SetPageSite(property_page[i],
283  &property_page_site->IPropertyPageSite_iface);
284  IPropertyPageSite_Release(&property_page_site->IPropertyPageSite_iface);
285  if(FAILED(res))
286  continue;
287 
288  res = IPropertyPage_SetObjects(property_page[i],
289  lpParams->cObjects, lpParams->lplpUnk);
290  if(FAILED(res))
291  WARN("SetObjects() failed, hr %#x.\n", res);
292 
293  res = IPropertyPage_GetPageInfo(property_page[i], &page_info);
294  if(FAILED(res))
295  continue;
296 
297  dialogs[i].template.cx = MulDiv(page_info.size.cx, 4, font_width);
298  dialogs[i].template.cy = MulDiv(page_info.size.cy, 8, font_height);
299 
300  property_sheet_page.u.pResource = &dialogs[i].template;
301  property_sheet_page.lParam = (LPARAM)property_page[i];
302  property_sheet_page.pszTitle = page_info.pszTitle;
303 
304  property_sheet.u3.phpage[property_sheet.nPages++] =
305  CreatePropertySheetPageW(&property_sheet_page);
306  }
307 
308  PropertySheetW(&property_sheet);
309 
310  for(i=0; i<lpParams->cPages; i++) {
311  if(property_page[i])
312  IPropertyPage_Release(property_page[i]);
313  }
314 
315  HeapFree(GetProcessHeap(), 0, dialogs);
316  HeapFree(GetProcessHeap(), 0, property_page);
317  HeapFree(GetProcessHeap(), 0, property_sheet.u3.phpage);
318  return S_OK;
319 }
320 
321 /***********************************************************************
322  * OleCreatePropertyFrame (OLEAUT32.417)
323  */
325  HWND hwndOwner, UINT x, UINT y, LPCOLESTR lpszCaption, ULONG cObjects,
326  LPUNKNOWN* ppUnk, ULONG cPages, LPCLSID pPageClsID, LCID lcid,
328 {
329  OCPFIPARAMS ocpf;
330 
331  ocpf.cbStructSize = sizeof(OCPFIPARAMS);
332  ocpf.hWndOwner = hwndOwner;
333  ocpf.x = x;
334  ocpf.y = y;
335  ocpf.lpszCaption = lpszCaption;
336  ocpf.cObjects = cObjects;
337  ocpf.lplpUnk = ppUnk;
338  ocpf.cPages = cPages;
339  ocpf.lpPages = pPageClsID;
340  ocpf.lcid = lcid;
341  ocpf.dispidInitialProperty = 0;
342 
343  return OleCreatePropertyFrameIndirect(&ocpf);
344 }
const DOCKBAR PVOID HWND HWND * hwnd
Definition: tooldock.h:22
CLSID * lpPages
Definition: olectl.h:110
#define REFIID
Definition: guiddef.h:113
#define TRUE
Definition: types.h:120
#define E_NOINTERFACE
Definition: winerror.h:2364
HDC WINAPI GetDC(_In_opt_ HWND)
#define SW_HIDE
Definition: winuser.h:762
REFIID riid
Definition: precomp.h:44
TW_UINT32 TW_UINT16 TW_UINT16 MSG
Definition: twain.h:1827
#define WARN(fmt,...)
Definition: debug.h:111
LONG lfHeight
Definition: dimm.idl:59
BYTE lfCharSet
Definition: dimm.idl:67
LPCDLGTEMPLATE pResource
Definition: prsht.h:210
static HDC
Definition: imagelist.c:92
#define CALLBACK
Definition: compat.h:27
REFIID LPVOID * ppv
Definition: atlbase.h:39
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
Definition: dc.c:1497
struct tagOCPFIPARAMS OCPFIPARAMS
LPVOID WINAPI LockResource(HGLOBAL handle)
Definition: res.c:550
GLint GLint GLint GLint GLint x
Definition: gl.h:1548
DWORD LCID
Definition: nls.h:13
UINT_PTR WPARAM
Definition: windef.h:207
#define GetWindowLongPtrW
Definition: winuser.h:4698
int32_t INT_PTR
Definition: typedefs.h:62
#define DEFAULT_CHARSET
Definition: wingdi.h:383
#define lstrlenW
Definition: compat.h:407
Definition: send.c:47
& rect
Definition: startmenu.cpp:1413
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
DWORD dwSize
Definition: prsht.h:205
#define E_OUTOFMEMORY
Definition: ddrawi.h:100
LPCWSTR pszCaption
Definition: prsht.h:283
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
Definition: mswsock.h:90
DLGPROC pfnDlgProc
Definition: prsht.h:217
long LONG
Definition: pedump.c:60
static LPUNKNOWN
Definition: ndr_ole.c:49
WINE_DEFAULT_DEBUG_CHANNEL(ole)
static UINT WPARAM LPARAM lparam
Definition: combo.c:716
struct _PSP * HPROPSHEETPAGE
Definition: mstask.idl:90
#define debugstr_w
Definition: kernel32.h:32
GLenum GLint ref
Definition: glext.h:6028
int WINAPI ReleaseDC(_In_opt_ HWND, _In_ HDC)
#define FIXME(fmt,...)
Definition: debug.h:110
ULONG cObjects
Definition: olectl.h:107
HGLOBAL WINAPI LoadResource(HINSTANCE hModule, HRSRC hRsrc)
Definition: res.c:532
#define E_INVALIDARG
Definition: ddrawi.h:101
struct _PROPSHEETPAGEW PROPSHEETPAGEW
#define LoadLibraryW(x)
Definition: compat.h:404
smooth NULL
Definition: ftsmooth.c:416
HFONT WINAPI CreateFontIndirectW(_In_ const LOGFONTW *)
LONG_PTR LPARAM
Definition: windef.h:208
INT_PTR WINAPI PropertySheetW(LPCPROPSHEETHEADERW lppsh)
Definition: propsheet.c:2896
LPCWSTR pszTitle
Definition: prsht.h:216
#define SW_SHOW
Definition: winuser.h:769
#define debugstr_guid
Definition: kernel32.h:35
PFLT_MESSAGE_WAITER_QUEUE CONTAINING_RECORD(Csq, DEVICE_EXTENSION, IrpQueue)) -> WaiterQ.mLock) _IRQL_raises_(DISPATCH_LEVEL) VOID NTAPI FltpAcquireMessageWaiterLock(_In_ PIO_CSQ Csq, _Out_ PKIRQL Irql)
Definition: Messaging.c:560
static HFONT hfont
#define WM_DESTROY
Definition: winuser.h:1591
#define RT_DIALOG
Definition: pedump.c:367
HPROPSHEETPAGE WINAPI CreatePropertySheetPageW(LPCPROPSHEETPAGEW lpPropSheetPage)
Definition: propsheet.c:3066
const GUID IID_IPropertyPage
static INT_PTR CALLBACK property_sheet_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
Definition: olepropframe.c:48
HRESULT WINAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
Definition: olepropframe.c:155
static HRESULT WINAPI PropertyPageSite_GetPageContainer(IPropertyPageSite *iface, IUnknown **ppUnk)
Definition: olepropframe.c:128
#define TRACE(s)
Definition: solgame.cpp:4
#define FreeLibrary(x)
Definition: compat.h:405
#define GetProcessHeap()
Definition: compat.h:395
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
__wchar_t WCHAR
Definition: xmlstorage.h:180
#define PSH_PROPTITLE
Definition: prsht.h:40
LONG HRESULT
Definition: typedefs.h:77
DISPID dispidInitialProperty
Definition: olectl.h:112
static LPCSTR DWORD void * pvReserved
Definition: str.c:196
const GUID IID_IUnknown
#define WINAPI
Definition: msvc.h:8
unsigned short WORD
Definition: ntddk_ex.h:93
unsigned long DWORD
Definition: ntddk_ex.h:95
DWORD dwSize
Definition: prsht.h:275
DWORD dwFlags
Definition: prsht.h:276
#define InterlockedDecrement
Definition: armddk.h:52
HDC hdc
Definition: main.c:9
LPARAM lParam
Definition: prsht.h:218
static IPropertyPageSiteVtbl PropertyPageSiteVtbl
Definition: olepropframe.c:142
#define DWLP_USER
Definition: winuser.h:866
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
Definition: wincrypt.h:1175
int WINAPI GetDeviceCaps(_In_opt_ HDC, _In_ int)
#define memcpy(s1, s2, n)
Definition: mkisofs.h:878
static int font_height(HFONT hFont)
Definition: combo.c:612
LPCOLESTR lpszCaption
Definition: olectl.h:106
static HRESULT WINAPI PropertyPageSite_GetLocaleID(IPropertyPageSite *iface, LCID *pLocaleID)
Definition: olepropframe.c:118
#define PSP_USETITLE
Definition: prsht.h:26
static HRESULT WINAPI PropertyPageSite_OnStatusChange(IPropertyPageSite *iface, DWORD dwFlags)
Definition: olepropframe.c:111
static PropertyPageSite * impl_from_IPropertyPageSite(IPropertyPageSite *iface)
Definition: olepropframe.c:43
static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite *iface)
Definition: olepropframe.c:91
HPROPSHEETPAGE * phpage
Definition: prsht.h:291
HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, LPUNKNOWN pUnkOuter, DWORD dwClsContext, REFIID iid, LPVOID *ppv)
Definition: compobj.c:3234
#define ERR(fmt,...)
Definition: debug.h:109
BOOL WINAPI GetClientRect(_In_ HWND, _Out_ LPRECT)
LPUNKNOWN * lplpUnk
Definition: olectl.h:108
#define S_OK
Definition: intsafe.h:59
HRESULT WINAPI OleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y, LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN *ppUnk, ULONG cPages, LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved)
Definition: olepropframe.c:324
LONG WINAPI GdiGetCharDimensions(HDC, LPTEXTMETRICW, LONG *)
Definition: font.c:2145
#define InterlockedIncrement
Definition: armddk.h:53
static HRESULT WINAPI PropertyPageSite_QueryInterface(IPropertyPageSite *iface, REFIID riid, void **ppv)
Definition: olepropframe.c:74
HWND hWndOwner
Definition: olectl.h:103
const GUID IID_IPropertyPageSite
#define E_NOTIMPL
Definition: ddrawi.h:99
static HRESULT WINAPI PropertyPageSite_TranslateAccelerator(IPropertyPageSite *iface, MSG *pMsg)
Definition: olepropframe.c:135
__int3264 LONG_PTR
Definition: mstsclib_h.h:276
unsigned int UINT
Definition: ndis.h:50
BOOL WINAPI IsEqualGUID(REFGUID rguid1, REFGUID rguid2)
Definition: compobj.c:4021
#define HEAP_ZERO_MEMORY
Definition: compat.h:123
GLint GLint GLint GLint GLint GLint y
Definition: gl.h:1548
IPropertyPageSite IPropertyPageSite_iface
Definition: olepropframe.c:38
static DWORD *static HFONT(WINAPI *pCreateFontIndirectExA)(const ENUMLOGFONTEXDVA *)
#define msg(x)
Definition: auth_time.c:54
GLuint res
Definition: glext.h:9613
WCHAR lfFaceName[LF_FACESIZE]
Definition: dimm.idl:72
unsigned int ULONG
Definition: retypes.h:1
static ULONG WINAPI PropertyPageSite_Release(IPropertyPageSite *iface)
Definition: olepropframe.c:100
#define LOGPIXELSY
Definition: wingdi.h:718
#define SetWindowLongPtrW
Definition: winuser.h:5215
#define MAKEINTRESOURCEW(i)
Definition: winuser.h:582
WCHAR * LPWSTR
Definition: xmlstorage.h:184
ULONG cbStructSize
Definition: olectl.h:102
#define E_POINTER
Definition: winerror.h:2365
ULONG cPages
Definition: olectl.h:109
#define memset(x, y, z)
Definition: compat.h:39
#define WM_INITDIALOG
Definition: winuser.h:1715
LPARAM lParam
Definition: combotst.c:139
static char title[]
Definition: ps.c:92
DWORD dwFlags
Definition: prsht.h:206
#define HeapFree(x, y, z)
Definition: compat.h:394
#define MulDiv(x, y, z)
Definition: gdifloat.h:86
static UINT WPARAM wparam
Definition: combo.c:716
#define PSP_DLGINDIRECT
Definition: prsht.h:23