|
|
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: #define NONAMELESSUNION // use strict ANSI standard (for DVOBJ.H)
12:
13: #ifndef _OLE2UI_H_
14: #define _OLE2UI_H_
15:
16: #ifndef RC_INVOKED
17: #pragma message ("Including OLE2UI.H from " __FILE__)
18: #endif //RC_INVOKED
19:
20: #include <windows.h>
21: #include <shellapi.h>
22: #include <ole2.h>
23: #include <string.h>
24: #include "olestd.h"
25: #include "uiclass.h"
26: // -- see below
27:
28: #ifdef __TURBOC__
29: #define _getcwd getcwd
30: #define _itoa itoa
31: #define __max max
32: #define _find_t find_t
33: #endif // __TURBOC__
34:
35: /*
36: * Initialization / Uninitialization routines. OleUIInitialize
37: * MUST be called prior to using any functions in OLE2UI.
38: */
39:
40: STDAPI_(BOOL) OleUIInitialize(HINSTANCE);
41: STDAPI_(BOOL) OleUIUnInitialize(void); // Must be called when completed using functions in OLE2UI
42:
43: //Dialog Identifiers as passed in Help messages to identify the source.
44: #define IDD_INSERTOBJECT 1000
45: #define IDD_CHANGEICON 1001
46: #define IDD_CONVERT 1002
47: #define IDD_PASTESPECIAL 1003
48: #define IDD_EDITLINKS 1004
49: #define IDD_FILEOPEN 1005
50: #define IDD_BUSY 1006
51: #define IDD_LINKSOURCEUNAVAILABLE 1007
52: #define IDD_CANNOTUPDATELINK 1008
53: #define IDD_SERVERNOTREG 1009
54: #define IDD_LINKTYPECHANGED 1010
55: #define IDD_SERVERNOTFOUND 1011
56: #define IDD_UPDATELINKS 1012
57: #define IDD_OUTOFMEMORY 1013
58:
59: #define IDOK 1
60: #define IDCANCEL 2
61:
62: // Stringtable identifers
63: #define IDS_OLE2UIUNKNOWN 300
64: #define IDS_OLE2UILINK 301
65: #define IDS_OLE2UIOBJECT 302
66: #define IDS_OLE2UIEDIT 303
67: #define IDS_OLE2UICONVERT 304
68: #define IDS_OLE2UIEDITLINKCMD_1VERB 305
69: #define IDS_OLE2UIEDITOBJECTCMD_1VERB 306
70: #define IDS_OLE2UIEDITLINKCMD_NVERB 307
71: #define IDS_OLE2UIEDITOBJECTCMD_NVERB 308
72: #define IDS_OLE2UIEDITNOOBJCMD 309
73: #define IDS_DEFICONLABEL 310 // def. icon label (usu. "Document")
74:
75:
76: #define IDS_FILTERS 64
77: #define IDS_ICONFILTERS 65
78:
79: //Resource identifiers for bitmaps
80: #define IDB_RESULTSEGA 10
81: #define IDB_RESULTSVGA 11
82: #define IDB_RESULTSHIRESVGA 12
83:
84:
85: //Missing from windows.h
86: #ifndef PVOID
87: typedef VOID *PVOID;
88: #endif
89:
90:
91: //Hook type used in all structures.
92: typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
93:
94:
95: //Strings for registered messages
96: #define SZOLEUI_MSG_HELP "OLEUI_MSG_HELP"
97: #define SZOLEUI_MSG_ENDDIALOG "OLEUI_MSG_ENDDIALOG"
98: #define SZOLEUI_MSG_BROWSE "OLEUI_MSG_BROWSE"
99: #define SZOLEUI_MSG_CHANGEICON "OLEUI_MSG_CHANGEICON"
100: #define SZOLEUI_MSG_CLOSEBUSYDIALOG "OLEUI_MSG_CLOSEBUSYDIALOG"
101: #define SZOLEUI_MSG_FILEOKSTRING "OLEUI_MSG_FILEOKSTRING"
102:
103: // Define the classname strings. The strings below define the custom
104: // control classnames for the controls used in the UI dialogs.
105: //
106: // **************************************************************
107: // These classnames must be distinct for each application
108: // which uses this library, or your application will generate an
109: // fatal error under the debugging version of Windows 3.1.
110: // **************************************************************
111: //
112: // The MAKEFILE for this library automatically generates a file
113: // uiclass.h which contains distinct definitions for these
114: // classname strings, as long as you use a distinct name when
115: // you build the library. See the MAKEFILE for more information
116: // on setting the name of the library.
117:
118: #define SZCLASSICONBOX OLEUICLASS1
119: #define SZCLASSRESULTIMAGE OLEUICLASS2
120:
121: #define OLEUI_ERR_STANDARDMIN 100
122: #define OLEUI_ERR_STRUCTURENULL 101 //Standard field validation
123: #define OLEUI_ERR_STRUCTUREINVALID 102
124: #define OLEUI_ERR_CBSTRUCTINCORRECT 103
125: #define OLEUI_ERR_HWNDOWNERINVALID 104
126: #define OLEUI_ERR_LPSZCAPTIONINVALID 105
127: #define OLEUI_ERR_LPFNHOOKINVALID 106
128: #define OLEUI_ERR_HINSTANCEINVALID 107
129: #define OLEUI_ERR_LPSZTEMPLATEINVALID 108
130: #define OLEUI_ERR_HRESOURCEINVALID 109
131:
132: #define OLEUI_ERR_FINDTEMPLATEFAILURE 110 //Initialization errors
133: #define OLEUI_ERR_LOADTEMPLATEFAILURE 111
134: #define OLEUI_ERR_DIALOGFAILURE 112
135: #define OLEUI_ERR_LOCALMEMALLOC 113
136: #define OLEUI_ERR_GLOBALMEMALLOC 114
137: #define OLEUI_ERR_LOADSTRING 115
138:
139: #define OLEUI_ERR_STANDARDMAX 116 //Start here for specific errors.
140:
141:
142:
143: //Help Button Identifier
144: #define ID_OLEUIHELP 99
145:
146: // Help button for fileopen.dlg (need this for resizing) 1038 is pshHelp
147: #define IDHELP 1038
148:
149: // Static text control (use this instead of -1 so things work correctly for
150: // localization
151: #define ID_STATIC 98
152:
153: //Maximum key size we read from the RegDB.
154: #define OLEUI_CCHKEYMAX 256 // make any changes to this in geticon.c too
155:
156: //Maximum verb length and length of Object menu
157: #define OLEUI_CCHVERBMAX 32
158: #define OLEUI_OBJECTMENUMAX 64
159:
160: //Maximum MS-DOS pathname.
161: #define OLEUI_CCHPATHMAX 256 // make any changes to this in geticon.c too
162: #define OLEUI_CCHFILEMAX 13
163:
164: //Icon label length
165: #define OLEUI_CCHLABELMAX 40 // make any changes to this in geticon.c too
166:
167: //Length of the CLSID string
168: #define OLEUI_CCHCLSIDSTRING 39
169:
170:
171: /*
172: * What follows here are first function prototypes for general utility
173: * functions, then sections laid out by dialog. Each dialog section
174: * defines the dialog structure, the API prototype, flags for the dwFlags
175: * field, the dialog-specific error values, and dialog control IDs (for
176: * hooks and custom templates.
177: */
178:
179:
180: //Miscellaneous utility functions.
181: STDAPI_(BOOL) OleUIAddVerbMenu(LPOLEOBJECT lpOleObj,
182: LPSTR lpszShortType,
183: HMENU hMenu,
184: UINT uPos,
185: UINT uIDVerbMin,
186: BOOL bAddConvert,
187: UINT idConvert,
188: HMENU FAR *lphMenu);
189:
190: //Metafile utility functions
191: STDAPI_(HGLOBAL) OleUIMetafilePictFromIconAndLabel(HICON, LPSTR, LPSTR, UINT);
192: STDAPI_(void) OleUIMetafilePictIconFree(HGLOBAL);
193: STDAPI_(BOOL) OleUIMetafilePictIconDraw(HDC, LPRECT, HGLOBAL, BOOL);
194: STDAPI_(UINT) OleUIMetafilePictExtractLabel(HGLOBAL, LPSTR, UINT, LPDWORD);
195: STDAPI_(HICON) OleUIMetafilePictExtractIcon(HGLOBAL);
196: STDAPI_(BOOL) OleUIMetafilePictExtractIconSource(HGLOBAL,LPSTR,UINT FAR *);
197:
198:
199:
200:
201:
202: /*************************************************************************
203: ** INSERT OBJECT DIALOG
204: *************************************************************************/
205:
206:
207: typedef struct tagOLEUIINSERTOBJECT
208: {
209: //These IN fields are standard across all OLEUI dialog functions.
210: DWORD cbStruct; //Structure Size
211: DWORD dwFlags; //IN-OUT: Flags
212: HWND hWndOwner; //Owning window
213: LPCSTR lpszCaption; //Dialog caption bar contents
214: LPFNOLEUIHOOK lpfnHook; //Hook callback
215: LPARAM lCustData; //Custom data to pass to hook
216: HINSTANCE hInstance; //Instance for customized template name
217: LPCSTR lpszTemplate; //Customized template name
218: HRSRC hResource; //Customized template handle
219:
220: //Specifics for OLEUIINSERTOBJECT. All are IN-OUT unless otherwise spec.
221: CLSID clsid; //Return space for class ID
222: LPSTR lpszFile; //Filename for inserts or links
223: UINT cchFile; //Size of lpszFile buffer: OLEUI_CCHPATHMAX
224: UINT cClsidExclude; //IN only: CLSIDs in lpClsidExclude
225: LPCLSID lpClsidExclude; //List of CLSIDs to exclude from listing.
226:
227: //Specific to create objects if flags say so
228: IID iid; //Requested interface on creation.
229: DWORD oleRender; //Rendering option
230: LPFORMATETC lpFormatEtc; //Desired format
231: LPOLECLIENTSITE lpIOleClientSite; //Site to be use for the object.
232: LPSTORAGE lpIStorage; //Storage used for the object
233: LPVOID FAR *ppvObj; //Where the object is returned.
234: SCODE sc; //Result of creation calls.
235: HGLOBAL hMetaPict; //OUT: METAFILEPICT containing iconic aspect.
236: //IFF we couldn't stuff it in the cache.
237: } OLEUIINSERTOBJECT, *POLEUIINSERTOBJECT, FAR *LPOLEUIINSERTOBJECT;
238:
239: //API prototype
240: STDAPI_(UINT) OleUIInsertObject(LPOLEUIINSERTOBJECT);
241:
242:
243: //Insert Object flags
244: #define IOF_SHOWHELP 0x00000001L
245: #define IOF_SELECTCREATENEW 0x00000002L
246: #define IOF_SELECTCREATEFROMFILE 0x00000004L
247: #define IOF_CHECKLINK 0x00000008L
248: #define IOF_CHECKDISPLAYASICON 0x00000010L
249: #define IOF_CREATENEWOBJECT 0x00000020L
250: #define IOF_CREATEFILEOBJECT 0x00000040L
251: #define IOF_CREATELINKOBJECT 0x00000080L
252: #define IOF_DISABLELINK 0x00000100L
253: #define IOF_VERIFYSERVERSEXIST 0x00000200L
254:
255:
256: //Insert Object specific error codes
257: #define OLEUI_IOERR_LPSZFILEINVALID (OLEUI_ERR_STANDARDMAX+0)
258: #define OLEUI_IOERR_LPSZLABELINVALID (OLEUI_ERR_STANDARDMAX+1)
259: #define OLEUI_IOERR_HICONINVALID (OLEUI_ERR_STANDARDMAX+2)
260: #define OLEUI_IOERR_LPFORMATETCINVALID (OLEUI_ERR_STANDARDMAX+3)
261: #define OLEUI_IOERR_PPVOBJINVALID (OLEUI_ERR_STANDARDMAX+4)
262: #define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
263: #define OLEUI_IOERR_LPISTORAGEINVALID (OLEUI_ERR_STANDARDMAX+6)
264: #define OLEUI_IOERR_SCODEHASERROR (OLEUI_ERR_STANDARDMAX+7)
265: #define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID (OLEUI_ERR_STANDARDMAX+8)
266: #define OLEUI_IOERR_CCHFILEINVALID (OLEUI_ERR_STANDARDMAX+9)
267:
268:
269: //Insert Object Dialog identifiers
270: #define ID_IO_CREATENEW 2100
271: #define ID_IO_CREATEFROMFILE 2101
272: #define ID_IO_LINKFILE 2102
273: #define ID_IO_OBJECTTYPELIST 2103
274: #define ID_IO_DISPLAYASICON 2104
275: #define ID_IO_CHANGEICON 2105
276: #define ID_IO_FILE 2106
277: #define ID_IO_FILEDISPLAY 2107
278: #define ID_IO_RESULTIMAGE 2108
279: #define ID_IO_RESULTTEXT 2109
280: #define ID_IO_ICONDISPLAY 2110
281: #define ID_IO_OBJECTTYPETEXT 2111
282: #define ID_IO_FILETEXT 2112
283: #define ID_IO_FILETYPE 2113
284:
285: // Strings in OLE2UI resources
286: #define IDS_IORESULTNEW 256
287: #define IDS_IORESULTNEWICON 257
288: #define IDS_IORESULTFROMFILE1 258
289: #define IDS_IORESULTFROMFILE2 259
290: #define IDS_IORESULTFROMFILEICON2 260
291: #define IDS_IORESULTLINKFILE1 261
292: #define IDS_IORESULTLINKFILE2 262
293: #define IDS_IORESULTLINKFILEICON1 263
294: #define IDS_IORESULTLINKFILEICON2 264
295:
296: /*************************************************************************
297: ** PASTE SPECIAL DIALOG
298: *************************************************************************/
299:
300: // Maximum number of link types
301: #define PS_MAXLINKTYPES 8
302:
303: //NOTE: OLEUIPASTEENTRY and OLEUIPASTEFLAG structs are defined in OLESTD.H
304:
305: typedef struct tagOLEUIPASTESPECIAL
306: {
307: //These IN fields are standard across all OLEUI dialog functions.
308: DWORD cbStruct; //Structure Size
309: DWORD dwFlags; //IN-OUT: Flags
310: HWND hWndOwner; //Owning window
311: LPCSTR lpszCaption; //Dialog caption bar contents
312: LPFNOLEUIHOOK lpfnHook; //Hook callback
313: LPARAM lCustData; //Custom data to pass to hook
314: HINSTANCE hInstance; //Instance for customized template name
315: LPCSTR lpszTemplate; //Customized template name
316: HRSRC hResource; //Customized template handle
317:
318: //Specifics for OLEUIPASTESPECIAL.
319:
320: //IN fields
321: LPDATAOBJECT lpSrcDataObj; //Source IDataObject* (on the clipboard) for data to paste
322:
323: LPOLEUIPASTEENTRY arrPasteEntries; //OLEUIPASTEENTRY array which specifies acceptable formats. See
324: // OLEUIPASTEENTRY for more information.
325: int cPasteEntries; //Number of OLEUIPASTEENTRY array entries
326:
327: UINT FAR *arrLinkTypes; //List of link types that are acceptable. Link types are referred
328: // to using OLEUIPASTEFLAGS in arrPasteEntries
329: int cLinkTypes; //Number of link types
330:
331: //OUT fields
332: int nSelectedIndex; //Index of arrPasteEntries[] that the user selected
333: BOOL fLink; //Indicates if Paste or Paste Link was selected by the user
334: HGLOBAL hMetaPict; //Handle to Metafile containing icon and icon title selected by the user
335: // Use the Metafile utility functions defined in this header to
336: // manipulate hMetaPict
337: } OLEUIPASTESPECIAL, *POLEUIPASTESPECIAL, FAR *LPOLEUIPASTESPECIAL;
338:
339:
340: //API to bring up PasteSpecial dialog
341: STDAPI_(UINT) OleUIPasteSpecial(LPOLEUIPASTESPECIAL);
342:
343:
344: //Paste Special flags
345: // Show Help button. IN flag.
346: #define PSF_SHOWHELP 0x00000001L
347: // Select Paste radio button at dialog startup. This is the default if PSF_SELECTPASTE or PSF_SELECTPASTELINK
348: // are not specified. Also specifies state of button on dialog termination. IN/OUT flag.
349: #define PSF_SELECTPASTE 0x00000002L
350: // Select PasteLink radio button at dialog startup. Also specifies state of button on dialog termination.
351: // IN/OUT flag.
352: #define PSF_SELECTPASTELINK 0x00000004L
353: // Specfies if DisplayAsIcon button was checked on dialog termination. OUT flag.
354: #define PSF_CHECKDISPLAYASICON 0x00000008L
355:
356:
357: //Paste Special specific error codes
358: #define OLEUI_IOERR_SRCDATAOBJECTINVALID (OLEUI_ERR_STANDARDMAX+0)
359: #define OLEUI_IOERR_ARRPASTEENTRIESINVALID (OLEUI_ERR_STANDARDMAX+1)
360: #define OLEUI_IOERR_ARRLINKTYPESINVALID (OLEUI_ERR_STANDARDMAX+2)
361: #define OLEUI_PSERR_CLIPBOARDCHANGED (OLEUI_ERR_STANDARDMAX+3)
362:
363: //Paste Special Dialog identifiers
364: #define ID_PS_PASTE 500
365: #define ID_PS_PASTELINK 501
366: #define ID_PS_SOURCETEXT 502
367: #define ID_PS_PASTELIST 503
368: #define ID_PS_PASTELINKLIST 504
369: #define ID_PS_DISPLAYLIST 505
370: #define ID_PS_DISPLAYASICON 506
371: #define ID_PS_ICONDISPLAY 507
372: #define ID_PS_CHANGEICON 508
373: #define ID_PS_RESULTIMAGE 509
374: #define ID_PS_RESULTTEXT 510
375: #define ID_PS_RESULTGROUP 511
376: #define ID_PS_STXSOURCE 512
377: #define ID_PS_STXAS 513
378:
379: // Paste Special String IDs
380: #define IDS_PSPASTEDATA 400
381: #define IDS_PSPASTEOBJECT 401
382: #define IDS_PSPASTEOBJECTASICON 402
383: #define IDS_PSPASTELINKDATA 403
384: #define IDS_PSPASTELINKOBJECT 404
385: #define IDS_PSPASTELINKOBJECTASICON 405
386: #define IDS_PSNONOLE 406
387: #define IDS_PSUNKNOWNTYPE 407
388: #define IDS_PSUNKNOWNSRC 408
389: #define IDS_PSUNKNOWNAPP 409
390:
391:
392: /*************************************************************************
393: ** EDIT LINKS DIALOG
394: *************************************************************************/
395:
396:
397:
398: /* IOleUILinkContainer Interface
399: ** -----------------------------
400: ** This interface must be implemented by container applications that
401: ** want to use the EditLinks dialog. the EditLinks dialog calls back
402: ** to the container app to perform the OLE functions to manipulate
403: ** the links within the container.
404: */
405:
406: #define LPOLEUILINKCONTAINER IOleUILinkContainer FAR*
407:
408: #undef INTERFACE
409: #define INTERFACE IOleUILinkContainer
410:
411: DECLARE_INTERFACE_(IOleUILinkContainer, IUnknown)
412: {
413: //*** IUnknown methods ***/
414: STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
415: STDMETHOD_(ULONG,AddRef) (THIS) PURE;
416: STDMETHOD_(ULONG,Release) (THIS) PURE;
417:
418: STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
419: STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink, DWORD dwUpdateOpt) PURE;
420: STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink, DWORD FAR* lpdwUpdateOpt) PURE;
421: STDMETHOD(SetLinkSource) (THIS_
422: DWORD dwLink,
423: LPSTR lpszDisplayName,
424: ULONG lenFileName,
425: ULONG FAR* pchEaten,
426: BOOL fValidateSource) PURE;
427: STDMETHOD(GetLinkSource) (THIS_
428: DWORD dwLink,
429: LPSTR FAR* lplpszDisplayName,
430: ULONG FAR* lplenFileName,
431: LPSTR FAR* lplpszFullLinkType,
432: LPSTR FAR* lplpszShortLinkType,
433: BOOL FAR* lpfSourceAvailable,
434: BOOL FAR* lpfIsSelected) PURE;
435: STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
436: STDMETHOD(UpdateLink) (THIS_
437: DWORD dwLink,
438: BOOL fErrorMessage,
439: BOOL fErrorAction) PURE;
440: STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
441: };
442:
443:
444: typedef struct tagOLEUIEDITLINKS
445: {
446: //These IN fields are standard across all OLEUI dialog functions.
447: DWORD cbStruct; //Structure Size
448: DWORD dwFlags; //IN-OUT: Flags
449: HWND hWndOwner; //Owning window
450: LPCSTR lpszCaption; //Dialog caption bar contents
451: LPFNOLEUIHOOK lpfnHook; //Hook callback
452: LPARAM lCustData; //Custom data to pass to hook
453: HINSTANCE hInstance; //Instance for customized template name
454: LPCSTR lpszTemplate; //Customized template name
455: HRSRC hResource; //Customized template handle
456:
457: //Specifics for OLEUI<STRUCT>. All are IN-OUT unless otherwise spec.
458:
459: LPOLEUILINKCONTAINER lpOleUILinkContainer; //IN: Interface to manipulate
460: //links in the container
461: } OLEUIEDITLINKS, *POLEUIEDITLINKS, FAR *LPOLEUIEDITLINKS;
462:
463:
464: //API Prototype
465: STDAPI_(UINT) OleUIEditLinks(LPOLEUIEDITLINKS);
466:
467:
468: // Edit Links flags
469: #define ELF_SHOWHELP 0x00000001L
470:
471: // Edit Links Dialog identifiers
472: #define ID_EL_CHANGESOURCE 201
473: #define ID_EL_AUTOMATIC 202
474: #define ID_EL_CLOSE 208
475: #define ID_EL_CANCELLINK 209
476: #define ID_EL_UPDATENOW 210
477: #define ID_EL_OPENSOURCE 211
478: #define ID_EL_MANUAL 212
479: #define ID_EL_LINKSOURCE 216
480: #define ID_EL_LINKTYPE 217
481: #define ID_EL_UPDATE 218
482: #define ID_EL_NULL -1
483: #define ID_EL_LINKSLISTBOX 206
484: #define ID_EL_HELP 207
485: #define ID_EL_COL1 223
486: #define ID_EL_COL2 221
487: #define ID_EL_COL3 222
488:
489:
490:
491: /*************************************************************************
492: ** CHANGE ICON DIALOG
493: *************************************************************************/
494:
495: typedef struct tagOLEUICHANGEICON
496: {
497: //These IN fields are standard across all OLEUI dialog functions.
498: DWORD cbStruct; //Structure Size
499: DWORD dwFlags; //IN-OUT: Flags
500: HWND hWndOwner; //Owning window
501: LPCSTR lpszCaption; //Dialog caption bar contents
502: LPFNOLEUIHOOK lpfnHook; //Hook callback
503: LPARAM lCustData; //Custom data to pass to hook
504: HINSTANCE hInstance; //Instance for customized template name
505: LPCSTR lpszTemplate; //Customized template name
506: HRSRC hResource; //Customized template handle
507:
508: //Specifics for OLEUICHANGEICON. All are IN-OUT unless otherwise spec.
509: HGLOBAL hMetaPict; //Current and final image. Source of the
510: //icon is embedded in the metafile itself.
511: CLSID clsid; //IN only: class used to get Default icon
512: char szIconExe[OLEUI_CCHPATHMAX];
513: int cchIconExe;
514: } OLEUICHANGEICON, *POLEUICHANGEICON, FAR *LPOLEUICHANGEICON;
515:
516:
517: //API prototype
518: STDAPI_(UINT) OleUIChangeIcon(LPOLEUICHANGEICON);
519:
520:
521: //Change Icon flags
522: #define CIF_SHOWHELP 0x00000001L
523: #define CIF_SELECTCURRENT 0x00000002L
524: #define CIF_SELECTDEFAULT 0x00000004L
525: #define CIF_SELECTFROMFILE 0x00000008L
526: #define CIF_USEICONEXE 0x0000000aL
527:
528:
529: //Change Icon specific error codes
530: #define OLEUI_CIERR_MUSTHAVECLSID (OLEUI_ERR_STANDARDMAX+0)
531: #define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
532: #define OLEUI_CIERR_SZICONEXEINVALID (OLEUI_ERR_STANDARDMAX+2)
533:
534:
535: //Change Icon Dialog identifiers
536: #define ID_GROUP 120
537: #define ID_CURRENT 121
538: #define ID_CURRENTICON 122
539: #define ID_DEFAULT 123
540: #define ID_DEFAULTICON 124
541: #define ID_FROMFILE 125
542: #define ID_FROMFILEEDIT 126
543: #define ID_ICONLIST 127
544: #define ID_LABEL 128
545: #define ID_LABELEDIT 129
546: #define ID_BROWSE 130
547: #define ID_RESULTICON 132
548: #define ID_RESULTLABEL 133
549:
550: // Stringtable defines for Change Icon
551: #define IDS_CINOICONSINFILE 288
552: #define IDS_CIINVALIDFILE 289
553: #define IDS_CIFILEACCESS 290
554: #define IDS_CIFILESHARE 291
555: #define IDS_CIFILEOPENFAIL 292
556:
557:
558:
559: /*************************************************************************
560: ** CONVERT DIALOG
561: *************************************************************************/
562:
563: typedef struct tagOLEUICONVERT
564: {
565: //These IN fields are standard across all OLEUI dialog functions.
566: DWORD cbStruct; //Structure Size
567: DWORD dwFlags; //IN-OUT: Flags
568: HWND hWndOwner; //Owning window
569: LPCSTR lpszCaption; //Dialog caption bar contents
570: LPFNOLEUIHOOK lpfnHook; //Hook callback
571: LPARAM lCustData; //Custom data to pass to hook
572: HINSTANCE hInstance; //Instance for customized template name
573: LPCSTR lpszTemplate; //Customized template name
574: HRSRC hResource; //Customized template handle
575:
576: //Specifics for OLEUICONVERT. All are IN-OUT unless otherwise spec.
577: CLSID clsid; //Class ID sent in to dialog: IN only
578: CLSID clsidConvertDefault; //Class ID to use as convert default: IN only
579: CLSID clsidActivateDefault; //Class ID to use as activate default: IN only
580:
581: CLSID clsidNew; //Selected Class ID: OUT only
582: DWORD dvAspect; //IN-OUT, either DVASPECT_CONTENT or
583: //DVASPECT_ICON
584: WORD wFormat; //Original data format
585: BOOL fIsLinkedObject; //IN only; true if object is linked
586: HGLOBAL hMetaPict; //IN-OUT: METAFILEPICT containing iconic aspect.
587: LPSTR lpszUserType; //IN: user type name of original class. We'll do lookup if it's NULL.
588: //This gets freed on exit.
589: BOOL fObjectsIconChanged; // OUT; TRUE if ChangeIcon was called (and not cancelled)
590:
591: } OLEUICONVERT, *POLEUICONVERT, FAR *LPOLEUICONVERT;
592:
593:
594: //API prototype
595: STDAPI_(UINT) OleUIConvert(LPOLEUICONVERT);
596:
597: //Convert Dialog flags
598:
599: // IN only: Shows "HELP" button
600: #define CF_SHOWHELPBUTTON 0x00000001L
601:
602: // IN only: lets you set the convert default object - the one that is
603: // selected as default in the convert listbox.
604: #define CF_SETCONVERTDEFAULT 0x00000002L
605:
606:
607: // IN only: lets you set the activate default object - the one that is
608: // selected as default in the activate listbox.
609:
610: #define CF_SETACTIVATEDEFAULT 0x00000004L
611:
612:
613: // IN/OUT: Selects the "Convert To" radio button, is set on exit if
614: // this button was selected
615: #define CF_SELECTCONVERTTO 0x00000008L
616:
617: // IN/OUT: Selects the "Activate As" radio button, is set on exit if
618: // this button was selected
619: #define CF_SELECTACTIVATEAS 0x00000010L
620:
621:
622: //Convert specific error codes
623: #define OLEUI_CTERR_CLASSIDINVALID (OLEUI_ERR_STANDARDMAX+1)
624: #define OLEUI_CTERR_DVASPECTINVALID (OLEUI_ERR_STANDARDMAX+2)
625: #define OLEUI_CTERR_CBFORMATINVALID (OLEUI_ERR_STANDARDMAX+3)
626: #define OLEUI_CTERR_HMETAPICTINVALID (OLEUI_ERR_STANDARDMAX+4)
627: #define OLEUI_CTERR_STRINGINVALID (OLEUI_ERR_STANDARDMAX+5)
628:
629:
630: //Convert Dialog identifiers
631: #define IDCV_OBJECTTYPE 150
632: #define IDCV_HELP 151
633: #define IDCV_DISPLAYASICON 152
634: #define IDCV_CHANGEICON 153
635: #define IDCV_ACTIVATELIST 154
636: #define IDCV_CONVERTTO 155
637: #define IDCV_ACTIVATEAS 156
638: #define IDCV_RESULTTEXT 157
639: #define IDCV_CONVERTLIST 158
640: #define IDCV_ICON 159
641: #define IDCV_ICONLABEL1 160
642: #define IDCV_ICONLABEL2 161
643: #define IDCV_STXCURTYPE 162
644: #define IDCV_GRPRESULT 163
645: #define IDCV_STXCONVERTTO 164
646:
647: // String IDs for Convert dialog
648: #define IDS_CVRESULTCONVERTLINK 500
649: #define IDS_CVRESULTCONVERTTO 501
650: #define IDS_CVRESULTNOCHANGE 502
651: #define IDS_CVRESULTDISPLAYASICON 503
652: #define IDS_CVRESULTACTIVATEAS 504
653: #define IDS_CVRESULTACTIVATEDIFF 505
654:
655:
656: /*************************************************************************
657: ** BUSY DIALOG
658: *************************************************************************/
659:
660: typedef struct tagOLEUIBUSY
661: {
662: //These IN fields are standard across all OLEUI dialog functions.
663: DWORD cbStruct; //Structure Size
664: DWORD dwFlags; //IN-OUT: Flags ** NOTE ** this dialog has no flags
665: HWND hWndOwner; //Owning window
666: LPCSTR lpszCaption; //Dialog caption bar contents
667: LPFNOLEUIHOOK lpfnHook; //Hook callback
668: LPARAM lCustData; //Custom data to pass to hook
669: HINSTANCE hInstance; //Instance for customized template name
670: LPCSTR lpszTemplate; //Customized template name
671: HRSRC hResource; //Customized template handle
672:
673: //Specifics for OLEUIBUSY.
674: HTASK hTask; //IN: HTask which is blocking
675: HWND FAR * lphWndDialog; //IN: Dialog's HWND is placed here
676: } OLEUIBUSY, *POLEUIBUSY, FAR *LPOLEUIBUSY;
677:
678: //API prototype
679: STDAPI_(UINT) OleUIBusy(LPOLEUIBUSY);
680:
681: // Flags for this dialog
682:
683: // IN only: Disables "Cancel" button
684: #define BZ_DISABLECANCELBUTTON 0x00000001L
685:
686: // IN only: Disables "Switch To..." button
687: #define BZ_DISABLESWITCHTOBUTTON 0x00000002L
688:
689: // IN only: Disables "Retry" button
690: #define BZ_DISABLERETRYBUTTON 0x00000004L
691:
692: // IN only: Generates a "Not Responding" dialog as opposed to the
693: // "Busy" dialog. The wording in the text is slightly different, and
694: // the "Cancel" button is grayed out if you set this flag.
695: #define BZ_NOTRESPONDINGDIALOG 0x00000008L
696:
697: // Busy specific error/return codes
698: #define OLEUI_BZERR_HTASKINVALID (OLEUI_ERR_STANDARDMAX+0)
699:
700: // SWITCHTOSELECTED is returned when user hit "switch to"
701: #define OLEUI_BZ_SWITCHTOSELECTED (OLEUI_ERR_STANDARDMAX+1)
702:
703: // RETRYSELECTED is returned when user hit "retry"
704: #define OLEUI_BZ_RETRYSELECTED (OLEUI_ERR_STANDARDMAX+2)
705:
706: // CALLUNBLOCKED is returned when call has been unblocked
707: #define OLEUI_BZ_CALLUNBLOCKED (OLEUI_ERR_STANDARDMAX+3)
708:
709: // Busy dialog identifiers
710: #define IDBZ_RETRY 600
711: #define IDBZ_ICON 601
712: #define IDBZ_MESSAGE1 602
713: #define IDBZ_SWITCHTO 604
714:
715: // Busy dialog stringtable defines
716: #define IDS_BZRESULTTEXTBUSY 601
717: #define IDS_BZRESULTTEXTNOTRESPONDING 602
718:
719: // Links dialog stringtable defines
720: #define IDS_LINK_AUTO 800
721: #define IDS_LINK_MANUAL 801
722: #define IDS_LINK_UNKNOWN 802
723: #define IDS_LINKS 803
724: #define IDS_FAILED 804
725: #define IDS_CHANGESOURCE 805
726: #define IDS_INVALIDSOURCE 806
727: #define IDS_ERR_GETLINKSOURCE 807
728: #define IDS_ERR_GETLINKUPDATEOPTIONS 808
729: #define IDS_ERR_ADDSTRING 809
730: #define IDS_CHANGEADDITIONALLINKS 810
731:
732:
733: /*************************************************************************
734: ** PROMPT USER DIALOGS
735: *************************************************************************/
736: #define ID_PU_LINKS 900
737: #define ID_PU_TEXT 901
738: #define ID_PU_CONVERT 902
739: #define ID_PU_HELP 903
740: #define ID_PU_BROWSE 904
741: #define ID_PU_METER 905
742: #define ID_PU_PERCENT 906
743: #define ID_PU_STOP 907
744:
745: // used for -1 ids in dialogs:
746: #define ID_DUMMY 999
747:
748: /* inside ole2ui.c */
749: #ifdef __cplusplus
750: extern "C"
751: #endif
752: int __export FAR CDECL OleUIPromptUser(int nTemplate, HWND hwndParent, ...);
753: STDAPI_(BOOL) OleUIUpdateLinks(
754: LPOLEUILINKCONTAINER lpOleUILinkCntr,
755: HWND hwndParent,
756: LPSTR lpszTitle,
757: int cLinks);
758:
759:
760: /*************************************************************************
761: ** OLE OBJECT FEEDBACK EFFECTS
762: *************************************************************************/
763:
764: #define OLEUI_HANDLES_USEINVERSE 0x00000001L
765: #define OLEUI_HANDLES_NOBORDER 0x00000002L
766: #define OLEUI_HANDLES_INSIDE 0x00000004L
767: #define OLEUI_HANDLES_OUTSIDE 0x00000008L
768:
769:
770: /* objfdbk.c function prototypes */
771: STDAPI_(void) OleUIDrawHandles(LPRECT lpRect, HDC hdc, DWORD dwFlags, UINT cSize, BOOL fDraw);
772: STDAPI_(void) OleUIDrawShading(LPRECT lpRect, HDC hdc, DWORD dwFlags, UINT cWidth);
773: STDAPI_(void) OleUIShowObject(LPCRECT lprc, HDC hdc, BOOL fIsLink);
774:
775:
776: /*************************************************************************
777: ** Hatch window definitions and prototypes **
778: *************************************************************************/
779: #define DEFAULT_HATCHBORDER_WIDTH 4
780:
781: STDAPI_(BOOL) RegisterHatchWindowClass(HINSTANCE hInst);
782: STDAPI_(HWND) CreateHatchWindow(HWND hWndParent, HINSTANCE hInst);
783: STDAPI_(UINT) GetHatchWidth(HWND hWndHatch);
784: STDAPI_(void) GetHatchRect(HWND hWndHatch, LPRECT lpHatchRect);
785: STDAPI_(void) SetHatchRect(HWND hWndHatch, LPRECT lprcHatchRect);
786: STDAPI_(void) SetHatchWindowSize(
787: HWND hWndHatch,
788: LPRECT lprcIPObjRect,
789: LPRECT lprcClipRect,
790: LPPOINT lpptOffset
791: );
792:
793:
794:
795: /*************************************************************************
796: ** VERSION VERIFICATION INFORMATION
797: *************************************************************************/
798:
799: // The following magic number is used to verify that the resources we bind
800: // to our EXE are the same "version" as the LIB (or DLL) file which
801: // contains these routines. This is not the same as the Version information
802: // resource that we place in OLE2UI.RC, this is a special ID that we will
803: // have compiled in to our EXE. Upon initialization of OLE2UI, we will
804: // look in our resources for an RCDATA called "VERIFICATION" (see OLE2UI.RC),
805: // and make sure that the magic number there equals the magic number below.
806:
807: #define OLEUI_VERSION_MAGIC 0x4D42
808:
809: #endif //_OLE2UI_H_
810: /*****************************************************************************\
811: * *
812: * dlgs.h - Common dialog's dialog element ID numbers *
813: * *
814: * Version 1.0 *
815: * *
816: * Copyright (c) 1992, Microsoft Corp. All rights reserved. *
817: * *
818: \*****************************************************************************/
819:
820: #ifndef _INC_DLGS
821: #define _INC_DLGS
822:
823: #define ctlFirst 0x0400
824: #define ctlLast 0x04ff
825: /* Push buttons */
826: #define psh1 0x0400
827: #define psh2 0x0401
828: #define psh3 0x0402
829: #define psh4 0x0403
830: #define psh5 0x0404
831: #define psh6 0x0405
832: #define psh7 0x0406
833: #define psh8 0x0407
834: #define psh9 0x0408
835: #define psh10 0x0409
836: #define psh11 0x040a
837: #define psh12 0x040b
838: #define psh13 0x040c
839: #define psh14 0x040d
840: #define psh15 0x040e
841: #define pshHelp psh15
842: #define psh16 0x040f
843: /* Checkboxes */
844: #define chx1 0x0410
845: #define chx2 0x0411
846: #define chx3 0x0412
847: #define chx4 0x0413
848: #define chx5 0x0414
849: #define chx6 0x0415
850: #define chx7 0x0416
851: #define chx8 0x0417
852: #define chx9 0x0418
853: #define chx10 0x0419
854: #define chx11 0x041a
855: #define chx12 0x041b
856: #define chx13 0x041c
857: #define chx14 0x041d
858: #define chx15 0x041e
859: #define chx16 0x041f
860: /* Radio buttons */
861: #define rad1 0x0420
862: #define rad2 0x0421
863: #define rad3 0x0422
864: #define rad4 0x0423
865: #define rad5 0x0424
866: #define rad6 0x0425
867: #define rad7 0x0426
868: #define rad8 0x0427
869: #define rad9 0x0428
870: #define rad10 0x0429
871: #define rad11 0x042a
872: #define rad12 0x042b
873: #define rad13 0x042c
874: #define rad14 0x042d
875: #define rad15 0x042e
876: #define rad16 0x042f
877: /* Groups, frames, rectangles, and icons */
878: #define grp1 0x0430
879: #define grp2 0x0431
880: #define grp3 0x0432
881: #define grp4 0x0433
882: #define frm1 0x0434
883: #define frm2 0x0435
884: #define frm3 0x0436
885: #define frm4 0x0437
886: #define rct1 0x0438
887: #define rct2 0x0439
888: #define rct3 0x043a
889: #define rct4 0x043b
890: #define ico1 0x043c
891: #define ico2 0x043d
892: #define ico3 0x043e
893: #define ico4 0x043f
894: /* Static text */
895: #define stc1 0x0440
896: #define stc2 0x0441
897: #define stc3 0x0442
898: #define stc4 0x0443
899: #define stc5 0x0444
900: #define stc6 0x0445
901: #define stc7 0x0446
902: #define stc8 0x0447
903: #define stc9 0x0448
904: #define stc10 0x0449
905: #define stc11 0x044a
906: #define stc12 0x044b
907: #define stc13 0x044c
908: #define stc14 0x044d
909: #define stc15 0x044e
910: #define stc16 0x044f
911: #define stc17 0x0450
912: #define stc18 0x0451
913: #define stc19 0x0452
914: #define stc20 0x0453
915: #define stc21 0x0454
916: #define stc22 0x0455
917: #define stc23 0x0456
918: #define stc24 0x0457
919: #define stc25 0x0458
920: #define stc26 0x0459
921: #define stc27 0x045a
922: #define stc28 0x045b
923: #define stc29 0x045c
924: #define stc30 0x045d
925: #define stc31 0x045e
926: #define stc32 0x045f
927: /* Listboxes */
928: #define lst1 0x0460
929: #define lst2 0x0461
930: #define lst3 0x0462
931: #define lst4 0x0463
932: #define lst5 0x0464
933: #define lst6 0x0465
934: #define lst7 0x0466
935: #define lst8 0x0467
936: #define lst9 0x0468
937: #define lst10 0x0469
938: #define lst11 0x046a
939: #define lst12 0x046b
940: #define lst13 0x046c
941: #define lst14 0x046d
942: #define lst15 0x046e
943: #define lst16 0x046f
944: /* Combo boxes */
945: #define cmb1 0x0470
946: #define cmb2 0x0471
947: #define cmb3 0x0472
948: #define cmb4 0x0473
949: #define cmb5 0x0474
950: #define cmb6 0x0475
951: #define cmb7 0x0476
952: #define cmb8 0x0477
953: #define cmb9 0x0478
954: #define cmb10 0x0479
955: #define cmb11 0x047a
956: #define cmb12 0x047b
957: #define cmb13 0x047c
958: #define cmb14 0x047d
959: #define cmb15 0x047e
960: #define cmb16 0x047f
961: /* Edit controls */
962: #define edt1 0x0480
963: #define edt2 0x0481
964: #define edt3 0x0482
965: #define edt4 0x0483
966: #define edt5 0x0484
967: #define edt6 0x0485
968: #define edt7 0x0486
969: #define edt8 0x0487
970: #define edt9 0x0488
971: #define edt10 0x0489
972: #define edt11 0x048a
973: #define edt12 0x048b
974: #define edt13 0x048c
975: #define edt14 0x048d
976: #define edt15 0x048e
977: #define edt16 0x048f
978: /* Scroll bars */
979: #define scr1 0x0490
980: #define scr2 0x0491
981: #define scr3 0x0492
982: #define scr4 0x0493
983: #define scr5 0x0494
984: #define scr6 0x0495
985: #define scr7 0x0496
986: #define scr8 0x0497
987:
988: /* These dialog resource ordinals really start at 0x0600, but the
989: * RC Compiler can't handle hex for resource IDs, hence the decimal.
990: */
991: #define FILEOPENORD 1536
992: #define MULTIFILEOPENORD 1537
993: #define PRINTDLGORD 1538
994: #define PRNSETUPDLGORD 1539
995: #define FINDDLGORD 1540
996: #define REPLACEDLGORD 1541
997: #define FONTDLGORD 1542
998: #define FORMATDLGORD31 1543
999: #define FORMATDLGORD30 1544
1000:
1001: #endif /* !_INC_DLGS */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.