Module: wine Branch: master Commit: 6ecdc5bbeb7f1b5f1b60ddf57b18e73d0a9b2b3a URL: http://source.winehq.org/git/wine.git/?a=commit;h=6ecdc5bbeb7f1b5f1b60ddf57b...
Author: Andrey Turkin pancha@mail.nnov.ru Date: Sat Nov 11 00:03:32 2006 +0300
atl: AtlAxGetHost and AtlAxGetControl implementation.
---
dlls/atl/atl.spec | 4 ++-- dlls/atl/atl_ax.c | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+), 2 deletions(-)
diff --git a/dlls/atl/atl.spec b/dlls/atl/atl.spec index bfbaaec..6204c5d 100644 --- a/dlls/atl/atl.spec +++ b/dlls/atl/atl.spec @@ -38,8 +38,8 @@ 44 stdcall AtlModuleExtractCreateWndData(ptr) 45 stdcall AtlModuleRegisterWndClassInfoW(ptr ptr ptr) 46 stub AtlModuleRegisterWndClassInfoA -47 stub AtlAxGetControl -48 stub AtlAxGetHost +47 stdcall AtlAxGetControl(long ptr) +48 stdcall AtlAxGetHost(long ptr) 49 stub AtlRegisterClassCategoriesHelper 50 stub AtlIPersistStreamInit_Load 51 stub AtlIPersistStreamInit_Save diff --git a/dlls/atl/atl_ax.c b/dlls/atl/atl_ax.c index 2f7b1a3..7e6a348 100644 --- a/dlls/atl/atl_ax.c +++ b/dlls/atl/atl_ax.c @@ -1261,3 +1261,47 @@ HWND WINAPI AtlAxCreateDialogW(HINSTANCE FreeResource ( hrsrc ); return res; } + +/*********************************************************************** + * AtlAxGetHost [ATL.@] + * + */ +HRESULT WINAPI AtlAxGetHost(HWND hWnd, IUnknown **pUnk) +{ + IOCS *This; + + TRACE( "(%p, %p)\n", hWnd, pUnk ); + + *pUnk = NULL; + + This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA ); + if ( !This ) + { + WARN("No container attached to %p\n", hWnd ); + return E_FAIL; + } + + return IOCS_QueryInterface( This, &IID_IUnknown, (void**) pUnk ); +} + +/*********************************************************************** + * AtlAxGetControl [ATL.@] + * + */ +HRESULT WINAPI AtlAxGetControl(HWND hWnd, IUnknown **pUnk) +{ + IOCS *This; + + TRACE( "(%p, %p)\n", hWnd, pUnk ); + + *pUnk = NULL; + + This = (IOCS*) GetWindowLongPtrW( hWnd, GWLP_USERDATA ); + if ( !This || !This->control ) + { + WARN("No control attached to %p\n", hWnd ); + return E_FAIL; + } + + return IOleObject_QueryInterface( This->control, &IID_IUnknown, (void**) pUnk ); +}