oleaut32: COM cleanup for the IPropertyPageSite iface.

This commit is contained in:
Michael Stefaniuc 2011-03-24 13:41:22 +01:00 committed by Alexandre Julliard
parent 5e2549d687
commit 269f5bbe81
1 changed files with 16 additions and 10 deletions

View File

@ -36,11 +36,16 @@
WINE_DEFAULT_DEBUG_CHANNEL(ole); WINE_DEFAULT_DEBUG_CHANNEL(ole);
typedef struct { typedef struct {
const IPropertyPageSiteVtbl *lpVtbl; IPropertyPageSite IPropertyPageSite_iface;
LCID lcid; LCID lcid;
LONG ref; LONG ref;
} PropertyPageSite; } PropertyPageSite;
static inline PropertyPageSite *impl_from_IPropertyPageSite(IPropertyPageSite *iface)
{
return CONTAINING_RECORD(iface, PropertyPageSite, IPropertyPageSite_iface);
}
static INT_PTR CALLBACK property_sheet_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) static INT_PTR CALLBACK property_sheet_proc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam)
{ {
IPropertyPage *property_page = (IPropertyPage*)GetWindowLongPtrW(hwnd, DWLP_USER); IPropertyPage *property_page = (IPropertyPage*)GetWindowLongPtrW(hwnd, DWLP_USER);
@ -86,7 +91,7 @@ static HRESULT WINAPI PropertyPageSite_QueryInterface(IPropertyPageSite* iface,
static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite* iface) static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite* iface)
{ {
PropertyPageSite *this = (PropertyPageSite*)iface; PropertyPageSite *this = impl_from_IPropertyPageSite(iface);
LONG ref = InterlockedIncrement(&this->ref); LONG ref = InterlockedIncrement(&this->ref);
TRACE("(%p) ref=%d\n", this, ref); TRACE("(%p) ref=%d\n", this, ref);
@ -95,7 +100,7 @@ static ULONG WINAPI PropertyPageSite_AddRef(IPropertyPageSite* iface)
static ULONG WINAPI PropertyPageSite_Release(IPropertyPageSite* iface) static ULONG WINAPI PropertyPageSite_Release(IPropertyPageSite* iface)
{ {
PropertyPageSite *this = (PropertyPageSite *)iface; PropertyPageSite *this = impl_from_IPropertyPageSite(iface);
LONG ref = InterlockedDecrement(&this->ref); LONG ref = InterlockedDecrement(&this->ref);
TRACE("(%p) ref=%d\n", this, ref); TRACE("(%p) ref=%d\n", this, ref);
@ -114,7 +119,7 @@ static HRESULT WINAPI PropertyPageSite_OnStatusChange(
static HRESULT WINAPI PropertyPageSite_GetLocaleID( static HRESULT WINAPI PropertyPageSite_GetLocaleID(
IPropertyPageSite *iface, LCID *pLocaleID) IPropertyPageSite *iface, LCID *pLocaleID)
{ {
PropertyPageSite *this = (PropertyPageSite *)iface; PropertyPageSite *this = impl_from_IPropertyPageSite(iface);
TRACE("(%p, %p)\n", iface, pLocaleID); TRACE("(%p, %p)\n", iface, pLocaleID);
*pLocaleID = this->lcid; *pLocaleID = this->lcid;
@ -161,7 +166,7 @@ HRESULT WINAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
WORD title; WORD title;
} *dialogs; } *dialogs;
IPropertyPage **property_page; IPropertyPage **property_page;
IPropertyPageSite *property_page_site; PropertyPageSite *property_page_site;
HRESULT res; HRESULT res;
int i; int i;
HMODULE hcomctl; HMODULE hcomctl;
@ -270,12 +275,13 @@ HRESULT WINAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams)
property_page_site = HeapAlloc(GetProcessHeap(), 0, sizeof(PropertyPageSite)); property_page_site = HeapAlloc(GetProcessHeap(), 0, sizeof(PropertyPageSite));
if(!property_page_site) if(!property_page_site)
continue; continue;
((PropertyPageSite*)property_page_site)->lpVtbl = &PropertyPageSiteVtbl; property_page_site->IPropertyPageSite_iface.lpVtbl = &PropertyPageSiteVtbl;
((PropertyPageSite*)property_page_site)->ref = 1; property_page_site->ref = 1;
((PropertyPageSite*)property_page_site)->lcid = lpParams->lcid; property_page_site->lcid = lpParams->lcid;
res = IPropertyPage_SetPageSite(property_page[i], property_page_site); res = IPropertyPage_SetPageSite(property_page[i],
IPropertyPageSite_Release(property_page_site); &property_page_site->IPropertyPageSite_iface);
IPropertyPageSite_Release(&property_page_site->IPropertyPageSite_iface);
if(FAILED(res)) if(FAILED(res))
continue; continue;