|
|
1.1 ! root 1: /* ! 2: * OLE2UI.H ! 3: * ! 4: * Published definitions, structures, types, and function prototypes for the ! 5: * OLE 2.0 User Interface support library. ! 6: * ! 7: * Copyright (c)1993 Microsoft Corporation, All Rights Reserved ! 8: */ ! 9: ! 10: ! 11: #ifndef _OLE2UI_H_ ! 12: #define _OLE2UI_H_ ! 13: ! 14: #ifndef RC_INVOKED ! 15: #pragma message ("Including OLE2UI.H from " __FILE__) ! 16: #endif //RC_INVOKED ! 17: ! 18: #ifdef WIN32 ! 19: #define _INC_OLE ! 20: #define __RPC_H__ ! 21: #endif ! 22: ! 23: #define NONAMELESSUNION // use strict ANSI standard (for DVOBJ.H) ! 24: ! 25: #include <windows.h> ! 26: #include <shellapi.h> ! 27: #include <ole2.h> ! 28: #include <string.h> ! 29: #include <dlgs.h> //For fileopen dlg; standard include ! 30: #include "olestd.h" ! 31: #include "uiclass.h" // Contains class names for custom controls ! 32: // -- see below ! 33: ! 34: #ifdef __TURBOC__ ! 35: #define _getcwd getcwd ! 36: #define _itoa itoa ! 37: #define __max max ! 38: #define _find_t find_t ! 39: #endif // __TURBOC__ ! 40: ! 41: #ifdef WIN32 ! 42: #define _fmemset memset ! 43: #define _fmemcpy memcpy ! 44: #define _fmemcmp memcmp ! 45: #define _fstrcpy strcpy ! 46: #define _fstrlen strlen ! 47: #define _fstrrchr strrchr ! 48: #define _fstrtok strtok ! 49: #define lstrcpyn strncpy ! 50: ! 51: // BUGBUG32: isspace function does not seem to work properly ! 52: #undef isspace ! 53: #define isspace(j) (j==' ' || j=='\t' || j=='\n') ! 54: #endif // WIN32 ! 55: ! 56: #if !defined( EXPORT ) ! 57: #ifdef WIN32 ! 58: #define EXPORT ! 59: #else ! 60: #define EXPORT __export ! 61: #endif // WIN32 ! 62: #endif // !EXPORT ! 63: ! 64: /* ! 65: * Initialization / Uninitialization routines. OleUIInitialize ! 66: * MUST be called prior to using any functions in OLE2UI. ! 67: */ ! 68: ! 69: STDAPI_(BOOL) OleUIInitialize(HINSTANCE); ! 70: STDAPI_(BOOL) OleUIUnInitialize(void); // Must be called when completed using functions in OLE2UI ! 71: ! 72: //Dialog Identifiers as passed in Help messages to identify the source. ! 73: #define IDD_INSERTOBJECT 1000 ! 74: #define IDD_CHANGEICON 1001 ! 75: #define IDD_CONVERT 1002 ! 76: #define IDD_PASTESPECIAL 1003 ! 77: #define IDD_EDITLINKS 1004 ! 78: #define IDD_FILEOPEN 1005 ! 79: #define IDD_BUSY 1006 ! 80: #define IDD_LINKSOURCEUNAVAILABLE 1007 ! 81: #define IDD_CANNOTUPDATELINK 1008 ! 82: #define IDD_SERVERNOTREG 1009 ! 83: #define IDD_LINKTYPECHANGED 1010 ! 84: #define IDD_SERVERNOTFOUND 1011 ! 85: #define IDD_UPDATELINKS 1012 ! 86: #define IDD_OUTOFMEMORY 1013 ! 87: ! 88: ! 89: // Stringtable identifers ! 90: #define IDS_OLE2UIUNKNOWN 300 ! 91: #define IDS_OLE2UILINK 301 ! 92: #define IDS_OLE2UIOBJECT 302 ! 93: #define IDS_OLE2UIEDIT 303 ! 94: #define IDS_OLE2UICONVERT 304 ! 95: #define IDS_OLE2UIEDITLINKCMD_1VERB 305 ! 96: #define IDS_OLE2UIEDITOBJECTCMD_1VERB 306 ! 97: #define IDS_OLE2UIEDITLINKCMD_NVERB 307 ! 98: #define IDS_OLE2UIEDITOBJECTCMD_NVERB 308 ! 99: #define IDS_OLE2UIEDITNOOBJCMD 309 ! 100: #define IDS_DEFICONLABEL 310 // def. icon label (usu. "Document") ! 101: ! 102: ! 103: #define IDS_FILTERS 64 ! 104: #define IDS_ICONFILTERS 65 ! 105: #define IDS_BROWSE 66 ! 106: ! 107: //Resource identifiers for bitmaps ! 108: #define IDB_RESULTSEGA 10 ! 109: #define IDB_RESULTSVGA 11 ! 110: #define IDB_RESULTSHIRESVGA 12 ! 111: ! 112: ! 113: //Missing from windows.h ! 114: #ifndef PVOID ! 115: typedef VOID *PVOID; ! 116: #endif ! 117: ! 118: ! 119: //Hook type used in all structures. ! 120: typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM); ! 121: ! 122: ! 123: //Strings for registered messages ! 124: #define SZOLEUI_MSG_HELP "OLEUI_MSG_HELP" ! 125: #define SZOLEUI_MSG_ENDDIALOG "OLEUI_MSG_ENDDIALOG" ! 126: #define SZOLEUI_MSG_BROWSE "OLEUI_MSG_BROWSE" ! 127: #define SZOLEUI_MSG_CHANGEICON "OLEUI_MSG_CHANGEICON" ! 128: #define SZOLEUI_MSG_CLOSEBUSYDIALOG "OLEUI_MSG_CLOSEBUSYDIALOG" ! 129: #define SZOLEUI_MSG_FILEOKSTRING "OLEUI_MSG_FILEOKSTRING" ! 130: ! 131: // Define the classname strings. The strings below define the custom ! 132: // control classnames for the controls used in the UI dialogs. ! 133: // ! 134: // ************************************************************** ! 135: // These classnames must be distinct for each application ! 136: // which uses this library, or your application will generate an ! 137: // fatal error under the debugging version of Windows 3.1. ! 138: // ************************************************************** ! 139: // ! 140: // The MAKEFILE for this library automatically generates a file ! 141: // uiclass.h which contains distinct definitions for these ! 142: // classname strings, as long as you use a distinct name when ! 143: // you build the library. See the MAKEFILE for more information ! 144: // on setting the name of the library. ! 145: ! 146: #define SZCLASSICONBOX OLEUICLASS1 ! 147: #define SZCLASSRESULTIMAGE OLEUICLASS2 ! 148: ! 149: //Standard error definitions ! 150: #define OLEUI_FALSE 0 ! 151: #define OLEUI_SUCCESS 1 //No error, same as OLEUI_OK ! 152: #define OLEUI_OK 1 //OK button pressed ! 153: #define OLEUI_CANCEL 2 //Cancel button pressed ! 154: ! 155: #define OLEUI_ERR_STANDARDMIN 100 ! 156: #define OLEUI_ERR_STRUCTURENULL 101 //Standard field validation ! 157: #define OLEUI_ERR_STRUCTUREINVALID 102 ! 158: #define OLEUI_ERR_CBSTRUCTINCORRECT 103 ! 159: #define OLEUI_ERR_HWNDOWNERINVALID 104 ! 160: #define OLEUI_ERR_LPSZCAPTIONINVALID 105 ! 161: #define OLEUI_ERR_LPFNHOOKINVALID 106 ! 162: #define OLEUI_ERR_HINSTANCEINVALID 107 ! 163: #define OLEUI_ERR_LPSZTEMPLATEINVALID 108 ! 164: #define OLEUI_ERR_HRESOURCEINVALID 109 ! 165: ! 166: #define OLEUI_ERR_FINDTEMPLATEFAILURE 110 //Initialization errors ! 167: #define OLEUI_ERR_LOADTEMPLATEFAILURE 111 ! 168: #define OLEUI_ERR_DIALOGFAILURE 112 ! 169: #define OLEUI_ERR_LOCALMEMALLOC 113 ! 170: #define OLEUI_ERR_GLOBALMEMALLOC 114 ! 171: #define OLEUI_ERR_LOADSTRING 115 ! 172: ! 173: #define OLEUI_ERR_STANDARDMAX 116 //Start here for specific errors. ! 174: ! 175: ! 176: ! 177: //Help Button Identifier ! 178: #define ID_OLEUIHELP 99 ! 179: ! 180: // Help button for fileopen.dlg (need this for resizing) 1038 is pshHelp ! 181: #define IDHELP 1038 ! 182: ! 183: // Static text control (use this instead of -1 so things work correctly for ! 184: // localization ! 185: #define ID_STATIC 98 ! 186: ! 187: //Maximum key size we read from the RegDB. ! 188: #define OLEUI_CCHKEYMAX 256 // make any changes to this in geticon.c too ! 189: ! 190: //Maximum verb length and length of Object menu ! 191: #define OLEUI_CCHVERBMAX 32 ! 192: #define OLEUI_OBJECTMENUMAX 256 ! 193: ! 194: //Maximum MS-DOS pathname. ! 195: #define OLEUI_CCHPATHMAX 256 // make any changes to this in geticon.c too ! 196: #define OLEUI_CCHFILEMAX 13 ! 197: ! 198: //Icon label length ! 199: #define OLEUI_CCHLABELMAX 40 // make any changes to this in geticon.c too ! 200: ! 201: //Length of the CLSID string ! 202: #define OLEUI_CCHCLSIDSTRING 39 ! 203: ! 204: ! 205: /* ! 206: * What follows here are first function prototypes for general utility ! 207: * functions, then sections laid out by dialog. Each dialog section ! 208: * defines the dialog structure, the API prototype, flags for the dwFlags ! 209: * field, the dialog-specific error values, and dialog control IDs (for ! 210: * hooks and custom templates. ! 211: */ ! 212: ! 213: ! 214: //Miscellaneous utility functions. ! 215: STDAPI_(BOOL) OleUIAddVerbMenu(LPOLEOBJECT lpOleObj, ! 216: LPSTR lpszShortType, ! 217: HMENU hMenu, ! 218: UINT uPos, ! 219: UINT uIDVerbMin, ! 220: BOOL bAddConvert, ! 221: UINT idConvert, ! 222: HMENU FAR *lphMenu); ! 223: ! 224: //Metafile utility functions ! 225: STDAPI_(HGLOBAL) OleUIMetafilePictFromIconAndLabel(HICON, LPSTR, LPSTR, UINT); ! 226: STDAPI_(void) OleUIMetafilePictIconFree(HGLOBAL); ! 227: STDAPI_(BOOL) OleUIMetafilePictIconDraw(HDC, LPRECT, HGLOBAL, BOOL); ! 228: STDAPI_(UINT) OleUIMetafilePictExtractLabel(HGLOBAL, LPSTR, UINT, LPDWORD); ! 229: STDAPI_(HICON) OleUIMetafilePictExtractIcon(HGLOBAL); ! 230: STDAPI_(BOOL) OleUIMetafilePictExtractIconSource(HGLOBAL,LPSTR,UINT FAR *); ! 231: ! 232: ! 233: ! 234: ! 235: ! 236: /************************************************************************* ! 237: ** INSERT OBJECT DIALOG ! 238: *************************************************************************/ ! 239: ! 240: ! 241: typedef struct tagOLEUIINSERTOBJECT ! 242: { ! 243: //These IN fields are standard across all OLEUI dialog functions. ! 244: DWORD cbStruct; //Structure Size ! 245: DWORD dwFlags; //IN-OUT: Flags ! 246: HWND hWndOwner; //Owning window ! 247: LPCSTR lpszCaption; //Dialog caption bar contents ! 248: LPFNOLEUIHOOK lpfnHook; //Hook callback ! 249: LPARAM lCustData; //Custom data to pass to hook ! 250: HINSTANCE hInstance; //Instance for customized template name ! 251: LPCSTR lpszTemplate; //Customized template name ! 252: HRSRC hResource; //Customized template handle ! 253: ! 254: //Specifics for OLEUIINSERTOBJECT. All are IN-OUT unless otherwise spec. ! 255: CLSID clsid; //Return space for class ID ! 256: LPSTR lpszFile; //Filename for inserts or links ! 257: UINT cchFile; //Size of lpszFile buffer: OLEUI_CCHPATHMAX ! 258: UINT cClsidExclude; //IN only: CLSIDs in lpClsidExclude ! 259: LPCLSID lpClsidExclude; //List of CLSIDs to exclude from listing. ! 260: ! 261: //Specific to create objects if flags say so ! 262: IID iid; //Requested interface on creation. ! 263: DWORD oleRender; //Rendering option ! 264: LPFORMATETC lpFormatEtc; //Desired format ! 265: LPOLECLIENTSITE lpIOleClientSite; //Site to be use for the object. ! 266: LPSTORAGE lpIStorage; //Storage used for the object ! 267: LPVOID FAR *ppvObj; //Where the object is returned. ! 268: SCODE sc; //Result of creation calls. ! 269: HGLOBAL hMetaPict; //OUT: METAFILEPICT containing iconic aspect. ! 270: //IFF we couldn't stuff it in the cache. ! 271: } OLEUIINSERTOBJECT, *POLEUIINSERTOBJECT, FAR *LPOLEUIINSERTOBJECT; ! 272: ! 273: //API prototype ! 274: STDAPI_(UINT) OleUIInsertObject(LPOLEUIINSERTOBJECT); ! 275: ! 276: ! 277: //Insert Object flags ! 278: #define IOF_SHOWHELP 0x00000001L ! 279: #define IOF_SELECTCREATENEW 0x00000002L ! 280: #define IOF_SELECTCREATEFROMFILE 0x00000004L ! 281: #define IOF_CHECKLINK 0x00000008L ! 282: #define IOF_CHECKDISPLAYASICON 0x00000010L ! 283: #define IOF_CREATENEWOBJECT 0x00000020L ! 284: #define IOF_CREATEFILEOBJECT 0x00000040L ! 285: #define IOF_CREATELINKOBJECT 0x00000080L ! 286: #define IOF_DISABLELINK 0x00000100L ! 287: #define IOF_VERIFYSERVERSEXIST 0x00000200L ! 288: ! 289: ! 290: //Insert Object specific error codes ! 291: #define OLEUI_IOERR_LPSZFILEINVALID (OLEUI_ERR_STANDARDMAX+0) ! 292: #define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1) ! 293: #define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2) ! 294: #define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3) ! 295: #define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4) ! 296: #define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5) ! 297: #define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6) ! 298: #define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7) ! 299: #define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8) ! 300: #define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9) ! 301: ! 302: ! 303: //Insert Object Dialog identifiers ! 304: #define ID_IO_CREATENEW 2100 ! 305: #define ID_IO_CREATEFROMFILE 2101 ! 306: #define ID_IO_LINKFILE 2102 ! 307: #define ID_IO_OBJECTTYPELIST 2103 ! 308: #define ID_IO_DISPLAYASICON 2104 ! 309: #define ID_IO_CHANGEICON 2105 ! 310: #define ID_IO_FILE 2106 ! 311: #define ID_IO_FILEDISPLAY 2107 ! 312: #define ID_IO_RESULTIMAGE 2108 ! 313: #define ID_IO_RESULTTEXT 2109 ! 314: #define ID_IO_ICONDISPLAY 2110 ! 315: #define ID_IO_OBJECTTYPETEXT 2111 ! 316: #define ID_IO_FILETEXT 2112 ! 317: #define ID_IO_FILETYPE 2113 ! 318: ! 319: // Strings in OLE2UI resources ! 320: #define IDS_IORESULTNEW 256 ! 321: #define IDS_IORESULTNEWICON 257 ! 322: #define IDS_IORESULTFROMFILE1 258 ! 323: #define IDS_IORESULTFROMFILE2 259 ! 324: #define IDS_IORESULTFROMFILEICON2 260 ! 325: #define IDS_IORESULTLINKFILE1 261 ! 326: #define IDS_IORESULTLINKFILE2 262 ! 327: #define IDS_IORESULTLINKFILEICON1 263 ! 328: #define IDS_IORESULTLINKFILEICON2 264 ! 329: ! 330: /************************************************************************* ! 331: ** PASTE SPECIAL DIALOG ! 332: *************************************************************************/ ! 333: ! 334: // Maximum number of link types ! 335: #define PS_MAXLINKTYPES 8 ! 336: ! 337: //NOTE: OLEUIPASTEENTRY and OLEUIPASTEFLAG structs are defined in OLESTD.H ! 338: ! 339: typedef struct tagOLEUIPASTESPECIAL ! 340: { ! 341: //These IN fields are standard across all OLEUI dialog functions. ! 342: DWORD cbStruct; //Structure Size ! 343: DWORD dwFlags; //IN-OUT: Flags ! 344: HWND hWndOwner; //Owning window ! 345: LPCSTR lpszCaption; //Dialog caption bar contents ! 346: LPFNOLEUIHOOK lpfnHook; //Hook callback ! 347: LPARAM lCustData; //Custom data to pass to hook ! 348: HINSTANCE hInstance; //Instance for customized template name ! 349: LPCSTR lpszTemplate; //Customized template name ! 350: HRSRC hResource; //Customized template handle ! 351: ! 352: //Specifics for OLEUIPASTESPECIAL. ! 353: ! 354: //IN fields ! 355: LPDATAOBJECT lpSrcDataObj; //Source IDataObject* (on the clipboard) for data to paste ! 356: ! 357: LPOLEUIPASTEENTRY arrPasteEntries; //OLEUIPASTEENTRY array which specifies acceptable formats. See ! 358: // OLEUIPASTEENTRY for more information. ! 359: int cPasteEntries; //Number of OLEUIPASTEENTRY array entries ! 360: ! 361: UINT FAR *arrLinkTypes; //List of link types that are acceptable. Link types are referred ! 362: // to using OLEUIPASTEFLAGS in arrPasteEntries ! 363: int cLinkTypes; //Number of link types ! 364: ! 365: //OUT fields ! 366: int nSelectedIndex; //Index of arrPasteEntries[] that the user selected ! 367: BOOL fLink; //Indicates if Paste or Paste Link was selected by the user ! 368: HGLOBAL hMetaPict; //Handle to Metafile containing icon and icon title selected by the user ! 369: // Use the Metafile utility functions defined in this header to ! 370: // manipulate hMetaPict ! 371: } OLEUIPASTESPECIAL, *POLEUIPASTESPECIAL, FAR *LPOLEUIPASTESPECIAL; ! 372: ! 373: ! 374: //API to bring up PasteSpecial dialog ! 375: STDAPI_(UINT) OleUIPasteSpecial(LPOLEUIPASTESPECIAL); ! 376: ! 377: ! 378: //Paste Special flags ! 379: // Show Help button. IN flag. ! 380: #define PSF_SHOWHELP 0x00000001L ! 381: // Select Paste radio button at dialog startup. This is the default if PSF_SELECTPASTE or PSF_SELECTPASTELINK ! 382: // are not specified. Also specifies state of button on dialog termination. IN/OUT flag. ! 383: #define PSF_SELECTPASTE 0x00000002L ! 384: // Select PasteLink radio button at dialog startup. Also specifies state of button on dialog termination. ! 385: // IN/OUT flag. ! 386: #define PSF_SELECTPASTELINK 0x00000004L ! 387: // Specfies if DisplayAsIcon button was checked on dialog termination. OUT flag. ! 388: #define PSF_CHECKDISPLAYASICON 0x00000008L ! 389: ! 390: ! 391: //Paste Special specific error codes ! 392: #define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0) ! 393: #define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1) ! 394: #define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2) ! 395: #define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3) ! 396: ! 397: //Paste Special Dialog identifiers ! 398: #define ID_PS_PASTE 500 ! 399: #define ID_PS_PASTELINK 501 ! 400: #define ID_PS_SOURCETEXT 502 ! 401: #define ID_PS_PASTELIST 503 ! 402: #define ID_PS_PASTELINKLIST 504 ! 403: #define ID_PS_DISPLAYLIST 505 ! 404: #define ID_PS_DISPLAYASICON 506 ! 405: #define ID_PS_ICONDISPLAY 507 ! 406: #define ID_PS_CHANGEICON 508 ! 407: #define ID_PS_RESULTIMAGE 509 ! 408: #define ID_PS_RESULTTEXT 510 ! 409: #define ID_PS_RESULTGROUP 511 ! 410: #define ID_PS_STXSOURCE 512 ! 411: #define ID_PS_STXAS 513 ! 412: ! 413: // Paste Special String IDs ! 414: #define IDS_PSPASTEDATA 400 ! 415: #define IDS_PSPASTEOBJECT 401 ! 416: #define IDS_PSPASTEOBJECTASICON 402 ! 417: #define IDS_PSPASTELINKDATA 403 ! 418: #define IDS_PSPASTELINKOBJECT 404 ! 419: #define IDS_PSPASTELINKOBJECTASICON 405 ! 420: #define IDS_PSNONOLE 406 ! 421: #define IDS_PSUNKNOWNTYPE 407 ! 422: #define IDS_PSUNKNOWNSRC 408 ! 423: #define IDS_PSUNKNOWNAPP 409 ! 424: ! 425: ! 426: /************************************************************************* ! 427: ** EDIT LINKS DIALOG ! 428: *************************************************************************/ ! 429: ! 430: ! 431: ! 432: /* IOleUILinkContainer Interface ! 433: ** ----------------------------- ! 434: ** This interface must be implemented by container applications that ! 435: ** want to use the EditLinks dialog. the EditLinks dialog calls back ! 436: ** to the container app to perform the OLE functions to manipulate ! 437: ** the links within the container. ! 438: */ ! 439: ! 440: #define LPOLEUILINKCONTAINER IOleUILinkContainer FAR* ! 441: ! 442: #undef INTERFACE ! 443: #define INTERFACE IOleUILinkContainer ! 444: ! 445: DECLARE_INTERFACE_(IOleUILinkContainer, IUnknown) ! 446: { ! 447: //*** IUnknown methods ***/ ! 448: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE; ! 449: STDMETHOD_(ULONG,AddRef) (THIS) PURE; ! 450: STDMETHOD_(ULONG,Release) (THIS) PURE; ! 451: ! 452: STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE; ! 453: STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE; ! 454: STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink, DWORD FAR* lpdwUpdateOpt) PURE; ! 455: STDMETHOD(SetLinkSource) (THIS_ ! 456: DWORD dwLink, ! 457: LPSTR lpszDisplayName, ! 458: ULONG lenFileName, ! 459: ULONG FAR* pchEaten, ! 460: BOOL fValidateSource) PURE; ! 461: STDMETHOD(GetLinkSource) (THIS_ ! 462: DWORD dwLink, ! 463: LPSTR FAR* lplpszDisplayName, ! 464: ULONG FAR* lplenFileName, ! 465: LPSTR FAR* lplpszFullLinkType, ! 466: LPSTR FAR* lplpszShortLinkType, ! 467: BOOL FAR* lpfSourceAvailable, ! 468: BOOL FAR* lpfIsSelected) PURE; ! 469: STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE; ! 470: STDMETHOD(UpdateLink) (THIS_ ! 471: DWORD dwLink, ! 472: BOOL fErrorMessage, ! 473: BOOL fErrorAction) PURE; ! 474: STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE; ! 475: }; ! 476: ! 477: ! 478: typedef struct tagOLEUIEDITLINKS ! 479: { ! 480: //These IN fields are standard across all OLEUI dialog functions. ! 481: DWORD cbStruct; //Structure Size ! 482: DWORD dwFlags; //IN-OUT: Flags ! 483: HWND hWndOwner; //Owning window ! 484: LPCSTR lpszCaption; //Dialog caption bar contents ! 485: LPFNOLEUIHOOK lpfnHook; //Hook callback ! 486: LPARAM lCustData; //Custom data to pass to hook ! 487: HINSTANCE hInstance; //Instance for customized template name ! 488: LPCSTR lpszTemplate; //Customized template name ! 489: HRSRC hResource; //Customized template handle ! 490: ! 491: //Specifics for OLEUI<STRUCT>. All are IN-OUT unless otherwise spec. ! 492: ! 493: LPOLEUILINKCONTAINER lpOleUILinkContainer; //IN: Interface to manipulate ! 494: //links in the container ! 495: } OLEUIEDITLINKS, *POLEUIEDITLINKS, FAR *LPOLEUIEDITLINKS; ! 496: ! 497: ! 498: //API Prototype ! 499: STDAPI_(UINT) OleUIEditLinks(LPOLEUIEDITLINKS); ! 500: ! 501: ! 502: // Edit Links flags ! 503: #define ELF_SHOWHELP 0x00000001L ! 504: ! 505: // Edit Links Dialog identifiers ! 506: #define ID_EL_CHANGESOURCE 201 ! 507: #define ID_EL_AUTOMATIC 202 ! 508: #define ID_EL_CLOSE 208 ! 509: #define ID_EL_CANCELLINK 209 ! 510: #define ID_EL_UPDATENOW 210 ! 511: #define ID_EL_OPENSOURCE 211 ! 512: #define ID_EL_MANUAL 212 ! 513: #define ID_EL_LINKSOURCE 216 ! 514: #define ID_EL_LINKTYPE 217 ! 515: #define ID_EL_UPDATE 218 ! 516: #define ID_EL_NULL -1 ! 517: #define ID_EL_LINKSLISTBOX 206 ! 518: #define ID_EL_HELP 207 ! 519: #define ID_EL_COL1 220 ! 520: #define ID_EL_COL2 221 ! 521: #define ID_EL_COL3 222 ! 522: ! 523: ! 524: ! 525: /************************************************************************* ! 526: ** CHANGE ICON DIALOG ! 527: *************************************************************************/ ! 528: ! 529: typedef struct tagOLEUICHANGEICON ! 530: { ! 531: //These IN fields are standard across all OLEUI dialog functions. ! 532: DWORD cbStruct; //Structure Size ! 533: DWORD dwFlags; //IN-OUT: Flags ! 534: HWND hWndOwner; //Owning window ! 535: LPCSTR lpszCaption; //Dialog caption bar contents ! 536: LPFNOLEUIHOOK lpfnHook; //Hook callback ! 537: LPARAM lCustData; //Custom data to pass to hook ! 538: HINSTANCE hInstance; //Instance for customized template name ! 539: LPCSTR lpszTemplate; //Customized template name ! 540: HRSRC hResource; //Customized template handle ! 541: ! 542: //Specifics for OLEUICHANGEICON. All are IN-OUT unless otherwise spec. ! 543: HGLOBAL hMetaPict; //Current and final image. Source of the ! 544: //icon is embedded in the metafile itself. ! 545: CLSID clsid; //IN only: class used to get Default icon ! 546: char szIconExe[OLEUI_CCHPATHMAX]; ! 547: int cchIconExe; ! 548: } OLEUICHANGEICON, *POLEUICHANGEICON, FAR *LPOLEUICHANGEICON; ! 549: ! 550: ! 551: //API prototype ! 552: STDAPI_(UINT) OleUIChangeIcon(LPOLEUICHANGEICON); ! 553: ! 554: ! 555: //Change Icon flags ! 556: #define CIF_SHOWHELP 0x00000001L ! 557: #define CIF_SELECTCURRENT 0x00000002L ! 558: #define CIF_SELECTDEFAULT 0x00000004L ! 559: #define CIF_SELECTFROMFILE 0x00000008L ! 560: #define CIF_USEICONEXE 0x0000000aL ! 561: ! 562: ! 563: //Change Icon specific error codes ! 564: #define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0) ! 565: #define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1) ! 566: #define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2) ! 567: ! 568: ! 569: //Change Icon Dialog identifiers ! 570: #define ID_GROUP 120 ! 571: #define ID_CURRENT 121 ! 572: #define ID_CURRENTICON 122 ! 573: #define ID_DEFAULT 123 ! 574: #define ID_DEFAULTICON 124 ! 575: #define ID_FROMFILE 125 ! 576: #define ID_FROMFILEEDIT 126 ! 577: #define ID_ICONLIST 127 ! 578: #define ID_LABEL 128 ! 579: #define ID_LABELEDIT 129 ! 580: #define ID_BROWSE 130 ! 581: #define ID_RESULTICON 132 ! 582: #define ID_RESULTLABEL 133 ! 583: ! 584: // Stringtable defines for Change Icon ! 585: #define IDS_CINOICONSINFILE 288 ! 586: #define IDS_CIINVALIDFILE 289 ! 587: #define IDS_CIFILEACCESS 290 ! 588: #define IDS_CIFILESHARE 291 ! 589: #define IDS_CIFILEOPENFAIL 292 ! 590: ! 591: ! 592: ! 593: /************************************************************************* ! 594: ** CONVERT DIALOG ! 595: *************************************************************************/ ! 596: ! 597: typedef struct tagOLEUICONVERT ! 598: { ! 599: //These IN fields are standard across all OLEUI dialog functions. ! 600: DWORD cbStruct; //Structure Size ! 601: DWORD dwFlags; //IN-OUT: Flags ! 602: HWND hWndOwner; //Owning window ! 603: LPCSTR lpszCaption; //Dialog caption bar contents ! 604: LPFNOLEUIHOOK lpfnHook; //Hook callback ! 605: LPARAM lCustData; //Custom data to pass to hook ! 606: HINSTANCE hInstance; //Instance for customized template name ! 607: LPCSTR lpszTemplate; //Customized template name ! 608: HRSRC hResource; //Customized template handle ! 609: ! 610: //Specifics for OLEUICONVERT. All are IN-OUT unless otherwise spec. ! 611: CLSID clsid; //Class ID sent in to dialog: IN only ! 612: CLSID clsidConvertDefault; //Class ID to use as convert default: IN only ! 613: CLSID clsidActivateDefault; //Class ID to use as activate default: IN only ! 614: ! 615: CLSID clsidNew; //Selected Class ID: OUT only ! 616: DWORD dvAspect; //IN-OUT, either DVASPECT_CONTENT or ! 617: //DVASPECT_ICON ! 618: WORD wFormat; //Original data format ! 619: BOOL fIsLinkedObject; //IN only; true if object is linked ! 620: HGLOBAL hMetaPict; //IN-OUT: METAFILEPICT containing iconic aspect. ! 621: LPSTR lpszUserType; //IN: user type name of original class. We'll do lookup if it's NULL. ! 622: //This gets freed on exit. ! 623: BOOL fObjectsIconChanged; // OUT; TRUE if ChangeIcon was called (and not cancelled) ! 624: ! 625: } OLEUICONVERT, *POLEUICONVERT, FAR *LPOLEUICONVERT; ! 626: ! 627: ! 628: //API prototype ! 629: STDAPI_(UINT) OleUIConvert(LPOLEUICONVERT); ! 630: ! 631: //Convert Dialog flags ! 632: ! 633: // IN only: Shows "HELP" button ! 634: #define CF_SHOWHELPBUTTON 0x00000001L ! 635: ! 636: // IN only: lets you set the convert default object - the one that is ! 637: // selected as default in the convert listbox. ! 638: #define CF_SETCONVERTDEFAULT 0x00000002L ! 639: ! 640: ! 641: // IN only: lets you set the activate default object - the one that is ! 642: // selected as default in the activate listbox. ! 643: ! 644: #define CF_SETACTIVATEDEFAULT 0x00000004L ! 645: ! 646: ! 647: // IN/OUT: Selects the "Convert To" radio button, is set on exit if ! 648: // this button was selected ! 649: #define CF_SELECTCONVERTTO 0x00000008L ! 650: ! 651: // IN/OUT: Selects the "Activate As" radio button, is set on exit if ! 652: // this button was selected ! 653: #define CF_SELECTACTIVATEAS 0x00000010L ! 654: ! 655: ! 656: //Convert specific error codes ! 657: #define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1) ! 658: #define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2) ! 659: #define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3) ! 660: #define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4) ! 661: #define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5) ! 662: ! 663: ! 664: //Convert Dialog identifiers ! 665: #define IDCV_OBJECTTYPE 150 ! 666: #define IDCV_HELP 151 ! 667: #define IDCV_DISPLAYASICON 152 ! 668: #define IDCV_CHANGEICON 153 ! 669: #define IDCV_ACTIVATELIST 154 ! 670: #define IDCV_CONVERTTO 155 ! 671: #define IDCV_ACTIVATEAS 156 ! 672: #define IDCV_RESULTTEXT 157 ! 673: #define IDCV_CONVERTLIST 158 ! 674: #define IDCV_ICON 159 ! 675: #define IDCV_ICONLABEL1 160 ! 676: #define IDCV_ICONLABEL2 161 ! 677: #define IDCV_STXCURTYPE 162 ! 678: #define IDCV_GRPRESULT 163 ! 679: #define IDCV_STXCONVERTTO 164 ! 680: ! 681: // String IDs for Convert dialog ! 682: #define IDS_CVRESULTCONVERTLINK 500 ! 683: #define IDS_CVRESULTCONVERTTO 501 ! 684: #define IDS_CVRESULTNOCHANGE 502 ! 685: #define IDS_CVRESULTDISPLAYASICON 503 ! 686: #define IDS_CVRESULTACTIVATEAS 504 ! 687: #define IDS_CVRESULTACTIVATEDIFF 505 ! 688: ! 689: ! 690: /************************************************************************* ! 691: ** BUSY DIALOG ! 692: *************************************************************************/ ! 693: ! 694: typedef struct tagOLEUIBUSY ! 695: { ! 696: //These IN fields are standard across all OLEUI dialog functions. ! 697: DWORD cbStruct; //Structure Size ! 698: DWORD dwFlags; //IN-OUT: Flags ** NOTE ** this dialog has no flags ! 699: HWND hWndOwner; //Owning window ! 700: LPCSTR lpszCaption; //Dialog caption bar contents ! 701: LPFNOLEUIHOOK lpfnHook; //Hook callback ! 702: LPARAM lCustData; //Custom data to pass to hook ! 703: HINSTANCE hInstance; //Instance for customized template name ! 704: LPCSTR lpszTemplate; //Customized template name ! 705: HRSRC hResource; //Customized template handle ! 706: ! 707: //Specifics for OLEUIBUSY. ! 708: HTASK hTask; //IN: HTask which is blocking ! 709: HWND FAR * lphWndDialog; //IN: Dialog's HWND is placed here ! 710: } OLEUIBUSY, *POLEUIBUSY, FAR *LPOLEUIBUSY; ! 711: ! 712: //API prototype ! 713: STDAPI_(UINT) OleUIBusy(LPOLEUIBUSY); ! 714: ! 715: // Flags for this dialog ! 716: ! 717: // IN only: Disables "Cancel" button ! 718: #define BZ_DISABLECANCELBUTTON 0x00000001L ! 719: ! 720: // IN only: Disables "Switch To..." button ! 721: #define BZ_DISABLESWITCHTOBUTTON 0x00000002L ! 722: ! 723: // IN only: Disables "Retry" button ! 724: #define BZ_DISABLERETRYBUTTON 0x00000004L ! 725: ! 726: // IN only: Generates a "Not Responding" dialog as opposed to the ! 727: // "Busy" dialog. The wording in the text is slightly different, and ! 728: // the "Cancel" button is grayed out if you set this flag. ! 729: #define BZ_NOTRESPONDINGDIALOG 0x00000008L ! 730: ! 731: // Busy specific error/return codes ! 732: #define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0) ! 733: ! 734: // SWITCHTOSELECTED is returned when user hit "switch to" ! 735: #define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1) ! 736: ! 737: // RETRYSELECTED is returned when user hit "retry" ! 738: #define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2) ! 739: ! 740: // CALLUNBLOCKED is returned when call has been unblocked ! 741: #define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3) ! 742: ! 743: // Busy dialog identifiers ! 744: #define IDBZ_RETRY 600 ! 745: #define IDBZ_ICON 601 ! 746: #define IDBZ_MESSAGE1 602 ! 747: #define IDBZ_SWITCHTO 604 ! 748: ! 749: // Busy dialog stringtable defines ! 750: #define IDS_BZRESULTTEXTBUSY 601 ! 751: #define IDS_BZRESULTTEXTNOTRESPONDING 602 ! 752: ! 753: // Links dialog stringtable defines ! 754: #define IDS_LINK_AUTO 800 ! 755: #define IDS_LINK_MANUAL 801 ! 756: #define IDS_LINK_UNKNOWN 802 ! 757: #define IDS_LINKS 803 ! 758: #define IDS_FAILED 804 ! 759: #define IDS_CHANGESOURCE 805 ! 760: #define IDS_INVALIDSOURCE 806 ! 761: #define IDS_ERR_GETLINKSOURCE 807 ! 762: #define IDS_ERR_GETLINKUPDATEOPTIONS 808 ! 763: #define IDS_ERR_ADDSTRING 809 ! 764: #define IDS_CHANGEADDITIONALLINKS 810 ! 765: #define IDS_CLOSE 811 ! 766: ! 767: ! 768: /************************************************************************* ! 769: ** PROMPT USER DIALOGS ! 770: *************************************************************************/ ! 771: #define ID_PU_LINKS 900 ! 772: #define ID_PU_TEXT 901 ! 773: #define ID_PU_CONVERT 902 ! 774: #define ID_PU_HELP 903 ! 775: #define ID_PU_BROWSE 904 ! 776: #define ID_PU_METER 905 ! 777: #define ID_PU_PERCENT 906 ! 778: #define ID_PU_STOP 907 ! 779: ! 780: // used for -1 ids in dialogs: ! 781: #define ID_DUMMY 999 ! 782: ! 783: /* inside ole2ui.c */ ! 784: #ifdef __cplusplus ! 785: extern "C" ! 786: #endif ! 787: int EXPORT FAR CDECL OleUIPromptUser(int nTemplate, HWND hwndParent, ...); ! 788: STDAPI_(BOOL) OleUIUpdateLinks( ! 789: LPOLEUILINKCONTAINER lpOleUILinkCntr, ! 790: HWND hwndParent, ! 791: LPSTR lpszTitle, ! 792: int cLinks); ! 793: ! 794: ! 795: /************************************************************************* ! 796: ** OLE OBJECT FEEDBACK EFFECTS ! 797: *************************************************************************/ ! 798: ! 799: #define OLEUI_HANDLES_USEINVERSE 0x00000001L ! 800: #define OLEUI_HANDLES_NOBORDER 0x00000002L ! 801: #define OLEUI_HANDLES_INSIDE 0x00000004L ! 802: #define OLEUI_HANDLES_OUTSIDE 0x00000008L ! 803: ! 804: ! 805: #define OLEUI_SHADE_FULLRECT 1 ! 806: #define OLEUI_SHADE_BORDERIN 2 ! 807: #define OLEUI_SHADE_BORDEROUT 3 ! 808: ! 809: /* objfdbk.c function prototypes */ ! 810: STDAPI_(void) OleUIDrawHandles(LPRECT lpRect, HDC hdc, DWORD dwFlags, UINT cSize, BOOL fDraw); ! 811: STDAPI_(void) OleUIDrawShading(LPRECT lpRect, HDC hdc, DWORD dwFlags, UINT cWidth); ! 812: STDAPI_(void) OleUIShowObject(LPCRECT lprc, HDC hdc, BOOL fIsLink); ! 813: ! 814: ! 815: /************************************************************************* ! 816: ** Hatch window definitions and prototypes ** ! 817: *************************************************************************/ ! 818: #define DEFAULT_HATCHBORDER_WIDTH 4 ! 819: ! 820: STDAPI_(BOOL) RegisterHatchWindowClass(HINSTANCE hInst); ! 821: STDAPI_(HWND) CreateHatchWindow(HWND hWndParent, HINSTANCE hInst); ! 822: STDAPI_(UINT) GetHatchWidth(HWND hWndHatch); ! 823: STDAPI_(void) GetHatchRect(HWND hWndHatch, LPRECT lpHatchRect); ! 824: STDAPI_(void) SetHatchRect(HWND hWndHatch, LPRECT lprcHatchRect); ! 825: STDAPI_(void) SetHatchWindowSize( ! 826: HWND hWndHatch, ! 827: LPRECT lprcIPObjRect, ! 828: LPRECT lprcClipRect, ! 829: LPPOINT lpptOffset ! 830: ); ! 831: ! 832: ! 833: ! 834: /************************************************************************* ! 835: ** VERSION VERIFICATION INFORMATION ! 836: *************************************************************************/ ! 837: ! 838: // The following magic number is used to verify that the resources we bind ! 839: // to our EXE are the same "version" as the LIB (or DLL) file which ! 840: // contains these routines. This is not the same as the Version information ! 841: // resource that we place in OLE2UI.RC, this is a special ID that we will ! 842: // have compiled in to our EXE. Upon initialization of OLE2UI, we will ! 843: // look in our resources for an RCDATA called "VERIFICATION" (see OLE2UI.RC), ! 844: // and make sure that the magic number there equals the magic number below. ! 845: ! 846: #define OLEUI_VERSION_MAGIC 0x4D42 ! 847: ! 848: #endif //_OLE2UI_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.