Changeset 6711 for trunk/src/ole32/defaulthandler.c
- Timestamp:
- Sep 15, 2001, 11:32:00 AM (24 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/ole32/defaulthandler.c
r6648 r6711 1 /* $Id: defaulthandler.c,v 1.2 2001-09-05 13:17:08 bird Exp $ */2 1 /* 3 * 2 * OLE 2 default object handler 4 3 * 5 4 * Copyright 1999 Francis Beaudet … … 26 25 * done in this area. 27 26 * 28 * - Some functions still return E_NOTIMPL they have to be 27 * - Some functions still return E_NOTIMPL they have to be 29 28 * implemented. Most of those are related to the running of the 30 29 * actual server. … … 54 53 * List all interface VTables here 55 54 */ 56 ICOM_VTABLE(IOleObject)* lpvtbl1; 55 ICOM_VTABLE(IOleObject)* lpvtbl1; 57 56 ICOM_VTABLE(IUnknown)* lpvtbl2; 58 57 ICOM_VTABLE(IDataObject)* lpvtbl3; … … 91 90 92 91 /* 93 * The IDataAdviseHolder maintains the data 92 * The IDataAdviseHolder maintains the data 94 93 * connections on behalf of the default handler. 95 94 */ … … 99 98 * Name of the container and object contained 100 99 */ 101 LPWSTR containerApp; 100 LPWSTR containerApp; 102 101 LPWSTR containerObj; 103 102 … … 107 106 108 107 /* 109 * Here, I define utility macros to help with the casting of the 108 * Here, I define utility macros to help with the casting of the 110 109 * "this" parameter. 111 110 * There is a version to accomodate all of the VTables implemented … … 113 112 */ 114 113 #define _ICOM_THIS_From_IOleObject(class,name) class* this = (class*)name; 115 #define _ICOM_THIS_From_NDIUnknown(class, name) class* this = (class*)(((char*)name)-sizeof(void*)); 116 #define _ICOM_THIS_From_IDataObject(class, name) class* this = (class*)(((char*)name)-2*sizeof(void*)); 117 #define _ICOM_THIS_From_IRunnableObject(class, name) class* this = (class*)(((char*)name)-3*sizeof(void*)); 114 #define _ICOM_THIS_From_NDIUnknown(class, name) class* this = (class*)(((char*)name)-sizeof(void*)); 115 #define _ICOM_THIS_From_IDataObject(class, name) class* this = (class*)(((char*)name)-2*sizeof(void*)); 116 #define _ICOM_THIS_From_IRunnableObject(class, name) class* this = (class*)(((char*)name)-3*sizeof(void*)); 118 117 119 118 /* … … 121 120 */ 122 121 static DefaultHandler* DefaultHandler_Construct(REFCLSID clsid, 123 122 LPUNKNOWN pUnkOuter); 124 123 static void DefaultHandler_Destroy(DefaultHandler* ptrToDestroy); 125 124 … … 132 131 REFIID riid, 133 132 void** ppvObject); 134 static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef( 133 static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef( 135 134 IUnknown* iface); 136 static ULONG WINAPI DefaultHandler_NDIUnknown_Release( 135 static ULONG WINAPI DefaultHandler_NDIUnknown_Release( 137 136 IUnknown* iface); 138 137 … … 145 144 REFIID riid, 146 145 void** ppvObject); 147 static ULONG WINAPI DefaultHandler_AddRef( 146 static ULONG WINAPI DefaultHandler_AddRef( 148 147 IOleObject* iface); 149 static ULONG WINAPI DefaultHandler_Release( 148 static ULONG WINAPI DefaultHandler_Release( 150 149 IOleObject* iface); 151 150 static HRESULT WINAPI DefaultHandler_SetClientSite( 152 153 151 IOleObject* iface, 152 IOleClientSite* pClientSite); 154 153 static HRESULT WINAPI DefaultHandler_GetClientSite( 155 156 154 IOleObject* iface, 155 IOleClientSite** ppClientSite); 157 156 static HRESULT WINAPI DefaultHandler_SetHostNames( 158 159 LPCOLESTR szContainerApp, 160 157 IOleObject* iface, 158 LPCOLESTR szContainerApp, 159 LPCOLESTR szContainerObj); 161 160 static HRESULT WINAPI DefaultHandler_Close( 162 IOleObject* iface, 163 161 IOleObject* iface, 162 DWORD dwSaveOption); 164 163 static HRESULT WINAPI DefaultHandler_SetMoniker( 165 IOleObject* iface, 166 167 164 IOleObject* iface, 165 DWORD dwWhichMoniker, 166 IMoniker* pmk); 168 167 static HRESULT WINAPI DefaultHandler_GetMoniker( 169 170 171 172 168 IOleObject* iface, 169 DWORD dwAssign, 170 DWORD dwWhichMoniker, 171 IMoniker** ppmk); 173 172 static HRESULT WINAPI DefaultHandler_InitFromData( 174 IOleObject* iface, 175 IDataObject* pDataObject, 176 177 173 IOleObject* iface, 174 IDataObject* pDataObject, 175 BOOL fCreation, 176 DWORD dwReserved); 178 177 static HRESULT WINAPI DefaultHandler_GetClipboardData( 179 IOleObject* iface, 180 DWORD dwReserved, 181 178 IOleObject* iface, 179 DWORD dwReserved, 180 IDataObject** ppDataObject); 182 181 static HRESULT WINAPI DefaultHandler_DoVerb( 183 IOleObject* iface, 184 LONG iVerb, 182 IOleObject* iface, 183 LONG iVerb, 185 184 #ifdef __WIN32OS2__ 186 LPMSG lpmsg, 185 LPMSG lpmsg, 187 186 #else 188 struct tagMSG* lpmsg, 187 struct tagMSG* lpmsg, 189 188 #endif 190 IOleClientSite* pActiveSite, 191 LONG lindex, 192 HWND hwndParent, 193 189 IOleClientSite* pActiveSite, 190 LONG lindex, 191 HWND hwndParent, 192 LPCRECT lprcPosRect); 194 193 static HRESULT WINAPI DefaultHandler_EnumVerbs( 195 IOleObject* iface, 196 194 IOleObject* iface, 195 IEnumOLEVERB** ppEnumOleVerb); 197 196 static HRESULT WINAPI DefaultHandler_Update( 198 197 IOleObject* iface); 199 198 static HRESULT WINAPI DefaultHandler_IsUpToDate( 200 199 IOleObject* iface); 201 200 static HRESULT WINAPI DefaultHandler_GetUserClassID( 202 IOleObject* iface, 203 201 IOleObject* iface, 202 CLSID* pClsid); 204 203 static HRESULT WINAPI DefaultHandler_GetUserType( 205 IOleObject* iface, 206 DWORD dwFormOfType, 207 204 IOleObject* iface, 205 DWORD dwFormOfType, 206 LPOLESTR* pszUserType); 208 207 static HRESULT WINAPI DefaultHandler_SetExtent( 209 IOleObject* iface, 210 DWORD dwDrawAspect, 211 208 IOleObject* iface, 209 DWORD dwDrawAspect, 210 SIZEL* psizel); 212 211 static HRESULT WINAPI DefaultHandler_GetExtent( 213 IOleObject* iface, 214 DWORD dwDrawAspect, 215 212 IOleObject* iface, 213 DWORD dwDrawAspect, 214 SIZEL* psizel); 216 215 static HRESULT WINAPI DefaultHandler_Advise( 217 IOleObject* iface, 218 IAdviseSink* pAdvSink, 219 216 IOleObject* iface, 217 IAdviseSink* pAdvSink, 218 DWORD* pdwConnection); 220 219 static HRESULT WINAPI DefaultHandler_Unadvise( 221 IOleObject* iface, 222 220 IOleObject* iface, 221 DWORD dwConnection); 223 222 static HRESULT WINAPI DefaultHandler_EnumAdvise( 224 IOleObject* iface, 225 223 IOleObject* iface, 224 IEnumSTATDATA** ppenumAdvise); 226 225 static HRESULT WINAPI DefaultHandler_GetMiscStatus( 227 IOleObject* iface, 228 DWORD dwAspect, 229 226 IOleObject* iface, 227 DWORD dwAspect, 228 DWORD* pdwStatus); 230 229 static HRESULT WINAPI DefaultHandler_SetColorScheme( 231 232 230 IOleObject* iface, 231 struct tagLOGPALETTE* pLogpal); 233 232 234 233 /* … … 240 239 REFIID riid, 241 240 void** ppvObject); 242 static ULONG WINAPI DefaultHandler_IDataObject_AddRef( 241 static ULONG WINAPI DefaultHandler_IDataObject_AddRef( 243 242 IDataObject* iface); 244 static ULONG WINAPI DefaultHandler_IDataObject_Release( 243 static ULONG WINAPI DefaultHandler_IDataObject_Release( 245 244 IDataObject* iface); 246 245 static HRESULT WINAPI DefaultHandler_GetData( 247 248 LPFORMATETC pformatetcIn, 249 246 IDataObject* iface, 247 LPFORMATETC pformatetcIn, 248 STGMEDIUM* pmedium); 250 249 static HRESULT WINAPI DefaultHandler_GetDataHere( 251 IDataObject* iface, 252 253 250 IDataObject* iface, 251 LPFORMATETC pformatetc, 252 STGMEDIUM* pmedium); 254 253 static HRESULT WINAPI DefaultHandler_QueryGetData( 255 256 254 IDataObject* iface, 255 LPFORMATETC pformatetc); 257 256 static HRESULT WINAPI DefaultHandler_GetCanonicalFormatEtc( 258 IDataObject* iface, 259 LPFORMATETC pformatectIn, 260 257 IDataObject* iface, 258 LPFORMATETC pformatectIn, 259 LPFORMATETC pformatetcOut); 261 260 static HRESULT WINAPI DefaultHandler_SetData( 262 263 LPFORMATETC pformatetc, 264 STGMEDIUM* pmedium, 265 261 IDataObject* iface, 262 LPFORMATETC pformatetc, 263 STGMEDIUM* pmedium, 264 BOOL fRelease); 266 265 static HRESULT WINAPI DefaultHandler_EnumFormatEtc( 267 IDataObject* iface, 268 269 266 IDataObject* iface, 267 DWORD dwDirection, 268 IEnumFORMATETC** ppenumFormatEtc); 270 269 static HRESULT WINAPI DefaultHandler_DAdvise( 271 IDataObject* iface, 272 FORMATETC* pformatetc, 273 DWORD advf, 274 IAdviseSink* pAdvSink, 275 270 IDataObject* iface, 271 FORMATETC* pformatetc, 272 DWORD advf, 273 IAdviseSink* pAdvSink, 274 DWORD* pdwConnection); 276 275 static HRESULT WINAPI DefaultHandler_DUnadvise( 277 278 276 IDataObject* iface, 277 DWORD dwConnection); 279 278 static HRESULT WINAPI DefaultHandler_EnumDAdvise( 280 281 279 IDataObject* iface, 280 IEnumSTATDATA** ppenumAdvise); 282 281 283 282 /* … … 289 288 REFIID riid, 290 289 void** ppvObject); 291 static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef( 290 static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef( 292 291 IRunnableObject* iface); 293 static ULONG WINAPI DefaultHandler_IRunnableObject_Release( 292 static ULONG WINAPI DefaultHandler_IRunnableObject_Release( 294 293 IRunnableObject* iface); 295 static HRESULT WINAPI DefaultHandler_GetRunningClass( 294 static HRESULT WINAPI DefaultHandler_GetRunningClass( 295 IRunnableObject* iface, 296 LPCLSID lpClsid); 297 static HRESULT WINAPI DefaultHandler_Run( 296 298 IRunnableObject* iface, 297 LPCLSID lpClsid); 298 static HRESULT WINAPI DefaultHandler_Run( 299 IRunnableObject* iface, 300 IBindCtx* pbc); 301 static BOOL WINAPI DefaultHandler_IsRunning( 299 IBindCtx* pbc); 300 static BOOL WINAPI DefaultHandler_IsRunning( 302 301 IRunnableObject* iface); 303 static HRESULT WINAPI DefaultHandler_LockRunning( 304 IRunnableObject* iface, 305 BOOL fLock, 306 307 static HRESULT WINAPI DefaultHandler_SetContainedObject( 308 IRunnableObject* iface, 309 302 static HRESULT WINAPI DefaultHandler_LockRunning( 303 IRunnableObject* iface, 304 BOOL fLock, 305 BOOL fLastUnlockCloses); 306 static HRESULT WINAPI DefaultHandler_SetContainedObject( 307 IRunnableObject* iface, 308 BOOL fContained); 310 309 311 310 … … 408 407 * IUnknown pointer can be returned to the outside. 409 408 */ 410 if ( (pUnkOuter!=NULL) && 409 if ( (pUnkOuter!=NULL) && 411 410 (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) != 0) ) 412 411 return CLASS_E_NOAGGREGATION; … … 415 414 * Try to construct a new instance of the class. 416 415 */ 417 newHandler = DefaultHandler_Construct(clsid, 418 416 newHandler = DefaultHandler_Construct(clsid, 417 pUnkOuter); 419 418 420 419 if (newHandler == 0) … … 451 450 if (newObject==0) 452 451 return newObject; 453 452 454 453 /* 455 454 * Initialize the virtual function table. … … 461 460 462 461 /* 463 * Start with one reference count. The caller of this function 462 * Start with one reference count. The caller of this function 464 463 * must release the interface pointer when it is done. 465 464 */ … … 468 467 /* 469 468 * Initialize the outer unknown 470 * We don't keep a reference on the outer unknown since, the way 469 * We don't keep a reference on the outer unknown since, the way 471 470 * aggregation works, our lifetime is at least as large as it's 472 471 * lifetime. … … 480 479 * Create a datacache object. 481 480 * We aggregate with the datacache. Make sure we pass our outer 482 * unknown as the datacache's outer unknown. 481 * unknown as the datacache's outer unknown. 483 482 */ 484 483 CreateDataCache(newObject->outerUnknown, 485 486 487 484 clsid, 485 &IID_IUnknown, 486 (void**)&newObject->dataCache); 488 487 489 488 /* … … 517 516 ptrToDestroy->containerObj = NULL; 518 517 } 519 518 520 519 /* 521 520 * Release our reference to the data cache. … … 586 585 if ( (this==0) || (ppvObject==0) ) 587 586 return E_INVALIDARG; 588 587 589 588 /* 590 589 * Initialize the return parameter. … … 595 594 * Compare the riid with the interface IDs implemented by this object. 596 595 */ 597 if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0) 596 if (memcmp(&IID_IUnknown, riid, sizeof(IID_IUnknown)) == 0) 598 597 { 599 598 *ppvObject = iface; 600 599 } 601 else if (memcmp(&IID_IOleObject, riid, sizeof(IID_IOleObject)) == 0) 600 else if (memcmp(&IID_IOleObject, riid, sizeof(IID_IOleObject)) == 0) 602 601 { 603 602 *ppvObject = (IOleObject*)&(this->lpvtbl1); 604 603 } 605 else if (memcmp(&IID_IDataObject, riid, sizeof(IID_IDataObject)) == 0) 604 else if (memcmp(&IID_IDataObject, riid, sizeof(IID_IDataObject)) == 0) 606 605 { 607 606 *ppvObject = (IDataObject*)&(this->lpvtbl3); 608 607 } 609 else if (memcmp(&IID_IRunnableObject, riid, sizeof(IID_IRunnableObject)) == 0) 608 else if (memcmp(&IID_IRunnableObject, riid, sizeof(IID_IRunnableObject)) == 0) 610 609 { 611 610 *ppvObject = (IRunnableObject*)&(this->lpvtbl4); … … 617 616 */ 618 617 if (IUnknown_QueryInterface(this->dataCache, riid, ppvObject) == S_OK) 619 620 } 621 618 return S_OK; 619 } 620 622 621 /* 623 622 * Check that we obtained an interface. … … 628 627 return E_NOINTERFACE; 629 628 } 630 629 631 630 /* 632 631 * Query Interface always increases the reference count by one when it is 633 * successful. 632 * successful. 634 633 */ 635 634 IUnknown_AddRef((IUnknown*)*ppvObject); 636 635 637 return S_OK;; 636 return S_OK;; 638 637 } 639 638 … … 646 645 * to the outer unknown. 647 646 */ 648 static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef( 647 static ULONG WINAPI DefaultHandler_NDIUnknown_AddRef( 649 648 IUnknown* iface) 650 649 { … … 664 663 * to the outer unknown. 665 664 */ 666 static ULONG WINAPI DefaultHandler_NDIUnknown_Release( 665 static ULONG WINAPI DefaultHandler_NDIUnknown_Release( 667 666 IUnknown* iface) 668 667 { … … 683 682 return 0; 684 683 } 685 684 686 685 return this->ref; 687 686 } … … 704 703 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 705 704 706 return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject); 705 return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject); 707 706 } 708 707 … … 712 711 * See Windows documentation for more details on IUnknown methods. 713 712 */ 714 static ULONG WINAPI DefaultHandler_AddRef( 713 static ULONG WINAPI DefaultHandler_AddRef( 715 714 IOleObject* iface) 716 715 { … … 725 724 * See Windows documentation for more details on IUnknown methods. 726 725 */ 727 static ULONG WINAPI DefaultHandler_Release( 726 static ULONG WINAPI DefaultHandler_Release( 728 727 IOleObject* iface) 729 728 { … … 742 741 */ 743 742 static HRESULT WINAPI DefaultHandler_SetClientSite( 744 745 743 IOleObject* iface, 744 IOleClientSite* pClientSite) 746 745 { 747 746 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); … … 777 776 */ 778 777 static HRESULT WINAPI DefaultHandler_GetClientSite( 779 780 778 IOleObject* iface, 779 IOleClientSite** ppClientSite) 781 780 { 782 781 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); … … 807 806 */ 808 807 static HRESULT WINAPI DefaultHandler_SetHostNames( 809 810 LPCOLESTR szContainerApp, 811 808 IOleObject* iface, 809 LPCOLESTR szContainerApp, 810 LPCOLESTR szContainerObj) 812 811 { 813 812 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 814 813 815 814 TRACE("(%p, %s, %s)\n", 816 817 debugstr_w(szContainerApp), 818 815 iface, 816 debugstr_w(szContainerApp), 817 debugstr_w(szContainerObj)); 819 818 820 819 /* 821 820 * Be sure to cleanup before re-assinging the strings. 822 */ 821 */ 823 822 if (this->containerApp!=NULL) 824 823 { … … 861 860 */ 862 861 static HRESULT WINAPI DefaultHandler_Close( 863 IOleObject* iface, 864 862 IOleObject* iface, 863 DWORD dwSaveOption) 865 864 { 866 865 TRACE("()\n"); … … 876 875 */ 877 876 static HRESULT WINAPI DefaultHandler_SetMoniker( 878 IOleObject* iface, 879 880 877 IOleObject* iface, 878 DWORD dwWhichMoniker, 879 IMoniker* pmk) 881 880 { 882 881 TRACE("(%p, %ld, %p)\n", 883 iface, 884 dwWhichMoniker, 885 882 iface, 883 dwWhichMoniker, 884 pmk); 886 885 887 886 return S_OK; … … 896 895 */ 897 896 static HRESULT WINAPI DefaultHandler_GetMoniker( 898 899 900 901 897 IOleObject* iface, 898 DWORD dwAssign, 899 DWORD dwWhichMoniker, 900 IMoniker** ppmk) 902 901 { 903 902 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 904 903 905 904 TRACE("(%p, %ld, %ld, %p)\n", 906 905 iface, dwAssign, dwWhichMoniker, ppmk); 907 906 908 907 if (this->clientSite) 909 908 { 910 909 return IOleClientSite_GetMoniker(this->clientSite, 911 912 913 914 910 dwAssign, 911 dwWhichMoniker, 912 ppmk); 913 915 914 } 916 915 … … 922 921 * 923 922 * This method is meaningless if the server is not running 924 * 923 * 925 924 * See Windows documentation for more details on IOleObject methods. 926 925 */ 927 926 static HRESULT WINAPI DefaultHandler_InitFromData( 928 IOleObject* iface, 929 IDataObject* pDataObject, 930 931 927 IOleObject* iface, 928 IDataObject* pDataObject, 929 BOOL fCreation, 930 DWORD dwReserved) 932 931 { 933 932 TRACE("(%p, %p, %d, %ld)\n", 934 933 iface, pDataObject, fCreation, dwReserved); 935 934 936 935 return OLE_E_NOTRUNNING; … … 941 940 * 942 941 * This method is meaningless if the server is not running 943 * 942 * 944 943 * See Windows documentation for more details on IOleObject methods. 945 944 */ 946 945 static HRESULT WINAPI DefaultHandler_GetClipboardData( 947 IOleObject* iface, 948 DWORD dwReserved, 949 946 IOleObject* iface, 947 DWORD dwReserved, 948 IDataObject** ppDataObject) 950 949 { 951 950 TRACE("(%p, %ld, %p)\n", 952 951 iface, dwReserved, ppDataObject); 953 952 954 953 return OLE_E_NOTRUNNING; … … 956 955 957 956 static HRESULT WINAPI DefaultHandler_DoVerb( 958 IOleObject* iface, 959 LONG iVerb, 957 IOleObject* iface, 958 LONG iVerb, 960 959 #ifdef __WIN32OS2__ 961 LPMSG lpmsg, 960 LPMSG lpmsg, 962 961 #else 963 struct tagMSG* lpmsg, 962 struct tagMSG* lpmsg, 964 963 #endif 965 IOleClientSite* pActiveSite, 966 LONG lindex, 967 HWND hwndParent, 968 964 IOleClientSite* pActiveSite, 965 LONG lindex, 966 HWND hwndParent, 967 LPCRECT lprcPosRect) 969 968 { 970 969 FIXME(": Stub\n"); … … 977 976 * The default handler implementation of this method simply delegates 978 977 * to OleRegEnumVerbs 979 * 978 * 980 979 * See Windows documentation for more details on IOleObject methods. 981 980 */ 982 981 static HRESULT WINAPI DefaultHandler_EnumVerbs( 983 IOleObject* iface, 984 982 IOleObject* iface, 983 IEnumOLEVERB** ppEnumOleVerb) 985 984 { 986 985 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); … … 992 991 993 992 static HRESULT WINAPI DefaultHandler_Update( 994 993 IOleObject* iface) 995 994 { 996 995 FIXME(": Stub\n"); … … 1002 1001 * 1003 1002 * This method is meaningless if the server is not running 1004 * 1003 * 1005 1004 * See Windows documentation for more details on IOleObject methods. 1006 1005 */ 1007 1006 static HRESULT WINAPI DefaultHandler_IsUpToDate( 1008 1007 IOleObject* iface) 1009 1008 { 1010 1009 TRACE("(%p)\n", iface); … … 1017 1016 * 1018 1017 * TODO: Map to a new class ID if emulation is active. 1019 * 1018 * 1020 1019 * See Windows documentation for more details on IOleObject methods. 1021 1020 */ 1022 1021 static HRESULT WINAPI DefaultHandler_GetUserClassID( 1023 IOleObject* iface, 1024 1022 IOleObject* iface, 1023 CLSID* pClsid) 1025 1024 { 1026 1025 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); … … 1044 1043 * The default handler implementation of this method simply delegates 1045 1044 * to OleRegGetUserType 1046 * 1045 * 1047 1046 * See Windows documentation for more details on IOleObject methods. 1048 1047 */ 1049 1048 static HRESULT WINAPI DefaultHandler_GetUserType( 1050 IOleObject* iface, 1051 DWORD dwFormOfType, 1052 1049 IOleObject* iface, 1050 DWORD dwFormOfType, 1051 LPOLESTR* pszUserType) 1053 1052 { 1054 1053 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); … … 1067 1066 */ 1068 1067 static HRESULT WINAPI DefaultHandler_SetExtent( 1069 IOleObject* iface, 1070 DWORD dwDrawAspect, 1071 1068 IOleObject* iface, 1069 DWORD dwDrawAspect, 1070 SIZEL* psizel) 1072 1071 { 1073 1072 TRACE("(%p, %lx, (%ld x %ld))\n", iface, … … 1085 1084 */ 1086 1085 static HRESULT WINAPI DefaultHandler_GetExtent( 1087 IOleObject* iface, 1088 DWORD dwDrawAspect, 1089 1086 IOleObject* iface, 1087 DWORD dwDrawAspect, 1088 SIZEL* psizel) 1090 1089 { 1091 1090 DVTARGETDEVICE* targetDevice; … … 1093 1092 HRESULT hres; 1094 1093 1095 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1094 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1096 1095 1097 1096 TRACE("(%p, %lx, %p)\n", iface, dwDrawAspect, psizel); … … 1106 1105 * 1107 1106 * Here we would build a valid DVTARGETDEVICE structure 1108 * but, since we are calling into the data cache, we 1109 * know it's implementation and we'll skip this 1107 * but, since we are calling into the data cache, we 1108 * know it's implementation and we'll skip this 1110 1109 * extra work until later. 1111 1110 */ … … 1113 1112 1114 1113 hres = IViewObject2_GetExtent(cacheView, 1115 1116 1117 1118 1114 dwDrawAspect, 1115 -1, 1116 targetDevice, 1117 psizel); 1119 1118 1120 1119 /* … … 1135 1134 */ 1136 1135 static HRESULT WINAPI DefaultHandler_Advise( 1137 IOleObject* iface, 1138 IAdviseSink* pAdvSink, 1139 1136 IOleObject* iface, 1137 IAdviseSink* pAdvSink, 1138 DWORD* pdwConnection) 1140 1139 { 1141 1140 HRESULT hres = S_OK; 1142 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1141 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1143 1142 1144 1143 TRACE("(%p, %p, %p)\n", iface, pAdvSink, pdwConnection); … … 1154 1153 if (SUCCEEDED(hres)) 1155 1154 { 1156 hres = IOleAdviseHolder_Advise(this->oleAdviseHolder, 1157 pAdvSink, 1158 1155 hres = IOleAdviseHolder_Advise(this->oleAdviseHolder, 1156 pAdvSink, 1157 pdwConnection); 1159 1158 } 1160 1159 … … 1171 1170 */ 1172 1171 static HRESULT WINAPI DefaultHandler_Unadvise( 1173 IOleObject* iface, 1174 1175 { 1176 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1172 IOleObject* iface, 1173 DWORD dwConnection) 1174 { 1175 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1177 1176 1178 1177 TRACE("(%p, %ld)\n", iface, dwConnection); … … 1186 1185 1187 1186 return IOleAdviseHolder_Unadvise(this->oleAdviseHolder, 1188 1187 dwConnection); 1189 1188 } 1190 1189 … … 1198 1197 */ 1199 1198 static HRESULT WINAPI DefaultHandler_EnumAdvise( 1200 IOleObject* iface, 1201 1202 { 1203 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1199 IOleObject* iface, 1200 IEnumSTATDATA** ppenumAdvise) 1201 { 1202 _ICOM_THIS_From_IOleObject(DefaultHandler, iface); 1204 1203 1205 1204 TRACE("(%p, %p)\n", iface, ppenumAdvise); … … 1218 1217 if (this->oleAdviseHolder==NULL) 1219 1218 return IOleAdviseHolder_EnumAdvise(this->oleAdviseHolder, 1220 1219 ppenumAdvise); 1221 1220 1222 1221 return S_OK; … … 1232 1231 */ 1233 1232 static HRESULT WINAPI DefaultHandler_GetMiscStatus( 1234 IOleObject* iface, 1235 DWORD dwAspect, 1236 1233 IOleObject* iface, 1234 DWORD dwAspect, 1235 DWORD* pdwStatus) 1237 1236 { 1238 1237 HRESULT hres; … … 1257 1256 */ 1258 1257 static HRESULT WINAPI DefaultHandler_SetColorScheme( 1259 1260 1258 IOleObject* iface, 1259 struct tagLOGPALETTE* pLogpal) 1261 1260 { 1262 1261 TRACE("(%p, %p))\n", iface, pLogpal); … … 1275 1274 */ 1276 1275 static HRESULT WINAPI DefaultHandler_IDataObject_QueryInterface( 1277 IDataObject* iface, 1276 IDataObject* iface, 1278 1277 REFIID riid, 1279 1278 void** ppvObject) … … 1281 1280 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1282 1281 1283 return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject); 1282 return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject); 1284 1283 } 1285 1284 … … 1289 1288 * See Windows documentation for more details on IUnknown methods. 1290 1289 */ 1291 static ULONG WINAPI DefaultHandler_IDataObject_AddRef( 1290 static ULONG WINAPI DefaultHandler_IDataObject_AddRef( 1292 1291 IDataObject* iface) 1293 1292 { 1294 1293 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1295 1294 1296 return IUnknown_AddRef(this->outerUnknown); 1295 return IUnknown_AddRef(this->outerUnknown); 1297 1296 } 1298 1297 … … 1302 1301 * See Windows documentation for more details on IUnknown methods. 1303 1302 */ 1304 static ULONG WINAPI DefaultHandler_IDataObject_Release( 1303 static ULONG WINAPI DefaultHandler_IDataObject_Release( 1305 1304 IDataObject* iface) 1306 1305 { 1307 1306 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1308 1307 1309 return IUnknown_Release(this->outerUnknown); 1308 return IUnknown_Release(this->outerUnknown); 1310 1309 } 1311 1310 … … 1318 1317 */ 1319 1318 static HRESULT WINAPI DefaultHandler_GetData( 1320 1321 LPFORMATETC pformatetcIn, 1322 1319 IDataObject* iface, 1320 LPFORMATETC pformatetcIn, 1321 STGMEDIUM* pmedium) 1323 1322 { 1324 1323 IDataObject* cacheDataObject = NULL; … … 1329 1328 TRACE("(%p, %p, %p)\n", iface, pformatetcIn, pmedium); 1330 1329 1331 hres = IUnknown_QueryInterface(this->dataCache, 1332 1333 1330 hres = IUnknown_QueryInterface(this->dataCache, 1331 &IID_IDataObject, 1332 (void**)&cacheDataObject); 1334 1333 1335 1334 if (FAILED(hres)) … … 1337 1336 1338 1337 hres = IDataObject_GetData(cacheDataObject, 1339 1340 1341 1338 pformatetcIn, 1339 pmedium); 1340 1342 1341 IDataObject_Release(cacheDataObject); 1343 1342 1344 1343 return hres; 1345 1344 } 1346 1345 1347 1346 static HRESULT WINAPI DefaultHandler_GetDataHere( 1348 IDataObject* iface, 1349 1350 1347 IDataObject* iface, 1348 LPFORMATETC pformatetc, 1349 STGMEDIUM* pmedium) 1351 1350 { 1352 1351 FIXME(": Stub\n"); … … 1357 1356 * DefaultHandler_QueryGetData (IDataObject) 1358 1357 * 1359 * The default handler's implementation of this method delegates to 1358 * The default handler's implementation of this method delegates to 1360 1359 * the cache. 1361 1360 * … … 1363 1362 */ 1364 1363 static HRESULT WINAPI DefaultHandler_QueryGetData( 1365 1366 1364 IDataObject* iface, 1365 LPFORMATETC pformatetc) 1367 1366 { 1368 1367 IDataObject* cacheDataObject = NULL; … … 1373 1372 TRACE("(%p, %p)\n", iface, pformatetc); 1374 1373 1375 hres = IUnknown_QueryInterface(this->dataCache, 1376 1377 1374 hres = IUnknown_QueryInterface(this->dataCache, 1375 &IID_IDataObject, 1376 (void**)&cacheDataObject); 1378 1377 1379 1378 if (FAILED(hres)) … … 1381 1380 1382 1381 hres = IDataObject_QueryGetData(cacheDataObject, 1383 1382 pformatetc); 1384 1383 1385 1384 IDataObject_Release(cacheDataObject); 1386 1385 1387 1386 return hres; 1388 1387 } … … 1396 1395 */ 1397 1396 static HRESULT WINAPI DefaultHandler_GetCanonicalFormatEtc( 1398 IDataObject* iface, 1399 LPFORMATETC pformatectIn, 1400 1397 IDataObject* iface, 1398 LPFORMATETC pformatectIn, 1399 LPFORMATETC pformatetcOut) 1401 1400 { 1402 1401 FIXME("(%p, %p, %p)\n", iface, pformatectIn, pformatetcOut); … … 1408 1407 * DefaultHandler_SetData (IDataObject) 1409 1408 * 1410 * The default handler's implementation of this method delegates to 1409 * The default handler's implementation of this method delegates to 1411 1410 * the cache. 1412 1411 * … … 1414 1413 */ 1415 1414 static HRESULT WINAPI DefaultHandler_SetData( 1416 1417 LPFORMATETC pformatetc, 1418 STGMEDIUM* pmedium, 1419 1415 IDataObject* iface, 1416 LPFORMATETC pformatetc, 1417 STGMEDIUM* pmedium, 1418 BOOL fRelease) 1420 1419 { 1421 1420 IDataObject* cacheDataObject = NULL; … … 1426 1425 TRACE("(%p, %p, %p, %d)\n", iface, pformatetc, pmedium, fRelease); 1427 1426 1428 hres = IUnknown_QueryInterface(this->dataCache, 1429 1430 1427 hres = IUnknown_QueryInterface(this->dataCache, 1428 &IID_IDataObject, 1429 (void**)&cacheDataObject); 1431 1430 1432 1431 if (FAILED(hres)) … … 1434 1433 1435 1434 hres = IDataObject_SetData(cacheDataObject, 1436 1437 1438 1439 1435 pformatetc, 1436 pmedium, 1437 fRelease); 1438 1440 1439 IDataObject_Release(cacheDataObject); 1441 1440 1442 1441 return hres; 1443 1442 } … … 1452 1451 */ 1453 1452 static HRESULT WINAPI DefaultHandler_EnumFormatEtc( 1454 IDataObject* iface, 1455 1456 1453 IDataObject* iface, 1454 DWORD dwDirection, 1455 IEnumFORMATETC** ppenumFormatEtc) 1457 1456 { 1458 1457 HRESULT hres; … … 1475 1474 */ 1476 1475 static HRESULT WINAPI DefaultHandler_DAdvise( 1477 IDataObject* iface, 1478 FORMATETC* pformatetc, 1479 DWORD advf, 1480 IAdviseSink* pAdvSink, 1481 1476 IDataObject* iface, 1477 FORMATETC* pformatetc, 1478 DWORD advf, 1479 IAdviseSink* pAdvSink, 1480 DWORD* pdwConnection) 1482 1481 { 1483 1482 HRESULT hres = S_OK; 1484 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1485 1486 TRACE("(%p, %p, %ld, %p, %p)\n", 1487 1483 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1484 1485 TRACE("(%p, %p, %ld, %p, %p)\n", 1486 iface, pformatetc, advf, pAdvSink, pdwConnection); 1488 1487 1489 1488 /* … … 1497 1496 if (SUCCEEDED(hres)) 1498 1497 { 1499 hres = IDataAdviseHolder_Advise(this->dataAdviseHolder, 1500 1501 pformatetc, 1502 advf, 1503 pAdvSink, 1504 1498 hres = IDataAdviseHolder_Advise(this->dataAdviseHolder, 1499 iface, 1500 pformatetc, 1501 advf, 1502 pAdvSink, 1503 pdwConnection); 1505 1504 } 1506 1505 … … 1517 1516 */ 1518 1517 static HRESULT WINAPI DefaultHandler_DUnadvise( 1519 1520 1521 { 1522 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1518 IDataObject* iface, 1519 DWORD dwConnection) 1520 { 1521 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1523 1522 1524 1523 TRACE("(%p, %ld)\n", iface, dwConnection); … … 1533 1532 } 1534 1533 1535 return IDataAdviseHolder_Unadvise(this->dataAdviseHolder, 1536 1534 return IDataAdviseHolder_Unadvise(this->dataAdviseHolder, 1535 dwConnection); 1537 1536 } 1538 1537 … … 1546 1545 */ 1547 1546 static HRESULT WINAPI DefaultHandler_EnumDAdvise( 1548 1549 1550 { 1551 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1547 IDataObject* iface, 1548 IEnumSTATDATA** ppenumAdvise) 1549 { 1550 _ICOM_THIS_From_IDataObject(DefaultHandler, iface); 1552 1551 1553 1552 TRACE("(%p, %p)\n", iface, ppenumAdvise); … … 1569 1568 if (this->dataAdviseHolder!=NULL) 1570 1569 { 1571 return IDataAdviseHolder_EnumAdvise(this->dataAdviseHolder, 1572 1570 return IDataAdviseHolder_EnumAdvise(this->dataAdviseHolder, 1571 ppenumAdvise); 1573 1572 } 1574 1573 … … 1577 1576 1578 1577 /********************************************************* 1579 * Methods implementation for the IRunnableObject part 1578 * Methods implementation for the IRunnableObject part 1580 1579 * of the DefaultHandler class. 1581 1580 */ … … 1593 1592 _ICOM_THIS_From_IRunnableObject(DefaultHandler, iface); 1594 1593 1595 return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject); 1594 return IUnknown_QueryInterface(this->outerUnknown, riid, ppvObject); 1596 1595 } 1597 1596 … … 1601 1600 * See Windows documentation for more details on IUnknown methods. 1602 1601 */ 1603 static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef( 1602 static ULONG WINAPI DefaultHandler_IRunnableObject_AddRef( 1604 1603 IRunnableObject* iface) 1605 1604 { … … 1614 1613 * See Windows documentation for more details on IUnknown methods. 1615 1614 */ 1616 static ULONG WINAPI DefaultHandler_IRunnableObject_Release( 1615 static ULONG WINAPI DefaultHandler_IRunnableObject_Release( 1617 1616 IRunnableObject* iface) 1618 1617 { … … 1625 1624 * DefaultHandler_GetRunningClass (IRunnableObject) 1626 1625 * 1627 * According to Brockscmidt, Chapter 19, the default handler's 1626 * According to Brockscmidt, Chapter 19, the default handler's 1628 1627 * implementation of IRunnableobject does nothing until the object 1629 1628 * is actually running. … … 1631 1630 * See Windows documentation for more details on IRunnableObject methods. 1632 1631 */ 1633 static HRESULT WINAPI DefaultHandler_GetRunningClass( 1634 IRunnableObject* iface, 1635 1632 static HRESULT WINAPI DefaultHandler_GetRunningClass( 1633 IRunnableObject* iface, 1634 LPCLSID lpClsid) 1636 1635 { 1637 1636 TRACE("()\n"); … … 1639 1638 } 1640 1639 1641 static HRESULT WINAPI DefaultHandler_Run( 1640 static HRESULT WINAPI DefaultHandler_Run( 1642 1641 IRunnableObject* iface, 1643 1642 IBindCtx* pbc) 1644 1643 { 1645 1644 FIXME(": Stub\n"); … … 1650 1649 * DefaultHandler_IsRunning (IRunnableObject) 1651 1650 * 1652 * According to Brockscmidt, Chapter 19, the default handler's 1651 * According to Brockscmidt, Chapter 19, the default handler's 1653 1652 * implementation of IRunnableobject does nothing until the object 1654 1653 * is actually running. … … 1656 1655 * See Windows documentation for more details on IRunnableObject methods. 1657 1656 */ 1658 static BOOL WINAPI DefaultHandler_IsRunning( 1657 static BOOL WINAPI DefaultHandler_IsRunning( 1659 1658 IRunnableObject* iface) 1660 1659 { … … 1666 1665 * DefaultHandler_LockRunning (IRunnableObject) 1667 1666 * 1668 * According to Brockscmidt, Chapter 19, the default handler's 1667 * According to Brockscmidt, Chapter 19, the default handler's 1669 1668 * implementation of IRunnableobject does nothing until the object 1670 1669 * is actually running. … … 1672 1671 * See Windows documentation for more details on IRunnableObject methods. 1673 1672 */ 1674 static HRESULT WINAPI DefaultHandler_LockRunning( 1675 IRunnableObject* iface, 1676 BOOL fLock, 1677 1673 static HRESULT WINAPI DefaultHandler_LockRunning( 1674 IRunnableObject* iface, 1675 BOOL fLock, 1676 BOOL fLastUnlockCloses) 1678 1677 { 1679 1678 TRACE("()\n"); … … 1684 1683 * DefaultHandler_SetContainedObject (IRunnableObject) 1685 1684 * 1686 * According to Brockscmidt, Chapter 19, the default handler's 1685 * According to Brockscmidt, Chapter 19, the default handler's 1687 1686 * implementation of IRunnableobject does nothing until the object 1688 1687 * is actually running. … … 1690 1689 * See Windows documentation for more details on IRunnableObject methods. 1691 1690 */ 1692 static HRESULT WINAPI DefaultHandler_SetContainedObject( 1693 IRunnableObject* iface, 1694 1691 static HRESULT WINAPI DefaultHandler_SetContainedObject( 1692 IRunnableObject* iface, 1693 BOOL fContained) 1695 1694 { 1696 1695 TRACE("()\n");
Note:
See TracChangeset
for help on using the changeset viewer.