1/* 2 * Copyright (C) 1999 Paul Quinn 3 * Copyright (C) 1999 Francis Beaudet 4 * Copyright (C) 2003 Alexandre Julliard 5 * 6 * This library is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This library is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA 19 */ 20 21#ifndef DO_NO_IMPORTS 22import "objidl.idl"; 23#endif 24 25interface IOleInPlaceActiveObject; 26 27cpp_quote("#include <winuser.h>") 28 29/***************************************************************************** 30 * IOleTypes interface 31 */ 32[ 33 uuid(b0916c84-7416-101a-bcea-08002b2b79ef) 34] 35interface IOLETypes 36{ 37 typedef enum tagOLERENDER 38 { 39 OLERENDER_NONE = 0, 40 OLERENDER_DRAW = 1, 41 OLERENDER_FORMAT = 2, 42 OLERENDER_ASIS = 3 43 } OLERENDER, *LPOLERENDER; 44 45 typedef struct tagOBJECTDESCRIPTOR 46 { 47 ULONG cbSize; 48 CLSID clsid; 49 DWORD dwDrawAspect; 50 SIZEL sizel; 51 POINTL pointl; 52 DWORD dwStatus; 53 DWORD dwFullUserTypeName; 54 DWORD dwSrcOfCopy; 55 } OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, *LPOBJECTDESCRIPTOR, 56 LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, *LPLINKSRCDESCRIPTOR; 57} 58 59 60/***************************************************************************** 61 * IOleWindow interface 62 */ 63[ 64 object, 65 uuid(00000114-0000-0000-c000-000000000046), 66 pointer_default(unique) 67] 68interface IOleWindow : IUnknown 69{ 70 typedef [unique] IOleWindow *LPOLEWINDOW; 71 72 HRESULT GetWindow( 73 [out] HWND *phwnd); 74 75 HRESULT ContextSensitiveHelp( 76 [in] BOOL fEnterMode); 77} 78 79 80/***************************************************************************** 81 * IOleInPlaceObject interface 82 */ 83[ 84 object, 85 uuid(00000113-0000-0000-c000-000000000046), 86 pointer_default(unique) 87] 88interface IOleInPlaceObject : IOleWindow 89{ 90 typedef [unique] IOleInPlaceObject *LPOLEINPLACEOBJECT; 91 92 HRESULT InPlaceDeactivate(); 93 94 HRESULT UIDeactivate(); 95 96 HRESULT SetObjectRects( 97 [in] LPCRECT lprcPosRect, 98 [in] LPCRECT lprcClipRect); 99 100 HRESULT ReactivateAndUndo(); 101} 102 103 104/***************************************************************************** 105 * IOleInPlaceUIWindow interface 106 */ 107[ 108 object, 109 uuid(00000115-0000-0000-c000-000000000046), 110 pointer_default(unique) 111] 112 113interface IOleInPlaceUIWindow : IOleWindow 114{ 115 typedef [unique] IOleInPlaceUIWindow *LPOLEINPLACEUIWINDOW; 116 117 typedef RECT BORDERWIDTHS; 118 typedef LPRECT LPBORDERWIDTHS; 119 typedef LPCRECT LPCBORDERWIDTHS; 120 121 HRESULT GetBorder( 122 [out] LPRECT lprectBorder); 123 124 HRESULT RequestBorderSpace( 125 [in, unique] LPCBORDERWIDTHS pborderwidths); 126 127 HRESULT SetBorderSpace( 128 [in, unique] LPCBORDERWIDTHS pborderwidths); 129 130 HRESULT SetActiveObject( 131 [in, unique] IOleInPlaceActiveObject *pActiveObject, 132 [in, string, unique] LPCOLESTR pszObjName); 133} 134 135 136/* avoid conflict with Wine Unicode macros */ 137cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") 138cpp_quote("#undef TranslateAccelerator") 139cpp_quote("#endif") 140 141/***************************************************************************** 142 * IOleInPlaceFrame interface 143 */ 144[ 145 object, 146 uuid(00000116-0000-0000-c000-000000000046), 147 pointer_default(unique) 148] 149interface IOleInPlaceFrame : IOleInPlaceUIWindow 150{ 151 typedef [unique] IOleInPlaceFrame *LPOLEINPLACEFRAME; 152 153 typedef struct tagOleInPlaceFrameInfo 154 { 155 UINT cb; 156 BOOL fMDIApp; 157 HWND hwndFrame; 158 HACCEL haccel; 159 UINT cAccelEntries; 160 } OLEINPLACEFRAMEINFO, *LPOLEINPLACEFRAMEINFO; 161 162 typedef struct tagOleMenuGroupWidths 163 { 164 LONG width[ 6 ]; 165 } OLEMENUGROUPWIDTHS, *LPOLEMENUGROUPWIDTHS; 166 167 typedef HGLOBAL HOLEMENU; 168 169 HRESULT InsertMenus( 170 [in] HMENU hmenuShared, 171 [in,out] LPOLEMENUGROUPWIDTHS lpMenuWidths); 172 173 HRESULT SetMenu( 174 [in] HMENU hmenuShared, 175 [in] HOLEMENU holemenu, 176 [in] HWND hwndActiveObject); 177 178 HRESULT RemoveMenus( 179 [in] HMENU hmenuShared); 180 181 HRESULT SetStatusText( 182 [in, unique] LPCOLESTR pszStatusText); 183 184 HRESULT EnableModeless( 185 [in] BOOL fEnable); 186 187 HRESULT TranslateAccelerator( 188 [in] LPMSG lpmsg, 189 [in] WORD wID); 190} 191 192 193/***************************************************************************** 194 * IOleInPlaceActiveObject interface 195 */ 196[ 197 object, 198 uuid(00000117-0000-0000-c000-000000000046) 199] 200interface IOleInPlaceActiveObject : IOleWindow 201{ 202 typedef [unique] IOleInPlaceActiveObject *LPOLEINPLACEACTIVEOBJECT; 203 204 [local] 205 HRESULT TranslateAccelerator( 206 [in] LPMSG lpmsg); 207 208 [call_as(TranslateAccelerator)] 209 HRESULT RemoteTranslateAccelerator(); 210 211 HRESULT OnFrameWindowActivate( 212 [in] BOOL fActivate); 213 214 HRESULT OnDocWindowActivate( 215 [in] BOOL fActivate); 216 217 [local] 218 HRESULT ResizeBorder( 219 [in] LPCRECT prcBorder, 220 [in, unique] IOleInPlaceUIWindow *pUIWindow, 221 [in] BOOL fFrameWindow); 222 223 [call_as(ResizeBorder)] 224 HRESULT RemoteResizeBorder( 225 [in] LPCRECT prcBorder, 226 [in] REFIID riid, 227 [in, unique, iid_is(riid)] IOleInPlaceUIWindow *pUIWindow, 228 [in] BOOL fFrameWindow); 229 230 HRESULT EnableModeless( 231 [in] BOOL fEnable); 232} 233 234 235/***************************************************************************** 236 * IOleInPlaceSite interface 237 */ 238[ 239 object, 240 uuid(00000119-0000-0000-c000-000000000046), 241 pointer_default(unique) 242] 243interface IOleInPlaceSite : IOleWindow 244{ 245 typedef [unique] IOleInPlaceSite *LPOLEINPLACESITE; 246 247 HRESULT CanInPlaceActivate(); 248 HRESULT OnInPlaceActivate(); 249 HRESULT OnUIActivate(); 250 251 HRESULT GetWindowContext( 252 [out] IOleInPlaceFrame **ppFrame, 253 [out] IOleInPlaceUIWindow **ppDoc, 254 [out] LPRECT lprcPosRect, 255 [out] LPRECT lprcClipRect, 256 [in, out] LPOLEINPLACEFRAMEINFO lpFrameInfo); 257 258 HRESULT Scroll( 259 [in] SIZE scrollExtent); 260 261 HRESULT OnUIDeactivate( 262 [in] BOOL fUndoable); 263 264 HRESULT OnInPlaceDeactivate(); 265 HRESULT DiscardUndoState(); 266 HRESULT DeactivateAndUndo(); 267 268 HRESULT OnPosRectChange( 269 [in] LPCRECT lprcPosRect); 270} 271 272 273/***************************************************************************** 274 * IParseDisplayName interface 275 */ 276[ 277 object, 278 uuid(0000011a-0000-0000-c000-000000000046), 279 pointer_default(unique) 280] 281interface IParseDisplayName : IUnknown 282{ 283 typedef [unique] IParseDisplayName *LPPARSEDISPLAYNAME; 284 285 HRESULT ParseDisplayName( 286 [in, unique] IBindCtx *pbc, 287 [in] LPOLESTR pszDisplayName, 288 [out] ULONG *pchEaten, 289 [out] IMoniker **ppmkOut); 290} 291 292 293/***************************************************************************** 294 * IOleContainer interface 295 */ 296[ 297 object, 298 uuid(0000011b-0000-0000-c000-000000000046), 299 pointer_default(unique) 300] 301interface IOleContainer : IParseDisplayName 302{ 303 typedef [unique] IOleContainer *LPOLECONTAINER; 304 305 HRESULT EnumObjects( 306 [in] DWORD grfFlags, 307 [out] IEnumUnknown **ppenum); 308 309 HRESULT LockContainer( 310 [in] BOOL fLock); 311} 312 313 314/***************************************************************************** 315 * IOleItemContainer interface 316 */ 317[ 318 object, 319 uuid(0000011c-0000-0000-c000-000000000046), 320 pointer_default(unique) 321] 322interface IOleItemContainer : IOleContainer 323{ 324 typedef [unique] IOleItemContainer *LPOLEITEMCONTAINER; 325 326 typedef enum tagBINDSPEED 327 { 328 BINDSPEED_INDEFINITE = 1, 329 BINDSPEED_MODERATE = 2, 330 BINDSPEED_IMMEDIATE = 3 331 } BINDSPEED; 332 333 typedef enum tagOLECONTF 334 { 335 OLECONTF_EMBEDDINGS = 1, 336 OLECONTF_LINKS = 2, 337 OLECONTF_OTHERS = 4, 338 OLECONTF_ONLYUSER = 8, 339 OLECONTF_ONLYIFRUNNING = 16 340 } OLECONTF; 341 342cpp_quote("#ifdef WINE_NO_UNICODE_MACROS") 343cpp_quote("#undef GetObject") 344cpp_quote("#endif") 345 HRESULT GetObject( 346 [in] LPOLESTR pszItem, 347 [in] DWORD dwSpeedNeeded, 348 [in, unique] IBindCtx *pbc, 349 [in] REFIID riid, 350 [out, iid_is(riid)] void **ppvObject); 351 352 HRESULT GetObjectStorage( 353 [in] LPOLESTR pszItem, 354 [in, unique] IBindCtx *pbc, 355 [in] REFIID riid, 356 [out, iid_is(riid)] void **ppvStorage); 357 358 HRESULT IsRunning( 359 [in] LPOLESTR pszItem); 360} 361 362 363/***************************************************************************** 364 * IOleLink interface 365 */ 366[ 367 object, 368 uuid(0000011d-0000-0000-c000-000000000046) 369] 370interface IOleLink : IUnknown 371{ 372 typedef [unique] IOleLink *LPOLELINK; 373 374 typedef enum tagOLEUPDATE 375 { 376 OLEUPDATE_ALWAYS = 1, 377 OLEUPDATE_ONCALL = 3 378 } OLEUPDATE, *POLEUPDATE, *LPOLEUPDATE; 379 380 typedef enum tagOLELINKBIND 381 { 382 OLELINKBIND_EVENIFCLASSDIFF = 1 383 } OLELINKBIND; 384 385 HRESULT SetUpdateOptions( 386 [in] DWORD dwUpdateOpt); 387 388 HRESULT GetUpdateOptions( 389 [out] DWORD *pdwUpdateOpt); 390 391 HRESULT SetSourceMoniker( 392 [in, unique] IMoniker *pmk, 393 [in] REFCLSID rclsid); 394 395 HRESULT GetSourceMoniker( 396 [out] IMoniker **ppmk); 397 398 HRESULT SetSourceDisplayName( 399 [in]LPCOLESTR pszStatusText); 400 401 HRESULT GetSourceDisplayName( 402 [out] LPOLESTR *ppszDisplayName); 403 404 HRESULT BindToSource( 405 [in] DWORD bindflags, 406 [in, unique] IBindCtx *pbc); 407 408 HRESULT BindIfRunning(); 409 410 HRESULT GetBoundSource( 411 [out] IUnknown **ppunk); 412 413 HRESULT UnbindSource(); 414 415 HRESULT Update( 416 [in, unique] IBindCtx *pbc); 417} 418 419 420/***************************************************************************** 421 * IOleClientSite interface 422 */ 423[ 424 object, 425 uuid(00000118-0000-0000-c000-000000000046), 426 pointer_default(unique) 427] 428interface IOleClientSite : IUnknown 429{ 430 typedef [unique] IOleClientSite * LPOLECLIENTSITE; 431 432 HRESULT SaveObject(); 433 434 HRESULT GetMoniker( 435 [in] DWORD dwAssign, 436 [in] DWORD dwWhichMoniker, 437 [out] IMoniker **ppmk); 438 439 HRESULT GetContainer( 440 [out] IOleContainer **ppContainer); 441 442 HRESULT ShowObject(); 443 444 HRESULT OnShowWindow( 445 [in] BOOL fShow); 446 447 HRESULT RequestNewObjectLayout(); 448} 449 450 451/***************************************************************************** 452 * IOleCache interface 453 */ 454[ 455 object, 456 uuid(0000011e-0000-0000-c000-000000000046), 457 pointer_default(unique) 458] 459interface IOleCache : IUnknown 460{ 461 typedef [unique] IOleCache *LPOLECACHE; 462 463 HRESULT Cache( 464 [in, unique] FORMATETC *pformatetc, 465 [in] DWORD advf, 466 [out] DWORD *pdwConnection); 467 468 HRESULT Uncache( 469 [in] DWORD dwConnection); 470 471 HRESULT EnumCache( 472 [out] IEnumSTATDATA **ppenumSTATDATA); 473 474 HRESULT InitCache( 475 [in, unique] IDataObject *pDataObject); 476 477 HRESULT SetData( 478 [in, unique] FORMATETC *pformatetc, 479 [in, unique] STGMEDIUM *pmedium, 480 [in] BOOL fRelease); 481} 482 483 484/***************************************************************************** 485 * IOleCache2 interface 486 */ 487[ 488 object, 489 uuid(00000128-0000-0000-c000-000000000046), 490 pointer_default(unique) 491] 492interface IOleCache2 : IOleCache 493{ 494 typedef [unique] IOleCache2 *LPOLECACHE2; 495 496 const DWORD UPDFCACHE_NODATACACHE = 0x00000001; 497 const DWORD UPDFCACHE_ONSAVECACHE = 0x00000002; 498 const DWORD UPDFCACHE_ONSTOPCACHE = 0x00000004; 499 const DWORD UPDFCACHE_NORMALCACHE = 0x00000008; 500 const DWORD UPDFCACHE_IFBLANK = 0x00000010; 501 const DWORD UPDFCACHE_ONLYIFBLANK = 0x80000000; 502 503 const DWORD UPDFCACHE_IFBLANKORONSAVECACHE = (UPDFCACHE_IFBLANK | UPDFCACHE_ONSAVECACHE); 504 const DWORD UPDFCACHE_ALL = ((DWORD)(~(UPDFCACHE_ONLYIFBLANK))); 505 const DWORD UPDFCACHE_ALLBUTNODATACACHE = (UPDFCACHE_ALL & ((DWORD)(~UPDFCACHE_NODATACACHE))); 506 507 typedef enum tagDISCARDCACHE 508 { 509 DISCARDCACHE_SAVEIFDIRTY = 0, 510 DISCARDCACHE_NOSAVE = 1 511 } DISCARDCACHE; 512 513 [local] 514 HRESULT UpdateCache( 515 [in] LPDATAOBJECT pDataObject, 516 [in] DWORD grfUpdf, 517 [in] LPVOID pReserved); 518 519 [call_as(UpdateCache)] 520 HRESULT RemoteUpdateCache( 521 [in] LPDATAOBJECT pDataObject, 522 [in] DWORD grfUpdf, 523 [in] LONG_PTR pReserved); 524 525 HRESULT DiscardCache( 526 [in] DWORD dwDiscardOptions); 527} 528 529 530/***************************************************************************** 531 * IOleCacheControl interface 532 */ 533[ 534 object, 535 uuid(00000129-0000-0000-c000-000000000046) 536] 537interface IOleCacheControl : IUnknown 538{ 539 typedef [unique] IOleCacheControl *LPOLECACHECONTROL; 540 541 HRESULT OnRun( 542 LPDATAOBJECT pDataObject); 543 544 HRESULT OnStop(); 545} 546 547 548/***************************************************************************** 549 * IEnumOLEVERB interface 550 */ 551[ 552 object, 553 uuid(00000104-0000-0000-c000-000000000046), 554 pointer_default(unique) 555] 556interface IEnumOLEVERB : IUnknown 557{ 558 typedef [unique] IEnumOLEVERB *LPENUMOLEVERB; 559 560 typedef struct tagOLEVERB 561 { 562 LONG lVerb; 563 LPOLESTR lpszVerbName; 564 DWORD fuFlags; 565 DWORD grfAttribs; 566 } OLEVERB, *LPOLEVERB; 567 568 typedef enum tagOLEVERBATTRIB 569 { 570 OLEVERBATTRIB_NEVERDIRTIES = 1, 571 OLEVERBATTRIB_ONCONTAINERMENU = 2 572 } OLEVERBATTRIB; 573 574 [local] 575 HRESULT Next( 576 [in] ULONG celt, 577 [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt, 578 [out] ULONG *pceltFetched); 579 580 [call_as(Next)] 581 HRESULT RemoteNext( 582 [in] ULONG celt, 583 [out, size_is(celt), length_is(*pceltFetched)] LPOLEVERB rgelt, 584 [out] ULONG *pceltFetched); 585 586 HRESULT Skip( 587 [in] ULONG celt); 588 589 HRESULT Reset(); 590 591 HRESULT Clone( 592 [out] IEnumOLEVERB **ppenum); 593} 594 595 596/***************************************************************************** 597 * IOleObject interface 598 */ 599[ 600 object, 601 uuid(00000112-0000-0000-c000-000000000046), 602 pointer_default(unique) 603] 604interface IOleObject : IUnknown 605{ 606 typedef [unique] IOleObject *LPOLEOBJECT; 607 608 typedef enum tagOLEGETMONIKER 609 { 610 OLEGETMONIKER_ONLYIFTHERE = 1, 611 OLEGETMONIKER_FORCEASSIGN = 2, 612 OLEGETMONIKER_UNASSIGN = 3, 613 OLEGETMONIKER_TEMPFORUSER = 4 614 } OLEGETMONIKER; 615 616 typedef enum tagOLEWHICHMK 617 { 618 OLEWHICHMK_CONTAINER = 1, 619 OLEWHICHMK_OBJREL = 2, 620 OLEWHICHMK_OBJFULL = 3 621 } OLEWHICHMK; 622 623 typedef enum tagUSERCLASSTYPE 624 { 625 USERCLASSTYPE_FULL = 1, 626 USERCLASSTYPE_SHORT = 2, 627 USERCLASSTYPE_APPNAME = 3 628 } USERCLASSTYPE; 629 630 typedef enum tagOLEMISC 631 { 632 OLEMISC_RECOMPOSEONRESIZE = 0x1, 633 OLEMISC_ONLYICONIC = 0x2, 634 OLEMISC_INSERTNOTREPLACE = 0x4, 635 OLEMISC_STATIC = 0x8, 636 OLEMISC_CANTLINKINSIDE = 0x10, 637 OLEMISC_CANLINKBYOLE1 = 0x20, 638 OLEMISC_ISLINKOBJECT = 0x40, 639 OLEMISC_INSIDEOUT = 0x80, 640 OLEMISC_ACTIVATEWHENVISIBLE = 0x100, 641 OLEMISC_RENDERINGISDEVICEINDEPENDENT = 0x200, 642 OLEMISC_INVISIBLEATRUNTIME = 0x400, 643 OLEMISC_ALWAYSRUN = 0x800, 644 OLEMISC_ACTSLIKEBUTTON = 0x1000, 645 OLEMISC_ACTSLIKELABEL = 0x2000, 646 OLEMISC_NOUIACTIVATE = 0x4000, 647 OLEMISC_ALIGNABLE = 0x8000, 648 OLEMISC_SIMPLEFRAME = 0x10000, 649 OLEMISC_SETCLIENTSITEFIRST = 0x20000, 650 OLEMISC_IMEMODE = 0x40000, 651 OLEMISC_IGNOREACTIVATEWHENVISIBLE = 0x80000, 652 OLEMISC_WANTSTOMENUMERGE = 0x100000, 653 OLEMISC_SUPPORTSMULTILEVELUNDO = 0x200000 654 } OLEMISC; 655 656 typedef enum tagOLECLOSE 657 { 658 OLECLOSE_SAVEIFDIRTY = 0, 659 OLECLOSE_NOSAVE = 1, 660 OLECLOSE_PROMPTSAVE = 2 661 } OLECLOSE; 662 663 HRESULT SetClientSite( 664 [in, unique] IOleClientSite *pClientSite); 665 666 HRESULT GetClientSite( 667 [out] IOleClientSite **ppClientSite); 668 669 HRESULT SetHostNames( 670 [in] LPCOLESTR szContainerApp, 671 [in, unique] LPCOLESTR szContainerObj); 672 673 HRESULT Close( 674 [in] DWORD dwSaveOption); 675 676 HRESULT SetMoniker( 677 [in] DWORD dwWhichMoniker, 678 [in, unique] IMoniker *pmk); 679 680 HRESULT GetMoniker( 681 [in] DWORD dwAssign, 682 [in] DWORD dwWhichMoniker, 683 [out] IMoniker **ppmk); 684 685 HRESULT InitFromData( 686 [in, unique] IDataObject *pDataObject, 687 [in] BOOL fCreation, 688 [in] DWORD dwReserved); 689 690 HRESULT GetClipboardData( 691 [in] DWORD dwReserved, 692 [out] IDataObject **ppDataObject); 693 694 HRESULT DoVerb( 695 [in] LONG iVerb, 696 [in, unique] LPMSG lpmsg, 697 [in, unique] IOleClientSite *pActiveSite, 698 [in] LONG lindex, 699 [in] HWND hwndParent, 700 [in, unique] LPCRECT lprcPosRect); 701 702 HRESULT EnumVerbs( 703 [out] IEnumOLEVERB **ppEnumOleVerb); 704 705 HRESULT Update(); 706 707 HRESULT IsUpToDate(); 708 709 HRESULT GetUserClassID( 710 [out] CLSID *pClsid); 711 712 HRESULT GetUserType( 713 [in] DWORD dwFormOfType, 714 [out] LPOLESTR *pszUserType); 715 716 HRESULT SetExtent( 717 [in] DWORD dwDrawAspect, 718 [in] SIZEL *psizel); 719 720 HRESULT GetExtent( 721 [in] DWORD dwDrawAspect, 722 [out] SIZEL *psizel); 723 724 HRESULT Advise( 725 [in, unique] IAdviseSink *pAdvSink, 726 [out] DWORD *pdwConnection); 727 728 HRESULT Unadvise( 729 [in] DWORD dwConnection); 730 731 HRESULT EnumAdvise( 732 [out] IEnumSTATDATA **ppenumAdvise); 733 734 HRESULT GetMiscStatus( 735 [in] DWORD dwAspect, 736 [out] DWORD *pdwStatus); 737 738 HRESULT SetColorScheme( 739 [in] LOGPALETTE *pLogpal); 740} 741 742 743/***************************************************************************** 744 * IOleAdviseHolder interface 745 */ 746[ 747 local, 748 object, 749 uuid(00000111-0000-0000-c000-000000000046) 750] 751interface IOleAdviseHolder : IUnknown 752{ 753 typedef [unique] IOleAdviseHolder * LPOLEADVISEHOLDER; 754 755 HRESULT Advise( 756 [in, unique] IAdviseSink *pAdvise, 757 [out] DWORD *pdwConnection); 758 759 HRESULT Unadvise( 760 [in] DWORD dwConnection); 761 762 HRESULT EnumAdvise( 763 [out] IEnumSTATDATA **ppenumAdvise); 764 765 HRESULT SendOnRename( 766 [in, unique] IMoniker *pmk); 767 768 HRESULT SendOnSave(); 769 HRESULT SendOnClose(); 770} 771 772 773/***************************************************************************** 774 * IContinue interface 775 */ 776[ 777 object, 778 uuid(0000012a-0000-0000-c000-000000000046) 779] 780interface IContinue : IUnknown 781{ 782 HRESULT FContinue(); 783} 784 785 786/***************************************************************************** 787 * IViewObject interface 788 */ 789[ 790 object, 791 uuid(0000010d-0000-0000-c000-000000000046) 792] 793interface IViewObject : IUnknown 794{ 795 typedef [unique] IViewObject *LPVIEWOBJECT; 796 797 [local] 798 HRESULT Draw( 799 [in] DWORD dwDrawAspect, 800 [in] LONG lindex, 801 [in, unique] void * pvAspect, 802 [in, unique] DVTARGETDEVICE *ptd, 803 [in] HDC hdcTargetDev, 804 [in] HDC hdcDraw, 805 [in] LPCRECTL lprcBounds, 806 [in, unique] LPCRECTL lprcWBounds, 807 [in] BOOL (*pfnContinue)(ULONG_PTR dwContinue), 808 [in] ULONG_PTR dwContinue); 809 810 [call_as(Draw)] 811 HRESULT RemoteDraw( 812 [in] DWORD dwDrawAspect, 813 [in] LONG lindex, 814 [in] ULONG_PTR pvAspect, 815 [in, unique] DVTARGETDEVICE *ptd, 816 [in] ULONG_PTR hdcTargetDev, 817 [in] ULONG_PTR hdcDraw, 818 [in] LPCRECTL lprcBounds, 819 [in, unique] LPCRECTL lprcWBounds, 820 [in] IContinue *pContinue); 821 822 [local] 823 HRESULT GetColorSet( 824 [in] DWORD dwDrawAspect, 825 [in] LONG lindex, 826 [in, unique] void *pvAspect, 827 [in, unique] DVTARGETDEVICE *ptd, 828 [in] HDC hicTargetDev, 829 [out] LOGPALETTE **ppColorSet); 830 831 [call_as(GetColorSet)] 832 HRESULT RemoteGetColorSet( 833 [in] DWORD dwDrawAspect, 834 [in] LONG lindex, 835 [in] ULONG_PTR pvAspect, 836 [in, unique] DVTARGETDEVICE *ptd, 837 [in] ULONG_PTR hicTargetDev, 838 [out] LOGPALETTE **ppColorSet); 839 840 [local] 841 HRESULT Freeze( 842 [in] DWORD dwDrawAspect, 843 [in] LONG lindex, 844 [in, unique] void *pvAspect, 845 [out] DWORD *pdwFreeze); 846 847 [call_as(Freeze)] 848 HRESULT RemoteFreeze( 849 [in] DWORD dwDrawAspect, 850 [in] LONG lindex, 851 [in] ULONG_PTR pvAspect, 852 [out] DWORD *pdwFreeze); 853 854 HRESULT Unfreeze( 855 [in] DWORD dwFreeze); 856 857 HRESULT SetAdvise( 858 [in] DWORD aspects, 859 [in] DWORD advf, 860 [in, unique] IAdviseSink *pAdvSink); 861 862 [local] 863 HRESULT GetAdvise( 864 [out, unique] DWORD *pAspects, 865 [out, unique] DWORD *pAdvf, 866 [out] IAdviseSink **ppAdvSink); 867 868 [call_as(GetAdvise)] 869 HRESULT RemoteGetAdvise( 870 [out] DWORD *pAspects, 871 [out] DWORD *pAdvf, 872 [out] IAdviseSink **ppAdvSink); 873} 874 875 876/***************************************************************************** 877 * IViewObject2 interface 878 */ 879[ 880 object, 881 uuid(00000127-0000-0000-c000-000000000046) 882] 883interface IViewObject2 : IViewObject 884{ 885 typedef [unique] IViewObject2 *LPVIEWOBJECT2; 886 887 HRESULT GetExtent( 888 [in] DWORD dwDrawAspect, 889 [in] LONG lindex, 890 [in, unique] DVTARGETDEVICE* ptd, 891 [out] LPSIZEL lpsizel); 892} 893 894 895/***************************************************************************** 896 * IDropSource interface 897 */ 898[ 899 local, 900 object, 901 uuid(00000121-0000-0000-c000-000000000046) 902] 903interface IDropSource : IUnknown 904{ 905 typedef [unique] IDropSource *LPDROPSOURCE; 906 907 HRESULT QueryContinueDrag( 908 [in] BOOL fEscapePressed, 909 [in] DWORD grfKeyState); 910 911 HRESULT GiveFeedback( 912 [in] DWORD dwEffect); 913} 914 915 916/***************************************************************************** 917 * IDropTarget interface 918 */ 919[ 920 object, 921 uuid(00000122-0000-0000-c000-000000000046), 922 pointer_default(unique) 923] 924interface IDropTarget : IUnknown 925{ 926 typedef [unique] IDropTarget *LPDROPTARGET; 927 928 const DWORD MK_ALT = 0x20; 929 const DWORD DROPEFFECT_NONE = 0; 930 const DWORD DROPEFFECT_COPY = 1; 931 const DWORD DROPEFFECT_MOVE = 2; 932 const DWORD DROPEFFECT_LINK = 4; 933 const DWORD DROPEFFECT_SCROLL = 0x80000000; 934 const DWORD DD_DEFSCROLLINSET = 11; 935 const DWORD DD_DEFSCROLLDELAY = 50; 936 const DWORD DD_DEFSCROLLINTERVAL = 50; 937 const DWORD DD_DEFDRAGDELAY = 200; 938 const DWORD DD_DEFDRAGMINDIST = 2; 939 940 HRESULT DragEnter( 941 [in, unique] IDataObject *pDataObj, 942 [in] DWORD grfKeyState, 943 [in] POINTL pt, 944 [in, out] DWORD *pdwEffect); 945 946 HRESULT DragOver( 947 [in] DWORD grfKeyState, 948 [in] POINTL pt, 949 [in, out] DWORD *pdwEffect); 950 951 HRESULT DragLeave(); 952 953 HRESULT Drop( 954 [in, unique] IDataObject *pDataObj, 955 [in] DWORD grfKeyState, 956 [in] POINTL pt, 957 [in, out] DWORD *pdwEffect); 958} 959 960/***************************************************************************** 961 * IDropSourceNotify interface 962 */ 963[ 964 object, 965 uuid(0000012b-0000-0000-c000-000000000046), 966 pointer_default(unique), 967 local 968] 969interface IDropSourceNotify : IUnknown 970{ 971 HRESULT DragTargetEnter( [in] HWND hwnd ); 972 HRESULT DragTargetLeave( void ); 973} 974