home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / BC_502 / RTLWIN32.PAK / OLEDLG.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-05-06  |  73.1 KB  |  1,644 lines

  1. /*++ BUILD Version: 0002    Increment this if a change has global effects
  2.  
  3. Copyright (c) 1993-1996, Microsoft Corporation
  4.  
  5. Module Name:
  6.  
  7.         oledlg.h
  8.  
  9. Abstract:
  10.  
  11.         Include file for the OLE common dialogs.
  12.         The following dialog implementations are provided:
  13.                 - Insert Object Dialog
  14.                 - Convert Object Dialog
  15.                 - Paste Special Dialog
  16.                 - Change Icon Dialog
  17.                 - Edit Links Dialog
  18.                 - Update Links Dialog
  19.                 - Change Source Dialog
  20.                 - Busy Dialog
  21.                 - User Error Message Dialog
  22.                 - Object Properties Dialog
  23.  
  24. --*/
  25.  
  26. #ifndef _OLEDLG_H_
  27. #define _OLEDLG_H_
  28. #pragma option -b
  29.  
  30. #ifndef RC_INVOKED
  31.  
  32. #ifndef __cplusplus
  33. #define NONAMELESSUNION     // use strict ANSI standard (for DVOBJ.H)
  34. #endif
  35.  
  36. // syncronize UNICODE options
  37. #if defined(_UNICODE) && !defined(UNICODE)
  38.         #define UNICODE
  39. #endif
  40. #if defined(UNICODE) && !defined(_UNICODE)
  41.         #define _UNICODE
  42. #endif
  43.  
  44. #ifndef _WINDOWS_
  45. #pragma option -b.
  46. #include <windows.h>
  47. #pragma option -b
  48. #endif
  49. #ifndef _INC_SHELLAPI
  50. #pragma option -b.
  51. #include <shellapi.h>
  52. #pragma option -b
  53. #endif
  54. #ifndef _INC_COMMDLG
  55. #pragma option -b.
  56. #include <commdlg.h>
  57. #pragma option -b
  58. #endif
  59. #ifndef _OLE2_H_
  60. #pragma option -b.
  61. #include <ole2.h>
  62. #pragma option -b
  63. #endif
  64. #pragma option -b.
  65. #include <string.h>
  66. #pragma option -b
  67. #pragma option -b.
  68. #include <tchar.h>
  69. #pragma option -b
  70.  
  71. #endif // RC_INVOKED
  72.  
  73. #pragma option -b.
  74. #include <dlgs.h>           // common dialog IDs
  75. #pragma option -b
  76.  
  77. // Help Button Identifier
  78. #define IDC_OLEUIHELP                   99
  79.  
  80. // Insert Object Dialog identifiers
  81. #define IDC_IO_CREATENEW                2100
  82. #define IDC_IO_CREATEFROMFILE           2101
  83. #define IDC_IO_LINKFILE                 2102
  84. #define IDC_IO_OBJECTTYPELIST           2103
  85. #define IDC_IO_DISPLAYASICON            2104
  86. #define IDC_IO_CHANGEICON               2105
  87. #define IDC_IO_FILE                     2106
  88. #define IDC_IO_FILEDISPLAY              2107
  89. #define IDC_IO_RESULTIMAGE              2108
  90. #define IDC_IO_RESULTTEXT               2109
  91. #define IDC_IO_ICONDISPLAY              2110
  92. #define IDC_IO_OBJECTTYPETEXT           2111    //{{NOHELP}}
  93. #define IDC_IO_FILETEXT                 2112    //{{NOHELP}}
  94. #define IDC_IO_FILETYPE                 2113
  95. #define IDC_IO_INSERTCONTROL            2114
  96. #define IDC_IO_ADDCONTROL               2115
  97. #define IDC_IO_CONTROLTYPELIST          2116
  98.  
  99. // Paste Special Dialog identifiers
  100. #define IDC_PS_PASTE                    500
  101. #define IDC_PS_PASTELINK                501
  102. #define IDC_PS_SOURCETEXT               502
  103. #define IDC_PS_PASTELIST                503     //{{NOHELP}}
  104. #define IDC_PS_PASTELINKLIST            504     //{{NOHELP}}
  105. #define IDC_PS_DISPLAYLIST              505
  106. #define IDC_PS_DISPLAYASICON            506
  107. #define IDC_PS_ICONDISPLAY              507
  108. #define IDC_PS_CHANGEICON               508
  109. #define IDC_PS_RESULTIMAGE              509
  110. #define IDC_PS_RESULTTEXT               510
  111.  
  112. // Change Icon Dialog identifiers
  113. #define IDC_CI_GROUP                    120     //{{NOHELP}}
  114. #define IDC_CI_CURRENT                  121
  115. #define IDC_CI_CURRENTICON              122
  116. #define IDC_CI_DEFAULT                  123
  117. #define IDC_CI_DEFAULTICON              124
  118. #define IDC_CI_FROMFILE                 125
  119. #define IDC_CI_FROMFILEEDIT             126
  120. #define IDC_CI_ICONLIST                 127
  121. #define IDC_CI_LABEL                    128     //{{NOHELP}
  122. #define IDC_CI_LABELEDIT                129
  123. #define IDC_CI_BROWSE                   130
  124. #define IDC_CI_ICONDISPLAY              131
  125.  
  126. // Convert Dialog identifiers
  127. #define IDC_CV_OBJECTTYPE               150
  128. #define IDC_CV_DISPLAYASICON            152
  129. #define IDC_CV_CHANGEICON               153
  130. #define IDC_CV_ACTIVATELIST             154
  131. #define IDC_CV_CONVERTTO                155
  132. #define IDC_CV_ACTIVATEAS               156
  133. #define IDC_CV_RESULTTEXT               157
  134. #define IDC_CV_CONVERTLIST              158
  135. #define IDC_CV_ICONDISPLAY              165
  136.  
  137. // Edit Links Dialog identifiers
  138. #define IDC_EL_CHANGESOURCE             201
  139. #define IDC_EL_AUTOMATIC                202
  140. #define IDC_EL_CANCELLINK               209
  141. #define IDC_EL_UPDATENOW                210
  142. #define IDC_EL_OPENSOURCE               211
  143. #define IDC_EL_MANUAL                   212
  144. #define IDC_EL_LINKSOURCE               216
  145. #define IDC_EL_LINKTYPE                 217
  146. #define IDC_EL_LINKSLISTBOX             206
  147. #define IDC_EL_COL1                     220     //{{NOHELP}}
  148. #define IDC_EL_COL2                     221     //{{NOHELP}}
  149. #define IDC_EL_COL3                     222     //{{NOHELP}}
  150.  
  151. // Busy dialog identifiers
  152. #define IDC_BZ_RETRY                    600
  153. #define IDC_BZ_ICON                     601
  154. #define IDC_BZ_MESSAGE1                 602     //{{NOHELP}}
  155. #define IDC_BZ_SWITCHTO                 604
  156.  
  157. // Update Links dialog identifiers
  158. #define IDC_UL_METER                    1029    //{{NOHELP}}
  159. #define IDC_UL_STOP                     1030    //{{NOHELP}}
  160. #define IDC_UL_PERCENT                  1031    //{{NOHELP}}
  161. #define IDC_UL_PROGRESS                 1032    //{{NOHELP}}
  162.  
  163. // User Prompt dialog identifiers
  164. #define IDC_PU_LINKS                    900     //{{NOHELP}}
  165. #define IDC_PU_TEXT                     901     //{{NOHELP}}
  166. #define IDC_PU_CONVERT                  902     //{{NOHELP}}
  167. #define IDC_PU_ICON                     908     //{{NOHELP}}
  168.  
  169. // General Properties identifiers
  170. #define IDC_GP_OBJECTNAME               1009
  171. #define IDC_GP_OBJECTTYPE               1010
  172. #define IDC_GP_OBJECTSIZE               1011
  173. #define IDC_GP_CONVERT                  1013
  174. #define IDC_GP_OBJECTICON               1014    //{{NOHELP}}
  175. #define IDC_GP_OBJECTLOCATION           1022
  176.  
  177. // View Properties identifiers
  178. #define IDC_VP_PERCENT                  1000
  179. #define IDC_VP_CHANGEICON               1001
  180. #define IDC_VP_EDITABLE                 1002
  181. #define IDC_VP_ASICON                   1003
  182. #define IDC_VP_RELATIVE                 1005
  183. #define IDC_VP_SPIN                     1006
  184. #define IDC_VP_SCALETXT                 1034
  185. #define IDC_VP_ICONDISPLAY              1021
  186. #define IDC_VP_RESULTIMAGE              1033
  187.  
  188. // Link Properties identifiers
  189. #define IDC_LP_OPENSOURCE               1006
  190. #define IDC_LP_UPDATENOW                1007
  191. #define IDC_LP_BREAKLINK                1008
  192. #define IDC_LP_LINKSOURCE               1012
  193. #define IDC_LP_CHANGESOURCE             1015
  194. #define IDC_LP_AUTOMATIC                1016
  195. #define IDC_LP_MANUAL                   1017
  196. #define IDC_LP_DATE                     1018
  197. #define IDC_LP_TIME                     1019
  198.  
  199. // Dialog Identifiers as passed in Help messages to identify the source.
  200. #define IDD_INSERTOBJECT                1000
  201. #define IDD_CHANGEICON                  1001
  202. #define IDD_CONVERT                     1002
  203. #define IDD_PASTESPECIAL                1003
  204. #define IDD_EDITLINKS                   1004
  205. #define IDD_BUSY                        1006
  206. #define IDD_UPDATELINKS                 1007
  207. #define IDD_CHANGESOURCE                1009
  208. #define IDD_INSERTFILEBROWSE            1010
  209. #define IDD_CHANGEICONBROWSE            1011
  210. #define IDD_CONVERTONLY                 1012
  211. #define IDD_CHANGESOURCE4               1013
  212. #define IDD_GNRLPROPS                   1100
  213. #define IDD_VIEWPROPS                   1101
  214. #define IDD_LINKPROPS                   1102
  215. #define IDD_CONVERT4                    1103
  216. #define IDD_CONVERTONLY4                1104
  217. #define IDD_EDITLINKS4                  1105
  218. #define IDD_GNRLPROPS4                  1106
  219. #define IDD_LINKPROPS4                  1107
  220. #define IDD_PASTESPECIAL4               1108
  221.  
  222. // The following Dialogs are message dialogs used by OleUIPromptUser API
  223. #define IDD_CANNOTUPDATELINK            1008
  224. #define IDD_LINKSOURCEUNAVAILABLE       1020
  225. #define IDD_SERVERNOTFOUND              1023
  226. #define IDD_OUTOFMEMORY                 1024
  227. #define IDD_SERVERNOTREGW               1021
  228. #define IDD_LINKTYPECHANGEDW            1022
  229. #define IDD_SERVERNOTREGA               1025
  230. #define IDD_LINKTYPECHANGEDA            1026
  231. #ifdef UNICODE
  232. #define IDD_SERVERNOTREG                IDD_SERVERNOTREGW
  233. #define IDD_LINKTYPECHANGED             IDD_LINKTYPECHANGEDW
  234. #else
  235. #define IDD_SERVERNOTREG                IDD_SERVERNOTREGA
  236. #define IDD_LINKTYPECHANGED             IDD_LINKTYPECHANGEDA
  237. #endif
  238.  
  239. #ifndef RC_INVOKED
  240.  
  241. #ifdef __cplusplus
  242. extern "C" {
  243. #endif
  244.  
  245. #pragma pack(push, 8)
  246.  
  247. // Delimeter used to separate ItemMoniker pieces of a composite moniker
  248. #ifdef _MAC
  249.         #define OLESTDDELIM ":"
  250. #else
  251.         #define OLESTDDELIM TEXT("\\")
  252. #endif
  253.  
  254. // Hook type used in all structures.
  255. typedef UINT (CALLBACK *LPFNOLEUIHOOK)(HWND, UINT, WPARAM, LPARAM);
  256.  
  257. // Strings for registered messages
  258. #define SZOLEUI_MSG_HELP                TEXT("OLEUI_MSG_HELP")
  259. #define SZOLEUI_MSG_ENDDIALOG           TEXT("OLEUI_MSG_ENDDIALOG")
  260. #define SZOLEUI_MSG_BROWSE              TEXT("OLEUI_MSG_BROWSE")
  261. #define SZOLEUI_MSG_CHANGEICON          TEXT("OLEUI_MSG_CHANGEICON")
  262. #define SZOLEUI_MSG_CLOSEBUSYDIALOG     TEXT("OLEUI_MSG_CLOSEBUSYDIALOG")
  263. #define SZOLEUI_MSG_CONVERT             TEXT("OLEUI_MSG_CONVERT")
  264. #define SZOLEUI_MSG_CHANGESOURCE        TEXT("OLEUI_MSG_CHANGESOURCE")
  265. #define SZOLEUI_MSG_ADDCONTROL          TEXT("OLEUI_MSG_ADDCONTROL")
  266. #define SZOLEUI_MSG_BROWSE_OFN          TEXT("OLEUI_MSG_BROWSE_OFN")
  267.  
  268. // Identifiers for SZOLEUI_MSG_BROWSE_OFN (in wParam)
  269. #define ID_BROWSE_CHANGEICON            1
  270. #define ID_BROWSE_INSERTFILE            2
  271. #define ID_BROWSE_ADDCONTROL            3
  272. #define ID_BROWSE_CHANGESOURCE          4
  273.  
  274. // Standard success/error definitions
  275. #define OLEUI_FALSE                     0
  276. #define OLEUI_SUCCESS                   1     // No error, same as OLEUI_OK
  277. #define OLEUI_OK                        1     // OK button pressed
  278. #define OLEUI_CANCEL                    2     // Cancel button pressed
  279.  
  280. #define OLEUI_ERR_STANDARDMIN           100
  281. #define OLEUI_ERR_OLEMEMALLOC           100
  282. #define OLEUI_ERR_STRUCTURENULL         101   // Standard field validation
  283. #define OLEUI_ERR_STRUCTUREINVALID      102
  284. #define OLEUI_ERR_CBSTRUCTINCORRECT     103
  285. #define OLEUI_ERR_HWNDOWNERINVALID      104
  286. #define OLEUI_ERR_LPSZCAPTIONINVALID    105
  287. #define OLEUI_ERR_LPFNHOOKINVALID       106
  288. #define OLEUI_ERR_HINSTANCEINVALID      107
  289. #define OLEUI_ERR_LPSZTEMPLATEINVALID   108
  290. #define OLEUI_ERR_HRESOURCEINVALID      109
  291.  
  292. #define OLEUI_ERR_FINDTEMPLATEFAILURE   110   // Initialization errors
  293. #define OLEUI_ERR_LOADTEMPLATEFAILURE   111
  294. #define OLEUI_ERR_DIALOGFAILURE         112
  295. #define OLEUI_ERR_LOCALMEMALLOC         113
  296. #define OLEUI_ERR_GLOBALMEMALLOC        114
  297. #define OLEUI_ERR_LOADSTRING            115
  298.  
  299. #define OLEUI_ERR_STANDARDMAX           116  // Start here for specific errors.
  300.  
  301. // Miscellaneous utility functions.
  302. STDAPI_(BOOL) OleUIAddVerbMenuW(LPOLEOBJECT lpOleObj, LPCWSTR lpszShortType,
  303.         HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
  304.         BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
  305. STDAPI_(BOOL) OleUIAddVerbMenuA(LPOLEOBJECT lpOleObj, LPCSTR lpszShortType,
  306.         HMENU hMenu, UINT uPos, UINT uIDVerbMin, UINT uIDVerbMax,
  307.         BOOL bAddConvert, UINT idConvert, HMENU *lphMenu);
  308. #ifdef UNICODE
  309. #define OleUIAddVerbMenu OleUIAddVerbMenuW
  310. #else
  311. #define OleUIAddVerbMenu OleUIAddVerbMenuA
  312. #endif
  313.  
  314. /////////////////////////////////////////////////////////////////////////////
  315. // INSERT OBJECT DIALOG
  316.  
  317. typedef struct tagOLEUIINSERTOBJECTW
  318. {
  319.         // These IN fields are standard across all OLEUI dialog functions.
  320.         DWORD           cbStruct;       // Structure Size
  321.         DWORD           dwFlags;        // IN-OUT:  Flags
  322.         HWND            hWndOwner;      // Owning window
  323.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  324.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  325.         LPARAM          lCustData;      // Custom data to pass to hook
  326.         HINSTANCE       hInstance;      // Instance for customized template name
  327.         LPCWSTR         lpszTemplate;   // Customized template name
  328.         HRSRC           hResource;      // Customized template handle
  329.  
  330.         // Specifics for OLEUIINSERTOBJECT.
  331.         CLSID           clsid;          // OUT: Return space for class ID
  332.         LPWSTR          lpszFile;       // IN-OUT: Filename for inserts or links
  333.         UINT            cchFile;        // IN: Size of lpszFile buffer: MAX_PATH
  334.         UINT            cClsidExclude;  // IN: CLSIDs in lpClsidExclude
  335.         LPCLSID         lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
  336.  
  337.         // Specific to create objects if flags say so
  338.         IID             iid;            // IN: Requested interface on creation.
  339.         DWORD           oleRender;      // IN: Rendering option
  340.         LPFORMATETC     lpFormatEtc;    // IN: Desired format
  341.         LPOLECLIENTSITE lpIOleClientSite;   // IN: Site to be use for the object.
  342.         LPSTORAGE       lpIStorage;     // IN: Storage used for the object
  343.         LPVOID          *ppvObj;        // OUT: Where the object is returned.
  344.         SCODE           sc;             // OUT: Result of creation calls.
  345.         HGLOBAL         hMetaPict;      // OUT: metafile aspect (METAFILEPICT)
  346.  
  347. } OLEUIINSERTOBJECTW, *POLEUIINSERTOBJECTW, *LPOLEUIINSERTOBJECTW;
  348. typedef struct tagOLEUIINSERTOBJECTA
  349. {
  350.         // These IN fields are standard across all OLEUI dialog functions.
  351.         DWORD           cbStruct;       // Structure Size
  352.         DWORD           dwFlags;        // IN-OUT:  Flags
  353.         HWND            hWndOwner;      // Owning window
  354.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  355.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  356.         LPARAM          lCustData;      // Custom data to pass to hook
  357.         HINSTANCE       hInstance;      // Instance for customized template name
  358.         LPCSTR          lpszTemplate;   // Customized template name
  359.         HRSRC           hResource;      // Customized template handle
  360.  
  361.         // Specifics for OLEUIINSERTOBJECT.
  362.         CLSID           clsid;          // OUT: Return space for class ID
  363.         LPSTR           lpszFile;       // IN-OUT: Filename for inserts or links
  364.         UINT            cchFile;        // IN: Size of lpszFile buffer: MAX_PATH
  365.         UINT            cClsidExclude;  // IN: CLSIDs in lpClsidExclude
  366.         LPCLSID         lpClsidExclude; // IN: List of CLSIDs to exclude from listing.
  367.  
  368.         // Specific to create objects if flags say so
  369.         IID             iid;            // IN: Requested interface on creation.
  370.         DWORD           oleRender;      // IN: Rendering option
  371.         LPFORMATETC     lpFormatEtc;    // IN: Desired format
  372.         LPOLECLIENTSITE lpIOleClientSite;   // IN: Site to be use for the object.
  373.         LPSTORAGE       lpIStorage;     // IN: Storage used for the object
  374.         LPVOID          *ppvObj;        // OUT: Where the object is returned.
  375.         SCODE           sc;             // OUT: Result of creation calls.
  376.         HGLOBAL         hMetaPict;      // OUT: metafile aspect (METAFILEPICT)
  377.  
  378. } OLEUIINSERTOBJECTA, *POLEUIINSERTOBJECTA, *LPOLEUIINSERTOBJECTA;
  379.  
  380. STDAPI_(UINT) OleUIInsertObjectW(LPOLEUIINSERTOBJECTW);
  381. STDAPI_(UINT) OleUIInsertObjectA(LPOLEUIINSERTOBJECTA);
  382.  
  383. #ifdef UNICODE
  384. #define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTW
  385. #define OLEUIINSERTOBJECT OLEUIINSERTOBJECTW
  386. #define POLEUIINSERTOBJECT POLEUIINSERTOBJECTW
  387. #define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTW
  388. #define OleUIInsertObject OleUIInsertObjectW
  389. #else
  390. #define tagOLEUIINSERTOBJECT tagOLEUIINSERTOBJECTA
  391. #define OLEUIINSERTOBJECT OLEUIINSERTOBJECTA
  392. #define POLEUIINSERTOBJECT POLEUIINSERTOBJECTA
  393. #define LPOLEUIINSERTOBJECT LPOLEUIINSERTOBJECTA
  394. #define OleUIInsertObject OleUIInsertObjectA
  395. #endif
  396.  
  397. // Insert Object flags
  398. #define IOF_SHOWHELP                    0x00000001L
  399. #define IOF_SELECTCREATENEW             0x00000002L
  400. #define IOF_SELECTCREATEFROMFILE        0x00000004L
  401. #define IOF_CHECKLINK                   0x00000008L
  402. #define IOF_CHECKDISPLAYASICON          0x00000010L
  403. #define IOF_CREATENEWOBJECT             0x00000020L
  404. #define IOF_CREATEFILEOBJECT            0x00000040L
  405. #define IOF_CREATELINKOBJECT            0x00000080L
  406. #define IOF_DISABLELINK                 0x00000100L
  407. #define IOF_VERIFYSERVERSEXIST          0x00000200L
  408. #define IOF_DISABLEDISPLAYASICON        0x00000400L
  409. #define IOF_HIDECHANGEICON              0x00000800L
  410. #define IOF_SHOWINSERTCONTROL           0x00001000L
  411. #define IOF_SELECTCREATECONTROL         0x00002000L
  412.  
  413. // Insert Object specific error codes
  414. #define OLEUI_IOERR_LPSZFILEINVALID         (OLEUI_ERR_STANDARDMAX+0)
  415. #define OLEUI_IOERR_LPSZLABELINVALID        (OLEUI_ERR_STANDARDMAX+1)
  416. #define OLEUI_IOERR_HICONINVALID            (OLEUI_ERR_STANDARDMAX+2)
  417. #define OLEUI_IOERR_LPFORMATETCINVALID      (OLEUI_ERR_STANDARDMAX+3)
  418. #define OLEUI_IOERR_PPVOBJINVALID           (OLEUI_ERR_STANDARDMAX+4)
  419. #define OLEUI_IOERR_LPIOLECLIENTSITEINVALID (OLEUI_ERR_STANDARDMAX+5)
  420. #define OLEUI_IOERR_LPISTORAGEINVALID       (OLEUI_ERR_STANDARDMAX+6)
  421. #define OLEUI_IOERR_SCODEHASERROR           (OLEUI_ERR_STANDARDMAX+7)
  422. #define OLEUI_IOERR_LPCLSIDEXCLUDEINVALID   (OLEUI_ERR_STANDARDMAX+8)
  423. #define OLEUI_IOERR_CCHFILEINVALID          (OLEUI_ERR_STANDARDMAX+9)
  424.  
  425. /////////////////////////////////////////////////////////////////////////////
  426. // PASTE SPECIAL DIALOG
  427.  
  428. // The OLEUIPASTEFLAG enumeration is used by the OLEUIPASTEENTRY structure.
  429. //
  430. // OLEUIPASTE_ENABLEICON: If the container does not specify this flag for
  431. //      the entry in the OLEUIPASTEENTRY array passed as input to
  432. //      OleUIPasteSpecial, the DisplayAsIcon button will be unchecked and
  433. //      disabled when the the user selects the format that corresponds to
  434. //      the entry.
  435. //
  436. // OLEUIPASTE_PASTEONLY: Indicates that the entry in the OLEUIPASTEENTRY
  437. //      array is valid for pasting only.
  438. //
  439. // OLEUIPASTE_PASTE: Indicates that the entry in the OLEUIPASTEENTRY array
  440. //      is valid for pasting. It may also be valid for linking if any of
  441. //      the following linking flags are specified.
  442. //
  443. // If the entry in the OLEUIPASTEENTRY array is valid for linking, the
  444. // following flags indicate which link types are acceptable by OR'ing
  445. // together the appropriate OLEUIPASTE_LINKTYPE<#> values.
  446. //
  447. // These values correspond as follows to the array of link types passed to
  448. // OleUIPasteSpecial:
  449. //
  450. //   OLEUIPASTE_LINKTYPE1 = arrLinkTypes[0]
  451. //   OLEUIPASTE_LINKTYPE2 = arrLinkTypes[1]
  452. //   OLEUIPASTE_LINKTYPE3 = arrLinkTypes[2]
  453. //   OLEUIPASTE_LINKTYPE4 = arrLinkTypes[3]
  454. //   OLEUIPASTE_LINKTYPE5 = arrLinkTypes[4]
  455. //   OLEUIPASTE_LINKTYPE6 = arrLinkTypes[5]
  456. //   OLEUIPASTE_LINKTYPE7 = arrLinkTypes[6]
  457. //   OLEUIPASTE_LINKTYPE8 = arrLinkTypes[7]
  458. //
  459. // where,
  460. //   UINT arrLinkTypes[8] is an array of registered clipboard formats for
  461. //   linking. A maximium of 8 link types are allowed.
  462.  
  463. typedef enum tagOLEUIPASTEFLAG
  464. {
  465.    OLEUIPASTE_ENABLEICON    = 2048,     // enable display as icon
  466.    OLEUIPASTE_PASTEONLY     = 0,
  467.    OLEUIPASTE_PASTE         = 512,
  468.    OLEUIPASTE_LINKANYTYPE   = 1024,
  469.    OLEUIPASTE_LINKTYPE1     = 1,
  470.    OLEUIPASTE_LINKTYPE2     = 2,
  471.    OLEUIPASTE_LINKTYPE3     = 4,
  472.    OLEUIPASTE_LINKTYPE4     = 8,
  473.    OLEUIPASTE_LINKTYPE5     = 16,
  474.    OLEUIPASTE_LINKTYPE6     = 32,
  475.    OLEUIPASTE_LINKTYPE7     = 64,
  476.    OLEUIPASTE_LINKTYPE8     = 128
  477. } OLEUIPASTEFLAG;
  478.  
  479. // OLEUIPASTEENTRY structure
  480. //
  481. // An array of OLEUIPASTEENTRY entries is specified for the PasteSpecial
  482. // dialog box. Each entry includes a FORMATETC which specifies the
  483. // formats that are acceptable, a string that is to represent the format
  484. // in the  dialog's list box, a string to customize the result text of the
  485. // dialog and a set of flags from the OLEUIPASTEFLAG enumeration.  The
  486. // flags indicate if the entry is valid for pasting only, linking only or
  487. // both pasting and linking.
  488.  
  489. typedef struct tagOLEUIPASTEENTRYW
  490. {
  491.    FORMATETC        fmtetc;         // Format that is acceptable.
  492.    LPCWSTR          lpstrFormatName;// String that represents the format
  493.                                                                         // to the user. %s is replaced by the
  494.                                                                         // full user type name of the object.
  495.    LPCWSTR          lpstrResultText;// String to customize the result text
  496.                                                                         // of the dialog when the user
  497.                                                                         // selects the format correspoding to
  498.                                                                         // this entry. Any %s in this string
  499.                                                                         // is replaced by the the application
  500.                                                                         // name or FullUserTypeName of the
  501.                                                                         // object on the clipboard.
  502.    DWORD            dwFlags;        // Values from OLEUIPASTEFLAG enum
  503.    DWORD            dwScratchSpace; // Scratch space used internally.
  504.  
  505. } OLEUIPASTEENTRYW, *POLEUIPASTEENTRYW, *LPOLEUIPASTEENTRYW;
  506. typedef struct tagOLEUIPASTEENTRYA
  507. {
  508.    FORMATETC        fmtetc;         // Format that is acceptable.
  509.    LPCSTR           lpstrFormatName;// String that represents the format
  510.                                                                         // to the user. %s is replaced by the
  511.                                                                         // full user type name of the object.
  512.    LPCSTR           lpstrResultText;// String to customize the result text
  513.                                                                         // of the dialog when the user
  514.                                                                         // selects the format correspoding to
  515.                                                                         // this entry. Any %s in this string
  516.                                                                         // is replaced by the the application
  517.                                                                         // name or FullUserTypeName of the
  518.                                                                         // object on the clipboard.
  519.    DWORD            dwFlags;        // Values from OLEUIPASTEFLAG enum
  520.    DWORD            dwScratchSpace; // Scratch space used internally.
  521.  
  522. } OLEUIPASTEENTRYA, *POLEUIPASTEENTRYA, *LPOLEUIPASTEENTRYA;
  523. #ifdef UNICODE
  524. #define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYW
  525. #define OLEUIPASTEENTRY OLEUIPASTEENTRYW
  526. #define POLEUIPASTEENTRY POLEUIPASTEENTRYW
  527. #define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYW
  528. #else
  529. #define tagOLEUIPASTEENTRY tagOLEUIPASTEENTRYA
  530. #define OLEUIPASTEENTRY OLEUIPASTEENTRYA
  531. #define POLEUIPASTEENTRY POLEUIPASTEENTRYA
  532. #define LPOLEUIPASTEENTRY LPOLEUIPASTEENTRYA
  533. #endif
  534.  
  535. // Maximum number of link types
  536. #define PS_MAXLINKTYPES  8
  537.  
  538. typedef struct tagOLEUIPASTESPECIALW
  539. {
  540.         // These IN fields are standard across all OLEUI dialog functions.
  541.         DWORD           cbStruct;       // Structure Size
  542.         DWORD           dwFlags;        // IN-OUT:  Flags
  543.         HWND            hWndOwner;      // Owning window
  544.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  545.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  546.         LPARAM          lCustData;      // Custom data to pass to hook
  547.         HINSTANCE       hInstance;      // Instance for customized template name
  548.         LPCWSTR         lpszTemplate;   // Customized template name
  549.         HRSRC           hResource;      // Customized template handle
  550.  
  551.         // Specifics for OLEUIPASTESPECIAL.
  552.         LPDATAOBJECT    lpSrcDataObj;   // IN-OUT: Source IDataObject* on the clipboard
  553.             // If lpSrcDataObj is NULL when OleUIPasteSpecial is called, then
  554.             // OleUIPasteSpecial will attempt to retrieve a pointer to an
  555.             // IDataObject from the clipboard.  If OleUIPasteSpecial succeeds
  556.             // then it is the caller's responsibility to free the IDataObject
  557.             // returned in lpSrcDataObj.
  558.         LPOLEUIPASTEENTRYW arrPasteEntries;// IN: Array of acceptable formats
  559.         int             cPasteEntries;  // IN: No. of OLEUIPASTEENTRY array entries
  560.         UINT FAR*       arrLinkTypes;   // IN: List of acceptable link types
  561.         int             cLinkTypes;     // IN: Number of link types
  562.         UINT            cClsidExclude;  // IN: Number of CLSIDs in lpClsidExclude
  563.         LPCLSID         lpClsidExclude; // IN: List of CLSIDs to exclude from list.
  564.         int             nSelectedIndex; // OUT: Index that the user selected
  565.         BOOL            fLink;          // OUT: Indicates if Paste or PasteLink
  566.         HGLOBAL         hMetaPict;      // OUT: Handle to Metafile containing icon
  567.         SIZEL           sizel;          // OUT: size of object/link in its source
  568.                                                                         //  may be 0,0 if different display
  569.                                                                         //  aspect is chosen.
  570.  
  571. } OLEUIPASTESPECIALW, *POLEUIPASTESPECIALW, *LPOLEUIPASTESPECIALW;
  572. typedef struct tagOLEUIPASTESPECIALA
  573. {
  574.         // These IN fields are standard across all OLEUI dialog functions.
  575.         DWORD           cbStruct;       // Structure Size
  576.         DWORD           dwFlags;        // IN-OUT:  Flags
  577.         HWND            hWndOwner;      // Owning window
  578.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  579.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  580.         LPARAM          lCustData;      // Custom data to pass to hook
  581.         HINSTANCE       hInstance;      // Instance for customized template name
  582.         LPCSTR          lpszTemplate;   // Customized template name
  583.         HRSRC           hResource;      // Customized template handle
  584.  
  585.         // Specifics for OLEUIPASTESPECIAL.
  586.         LPDATAOBJECT    lpSrcDataObj;   // IN-OUT: Source IDataObject* on the clipboard
  587.             // If lpSrcDataObj is NULL when OleUIPasteSpecial is called, then
  588.             // OleUIPasteSpecial will attempt to retrieve a pointer to an
  589.             // IDataObject from the clipboard.  If OleUIPasteSpecial succeeds
  590.             // then it is the caller's responsibility to free the IDataObject
  591.             // returned in lpSrcDataObj.
  592.         LPOLEUIPASTEENTRYA arrPasteEntries;// IN: Array of acceptable formats
  593.         int             cPasteEntries;  // IN: No. of OLEUIPASTEENTRY array entries
  594.         UINT FAR*       arrLinkTypes;   // IN: List of acceptable link types
  595.         int             cLinkTypes;     // IN: Number of link types
  596.         UINT            cClsidExclude;  // IN: Number of CLSIDs in lpClsidExclude
  597.         LPCLSID         lpClsidExclude; // IN: List of CLSIDs to exclude from list.
  598.         int             nSelectedIndex; // OUT: Index that the user selected
  599.         BOOL            fLink;          // OUT: Indicates if Paste or PasteLink
  600.         HGLOBAL         hMetaPict;      // OUT: Handle to Metafile containing icon
  601.         SIZEL           sizel;          // OUT: size of object/link in its source
  602.                                                                         //  may be 0,0 if different display
  603.                                                                         //  aspect is chosen.
  604.  
  605. } OLEUIPASTESPECIALA, *POLEUIPASTESPECIALA, *LPOLEUIPASTESPECIALA;
  606. #ifdef UNICODE
  607.  
  608. #define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALW
  609. #define OLEUIPASTESPECIAL OLEUIPASTESPECIALW
  610. #define POLEUIPASTESPECIAL POLEUIPASTESPECIALW
  611. #define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALW
  612. #else
  613. #define tagOLEUIPASTESPECIAL tagOLEUIPASTESPECIALA
  614. #define OLEUIPASTESPECIAL OLEUIPASTESPECIALA
  615. #define POLEUIPASTESPECIAL POLEUIPASTESPECIALA
  616. #define LPOLEUIPASTESPECIAL LPOLEUIPASTESPECIALA
  617. #endif
  618.  
  619. STDAPI_(UINT) OleUIPasteSpecialW(LPOLEUIPASTESPECIALW);
  620. STDAPI_(UINT) OleUIPasteSpecialA(LPOLEUIPASTESPECIALA);
  621. #ifdef UNICODE
  622. #define OleUIPasteSpecial OleUIPasteSpecialW
  623. #else
  624. #define OleUIPasteSpecial OleUIPasteSpecialA
  625. #endif
  626.  
  627. // Paste Special specific flags
  628. #define PSF_SHOWHELP                    0x00000001L
  629. #define PSF_SELECTPASTE                 0x00000002L
  630. #define PSF_SELECTPASTELINK             0x00000004L
  631. // NOTE: PSF_CHECKDISPLAYASICON is strictly an output flag.
  632. //       It is ignored if set when calling OleUIPasteSpecial.
  633. #define PSF_CHECKDISPLAYASICON          0x00000008L
  634. #define PSF_DISABLEDISPLAYASICON        0x00000010L
  635. #define PSF_HIDECHANGEICON              0x00000020L
  636. #define PSF_STAYONCLIPBOARDCHANGE       0x00000040L
  637. #define PSF_NOREFRESHDATAOBJECT         0x00000080L
  638.  
  639. // Paste Special specific error codes
  640. #define OLEUI_IOERR_SRCDATAOBJECTINVALID    (OLEUI_ERR_STANDARDMAX+0)
  641. #define OLEUI_IOERR_ARRPASTEENTRIESINVALID  (OLEUI_ERR_STANDARDMAX+1)
  642. #define OLEUI_IOERR_ARRLINKTYPESINVALID     (OLEUI_ERR_STANDARDMAX+2)
  643. #define OLEUI_PSERR_CLIPBOARDCHANGED        (OLEUI_ERR_STANDARDMAX+3)
  644. #define OLEUI_PSERR_GETCLIPBOARDFAILED      (OLEUI_ERR_STANDARDMAX+4)
  645.  
  646. /////////////////////////////////////////////////////////////////////////////
  647. // EDIT LINKS DIALOG
  648.  
  649. // IOleUILinkContainer interface
  650. //
  651. //    This interface must be implemented by container applications that
  652. //    want to use the EditLinks dialog. the EditLinks dialog calls back
  653. //    to the container app to perform the OLE functions to manipulate
  654. //    the links within the container.
  655.  
  656. #undef  INTERFACE
  657. #define INTERFACE   IOleUILinkContainerW
  658.  
  659. DECLARE_INTERFACE_(IOleUILinkContainerW, IUnknown)
  660. {
  661.         // *** IUnknown methods *** //
  662.         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  663.         STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  664.         STDMETHOD_(ULONG,Release) (THIS) PURE;
  665.  
  666.         // *** IOleUILinkContainer *** //
  667.         STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
  668.         STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
  669.                 DWORD dwUpdateOpt) PURE;
  670.         STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
  671.                 DWORD FAR* lpdwUpdateOpt) PURE;
  672.         STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
  673.                 ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
  674.         STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
  675.                 LPWSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
  676.                 LPWSTR FAR* lplpszFullLinkType, LPWSTR FAR* lplpszShortLinkType,
  677.                 BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
  678.         STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
  679.         STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
  680.                 BOOL fErrorMessage, BOOL fReserved) PURE;
  681.         STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
  682. };
  683.  
  684. typedef IOleUILinkContainerW FAR* LPOLEUILINKCONTAINERW;
  685.  
  686. #undef  INTERFACE
  687. #define INTERFACE   IOleUILinkContainerA
  688.  
  689. DECLARE_INTERFACE_(IOleUILinkContainerA, IUnknown)
  690. {
  691.         // *** IUnknown methods *** //
  692.         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  693.         STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  694.         STDMETHOD_(ULONG,Release) (THIS) PURE;
  695.  
  696.         // *** IOleUILinkContainer *** //
  697.         STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
  698.         STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
  699.                 DWORD dwUpdateOpt) PURE;
  700.         STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
  701.                 DWORD FAR* lpdwUpdateOpt) PURE;
  702.         STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPSTR lpszDisplayName,
  703.                 ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
  704.         STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
  705.                 LPSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
  706.                 LPSTR FAR* lplpszFullLinkType, LPSTR FAR* lplpszShortLinkType,
  707.                 BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
  708.         STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
  709.         STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
  710.                 BOOL fErrorMessage, BOOL fReserved) PURE;
  711.         STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
  712. };
  713.  
  714. typedef IOleUILinkContainerA FAR* LPOLEUILINKCONTAINERA;
  715.  
  716. #ifdef UNICODE
  717. #define IOleUILinkContainer IOleUILinkContainerW
  718. #define IOleUILinkContainerVtbl IOleUILinkContainerWVtbl
  719. #define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERW
  720. #else
  721. #define IOleUILinkContainer IOleUILinkContainerA
  722. #define IOleUILinkContainerVtbl IOleUILinkContainerAVtbl
  723. #define LPOLEUILINKCONTAINER LPOLEUILINKCONTAINERA
  724. #endif
  725.  
  726. typedef struct tagOLEUIEDITLINKSW
  727. {
  728.         // These IN fields are standard across all OLEUI dialog functions.
  729.         DWORD           cbStruct;       // Structure Size
  730.         DWORD           dwFlags;        // IN-OUT: Flags
  731.         HWND            hWndOwner;      // Owning window
  732.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  733.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  734.         LPARAM          lCustData;      // Custom data to pass to hook
  735.         HINSTANCE       hInstance;      // Instance for customized template name
  736.         LPCWSTR         lpszTemplate;   // Customized template name
  737.         HRSRC           hResource;      // Customized template handle
  738.  
  739.         // Specifics for OLEUIEDITLINKS.
  740.         LPOLEUILINKCONTAINERW lpOleUILinkContainer;  // IN: Interface to manipulate
  741.                                                                                                 // links in the container
  742.  
  743. } OLEUIEDITLINKSW, *POLEUIEDITLINKSW, *LPOLEUIEDITLINKSW;
  744.  
  745. typedef struct tagOLEUIEDITLINKSA
  746. {
  747.         // These IN fields are standard across all OLEUI dialog functions.
  748.         DWORD           cbStruct;       // Structure Size
  749.         DWORD           dwFlags;        // IN-OUT: Flags
  750.         HWND            hWndOwner;      // Owning window
  751.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  752.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  753.         LPARAM          lCustData;      // Custom data to pass to hook
  754.         HINSTANCE       hInstance;      // Instance for customized template name
  755.         LPCSTR          lpszTemplate;   // Customized template name
  756.         HRSRC           hResource;      // Customized template handle
  757.  
  758.         // Specifics for OLEUIEDITLINKS.
  759.         LPOLEUILINKCONTAINERA lpOleUILinkContainer;  // IN: Interface to manipulate
  760.                                                                                                 // links in the container
  761.  
  762. } OLEUIEDITLINKSA, *POLEUIEDITLINKSA, *LPOLEUIEDITLINKSA;
  763.  
  764. #ifdef UNICODE
  765. #define tagOLEUIEDITLINKS tagOLEUIEDITLINKSW
  766. #define OLEUIEDITLINKS OLEUIEDITLINKSW
  767. #define POLEUIEDITLINKS POLEUIEDITLINKSW
  768. #define LPOLEUIEDITLINKS LPOLEUIEDITLINKSW
  769. #else
  770. #define tagOLEUIEDITLINKS tagOLEUIEDITLINKSA
  771. #define OLEUIEDITLINKS OLEUIEDITLINKSA
  772. #define POLEUIEDITLINKS POLEUIEDITLINKSA
  773. #define LPOLEUIEDITLINKS LPOLEUIEDITLINKSA
  774. #endif
  775.  
  776. #define OLEUI_ELERR_LINKCNTRNULL        (OLEUI_ERR_STANDARDMAX+0)
  777. #define OLEUI_ELERR_LINKCNTRINVALID     (OLEUI_ERR_STANDARDMAX+1)
  778.  
  779. STDAPI_(UINT) OleUIEditLinksW(LPOLEUIEDITLINKSW);
  780. STDAPI_(UINT) OleUIEditLinksA(LPOLEUIEDITLINKSA);
  781.  
  782. #ifdef UNICODE
  783. #define OleUIEditLinks OleUIEditLinksW
  784. #else
  785. #define OleUIEditLinks OleUIEditLinksA
  786. #endif
  787.  
  788. // Edit Links flags
  789. #define ELF_SHOWHELP                    0x00000001L
  790. #define ELF_DISABLEUPDATENOW            0x00000002L
  791. #define ELF_DISABLEOPENSOURCE           0x00000004L
  792. #define ELF_DISABLECHANGESOURCE         0x00000008L
  793. #define ELF_DISABLECANCELLINK           0x00000010L
  794.  
  795. /////////////////////////////////////////////////////////////////////////////
  796. // CHANGE ICON DIALOG
  797.  
  798. typedef struct tagOLEUICHANGEICONW
  799. {
  800.         // These IN fields are standard across all OLEUI dialog functions.
  801.         DWORD           cbStruct;       // Structure Size
  802.         DWORD           dwFlags;        // IN-OUT:  Flags
  803.         HWND            hWndOwner;      // Owning window
  804.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  805.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  806.         LPARAM          lCustData;      // Custom data to pass to hook
  807.         HINSTANCE       hInstance;      // Instance for customized template name
  808.         LPCWSTR         lpszTemplate;   // Customized template name
  809.         HRSRC           hResource;      // Customized template handle
  810.  
  811.         // Specifics for OLEUICHANGEICON.
  812.         HGLOBAL         hMetaPict;      // IN-OUT: Current and final image.
  813.                                                                         //  Source of the icon is embedded in
  814.                                                                         //  the metafile itself.
  815.         CLSID           clsid;          // IN: class used to get Default icon
  816.         WCHAR           szIconExe[MAX_PATH];    // IN: explicit icon source path
  817.         int             cchIconExe;     // IN: number of characters in szIconExe
  818.  
  819. } OLEUICHANGEICONW, *POLEUICHANGEICONW, *LPOLEUICHANGEICONW;
  820.  
  821. typedef struct tagOLEUICHANGEICONA
  822. {
  823.         // These IN fields are standard across all OLEUI dialog functions.
  824.         DWORD           cbStruct;       // Structure Size
  825.         DWORD           dwFlags;        // IN-OUT:  Flags
  826.         HWND            hWndOwner;      // Owning window
  827.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  828.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  829.         LPARAM          lCustData;      // Custom data to pass to hook
  830.         HINSTANCE       hInstance;      // Instance for customized template name
  831.         LPCSTR          lpszTemplate;   // Customized template name
  832.         HRSRC           hResource;      // Customized template handle
  833.  
  834.         // Specifics for OLEUICHANGEICON.
  835.         HGLOBAL         hMetaPict;      // IN-OUT: Current and final image.
  836.                                                                         //  Source of the icon is embedded in
  837.                                                                         //  the metafile itself.
  838.         CLSID           clsid;          // IN: class used to get Default icon
  839.         CHAR            szIconExe[MAX_PATH];    // IN: explicit icon source path
  840.         int             cchIconExe;     // IN: number of characters in szIconExe
  841.  
  842. } OLEUICHANGEICONA, *POLEUICHANGEICONA, *LPOLEUICHANGEICONA;
  843.  
  844. STDAPI_(UINT) OleUIChangeIconW(LPOLEUICHANGEICONW);
  845. STDAPI_(UINT) OleUIChangeIconA(LPOLEUICHANGEICONA);
  846.  
  847. #ifdef UNICODE
  848. #define tagOLEUICHANGEICON tagOLEUICHANGEICONW
  849. #define OLEUICHANGEICON OLEUICHANGEICONW
  850. #define POLEUICHANGEICON POLEUICHANGEICONW
  851. #define LPOLEUICHANGEICON LPOLEUICHANGEICONW
  852. #define OleUIChangeIcon OleUIChangeIconW
  853. #else
  854. #define tagOLEUICHANGEICON tagOLEUICHANGEICONA
  855. #define OLEUICHANGEICON OLEUICHANGEICONA
  856. #define POLEUICHANGEICON POLEUICHANGEICONA
  857. #define LPOLEUICHANGEICON LPOLEUICHANGEICONA
  858. #define OleUIChangeIcon OleUIChangeIconA
  859. #endif
  860.  
  861. // Change Icon flags
  862. #define CIF_SHOWHELP                    0x00000001L
  863. #define CIF_SELECTCURRENT               0x00000002L
  864. #define CIF_SELECTDEFAULT               0x00000004L
  865. #define CIF_SELECTFROMFILE              0x00000008L
  866. #define CIF_USEICONEXE                  0x00000010L
  867.  
  868. // Change Icon specific error codes
  869. #define OLEUI_CIERR_MUSTHAVECLSID           (OLEUI_ERR_STANDARDMAX+0)
  870. #define OLEUI_CIERR_MUSTHAVECURRENTMETAFILE (OLEUI_ERR_STANDARDMAX+1)
  871. #define OLEUI_CIERR_SZICONEXEINVALID        (OLEUI_ERR_STANDARDMAX+2)
  872.  
  873. // Property used by ChangeIcon dialog to give its parent window access to
  874. // its hDlg. The PasteSpecial dialog may need to force the ChgIcon dialog
  875. // down if the clipboard contents change underneath it. if so it will send
  876. // a IDCANCEL command to the ChangeIcon dialog.
  877. #define PROP_HWND_CHGICONDLG    TEXT("HWND_CIDLG")
  878.  
  879. /////////////////////////////////////////////////////////////////////////////
  880. // CONVERT DIALOG
  881.  
  882. typedef struct tagOLEUICONVERTW
  883. {
  884.         // These IN fields are standard across all OLEUI dialog functions.
  885.         DWORD           cbStruct;       // Structure Size
  886.         DWORD           dwFlags;        // IN-OUT:  Flags
  887.         HWND            hWndOwner;      // Owning window
  888.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  889.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  890.         LPARAM          lCustData;      // Custom data to pass to hook
  891.         HINSTANCE       hInstance;      // Instance for customized template name
  892.         LPCWSTR         lpszTemplate;   // Customized template name
  893.         HRSRC           hResource;      // Customized template handle
  894.  
  895.         // Specifics for OLEUICONVERT.
  896.         CLSID           clsid;          // IN: Class ID sent in to dialog: IN only
  897.         CLSID           clsidConvertDefault;    // IN: use as convert default: IN only
  898.         CLSID           clsidActivateDefault;   // IN: use as activate default: IN only
  899.  
  900.         CLSID           clsidNew;       // OUT: Selected Class ID
  901.         DWORD           dvAspect;       // IN-OUT: either DVASPECT_CONTENT or
  902.                                                                         //  DVASPECT_ICON
  903.         WORD            wFormat;        // IN" Original data format
  904.         BOOL            fIsLinkedObject;// IN: true if object is linked
  905.         HGLOBAL         hMetaPict;      // IN-OUT: metafile icon image
  906.         LPWSTR          lpszUserType;   // IN-OUT: user type name of original class.
  907.                                                                         //      We'll do lookup if NULL.
  908.                                                                         //      This gets freed on exit.
  909.         BOOL            fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
  910.         LPWSTR          lpszDefLabel;   //IN-OUT: default label to use for icon.
  911.                                                                         //  if NULL, the short user type name
  912.                                                                         //  will be used. if the object is a
  913.                                                                         //  link, the caller should pass the
  914.                                                                         //  DisplayName of the link source
  915.                                                                         //  This gets freed on exit.
  916.  
  917.         UINT            cClsidExclude;  //IN: No. of CLSIDs in lpClsidExclude
  918.         LPCLSID         lpClsidExclude; //IN: List of CLSIDs to exclude from list
  919.  
  920. } OLEUICONVERTW, *POLEUICONVERTW, *LPOLEUICONVERTW;
  921.  
  922. typedef struct tagOLEUICONVERTA
  923. {
  924.         // These IN fields are standard across all OLEUI dialog functions.
  925.         DWORD           cbStruct;       // Structure Size
  926.         DWORD           dwFlags;        // IN-OUT:  Flags
  927.         HWND            hWndOwner;      // Owning window
  928.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  929.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  930.         LPARAM          lCustData;      // Custom data to pass to hook
  931.         HINSTANCE       hInstance;      // Instance for customized template name
  932.         LPCSTR          lpszTemplate;   // Customized template name
  933.         HRSRC           hResource;      // Customized template handle
  934.  
  935.         // Specifics for OLEUICONVERT.
  936.         CLSID           clsid;          // IN: Class ID sent in to dialog: IN only
  937.         CLSID           clsidConvertDefault;    // IN: use as convert default: IN only
  938.         CLSID           clsidActivateDefault;   // IN: use as activate default: IN only
  939.  
  940.         CLSID           clsidNew;       // OUT: Selected Class ID
  941.         DWORD           dvAspect;       // IN-OUT: either DVASPECT_CONTENT or
  942.                                                                         //  DVASPECT_ICON
  943.         WORD            wFormat;        // IN" Original data format
  944.         BOOL            fIsLinkedObject;// IN: true if object is linked
  945.         HGLOBAL         hMetaPict;      // IN-OUT: metafile icon image
  946.         LPSTR           lpszUserType;   // IN-OUT: user type name of original class.
  947.                                                                         //      We'll do lookup if NULL.
  948.                                                                         //      This gets freed on exit.
  949.         BOOL            fObjectsIconChanged; // OUT: TRUE == ChangeIcon was called
  950.         LPSTR           lpszDefLabel;   //IN-OUT: default label to use for icon.
  951.                                                                         //  if NULL, the short user type name
  952.                                                                         //  will be used. if the object is a
  953.                                                                         //  link, the caller should pass the
  954.                                                                         //  DisplayName of the link source
  955.                                                                         //  This gets freed on exit.
  956.  
  957.         UINT            cClsidExclude;  //IN: No. of CLSIDs in lpClsidExclude
  958.         LPCLSID         lpClsidExclude; //IN: List of CLSIDs to exclude from list
  959.  
  960. } OLEUICONVERTA, *POLEUICONVERTA, *LPOLEUICONVERTA;
  961.  
  962. STDAPI_(UINT) OleUIConvertW(LPOLEUICONVERTW);
  963. STDAPI_(UINT) OleUIConvertA(LPOLEUICONVERTA);
  964.  
  965. #ifdef UNICODE
  966. #define tagOLEUICONVERT tagOLEUICONVERTW
  967. #define OLEUICONVERT OLEUICONVERTW
  968. #define POLEUICONVERT POLEUICONVERTW
  969. #define LPOLEUICONVERT LPOLEUICONVERTW
  970. #define OleUIConvert OleUIConvertW
  971. #else
  972. #define tagOLEUICONVERT tagOLEUICONVERTA
  973. #define OLEUICONVERT OLEUICONVERTA
  974. #define POLEUICONVERT POLEUICONVERTA
  975. #define LPOLEUICONVERT LPOLEUICONVERTA
  976. #define OleUIConvert OleUIConvertA
  977. #endif
  978.  
  979. // Determine if there is at least one class that can Convert or ActivateAs
  980. // the given clsid.
  981. STDAPI_(BOOL) OleUICanConvertOrActivateAs(
  982.         REFCLSID rClsid, BOOL fIsLinkedObject, WORD wFormat);
  983.  
  984. // Convert Dialog flags
  985. #define CF_SHOWHELPBUTTON               0x00000001L
  986. #define CF_SETCONVERTDEFAULT            0x00000002L
  987. #define CF_SETACTIVATEDEFAULT           0x00000004L
  988. #define CF_SELECTCONVERTTO              0x00000008L
  989. #define CF_SELECTACTIVATEAS             0x00000010L
  990. #define CF_DISABLEDISPLAYASICON         0x00000020L
  991. #define CF_DISABLEACTIVATEAS            0x00000040L
  992. #define CF_HIDECHANGEICON               0x00000080L
  993. #define CF_CONVERTONLY                  0x00000100L
  994.  
  995. // Convert specific error codes
  996. #define OLEUI_CTERR_CLASSIDINVALID      (OLEUI_ERR_STANDARDMAX+1)
  997. #define OLEUI_CTERR_DVASPECTINVALID     (OLEUI_ERR_STANDARDMAX+2)
  998. #define OLEUI_CTERR_CBFORMATINVALID     (OLEUI_ERR_STANDARDMAX+3)
  999. #define OLEUI_CTERR_HMETAPICTINVALID    (OLEUI_ERR_STANDARDMAX+4)
  1000. #define OLEUI_CTERR_STRINGINVALID       (OLEUI_ERR_STANDARDMAX+5)
  1001.  
  1002. /////////////////////////////////////////////////////////////////////////////
  1003. // BUSY DIALOG
  1004.  
  1005. typedef struct tagOLEUIBUSYW
  1006. {
  1007.         // These IN fields are standard across all OLEUI dialog functions.
  1008.         DWORD           cbStruct;       // Structure Size
  1009.         DWORD           dwFlags;        // IN-OUT: see below
  1010.         HWND            hWndOwner;      // Owning window
  1011.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  1012.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  1013.         LPARAM          lCustData;      // Custom data to pass to hook
  1014.         HINSTANCE       hInstance;      // Instance for customized template name
  1015.         LPCWSTR         lpszTemplate;   // Customized template name
  1016.         HRSRC           hResource;      // Customized template handle
  1017.  
  1018.         // Specifics for OLEUIBUSY.
  1019.         HTASK           hTask;          // IN: HTask which is blocking
  1020.         HWND *          lphWndDialog;   // OUT: Dialog's HWND is placed here
  1021.  
  1022. } OLEUIBUSYW, *POLEUIBUSYW, *LPOLEUIBUSYW;
  1023.  
  1024. typedef struct tagOLEUIBUSYA
  1025. {
  1026.         // These IN fields are standard across all OLEUI dialog functions.
  1027.         DWORD           cbStruct;       // Structure Size
  1028.         DWORD           dwFlags;        // IN-OUT: see below
  1029.         HWND            hWndOwner;      // Owning window
  1030.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  1031.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  1032.         LPARAM          lCustData;      // Custom data to pass to hook
  1033.         HINSTANCE       hInstance;      // Instance for customized template name
  1034.         LPCSTR          lpszTemplate;   // Customized template name
  1035.         HRSRC           hResource;      // Customized template handle
  1036.  
  1037.         // Specifics for OLEUIBUSY.
  1038.         HTASK           hTask;          // IN: HTask which is blocking
  1039.         HWND *          lphWndDialog;   // OUT: Dialog's HWND is placed here
  1040.  
  1041. } OLEUIBUSYA, *POLEUIBUSYA, *LPOLEUIBUSYA;
  1042.  
  1043. STDAPI_(UINT) OleUIBusyW(LPOLEUIBUSYW);
  1044. STDAPI_(UINT) OleUIBusyA(LPOLEUIBUSYA);
  1045.  
  1046. #ifdef UNICODE
  1047. #define tagOLEUIBUSY tagOLEUIBUSYW
  1048. #define OLEUIBUSY OLEUIBUSYW
  1049. #define POLEUIBUSY POLEUIBUSYW
  1050. #define LPOLEUIBUSY LPOLEUIBUSYW
  1051. #define OleUIBusy OleUIBusyW
  1052. #else
  1053. #define tagOLEUIBUSY tagOLEUIBUSYA
  1054. #define OLEUIBUSY OLEUIBUSYA
  1055. #define POLEUIBUSY POLEUIBUSYA
  1056. #define LPOLEUIBUSY LPOLEUIBUSYA
  1057. #define OleUIBusy OleUIBusyA
  1058. #endif
  1059.  
  1060. // Flags for the Busy dialog
  1061. #define BZ_DISABLECANCELBUTTON          0x00000001L
  1062. #define BZ_DISABLESWITCHTOBUTTON        0x00000002L
  1063. #define BZ_DISABLERETRYBUTTON           0x00000004L
  1064.  
  1065. #define BZ_NOTRESPONDINGDIALOG          0x00000008L
  1066.  
  1067. // Busy specific error/return codes
  1068. #define OLEUI_BZERR_HTASKINVALID     (OLEUI_ERR_STANDARDMAX+0)
  1069. #define OLEUI_BZ_SWITCHTOSELECTED    (OLEUI_ERR_STANDARDMAX+1)
  1070. #define OLEUI_BZ_RETRYSELECTED       (OLEUI_ERR_STANDARDMAX+2)
  1071. #define OLEUI_BZ_CALLUNBLOCKED       (OLEUI_ERR_STANDARDMAX+3)
  1072.  
  1073. /////////////////////////////////////////////////////////////////////////////
  1074. // CHANGE SOURCE DIALOG
  1075.  
  1076. // Data to and from the ChangeSource dialog hook
  1077. typedef struct tagOLEUICHANGESOURCEW
  1078. {
  1079.         // These IN fields are standard across all OLEUI dialog functions.
  1080.         DWORD           cbStruct;       // Structure Size
  1081.         DWORD           dwFlags;        // IN-OUT:  Flags
  1082.         HWND            hWndOwner;      // Owning window
  1083.         LPCWSTR         lpszCaption;    // Dialog caption bar contents
  1084.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  1085.         LPARAM          lCustData;      // Custom data to pass to hook
  1086.         HINSTANCE       hInstance;      // Instance for customized template name
  1087.         LPCWSTR         lpszTemplate;   // Customized template name
  1088.         HRSRC           hResource;      // Customized template handle
  1089.  
  1090.         // INTERNAL ONLY: do not modify these members
  1091.         OPENFILENAMEW*  lpOFN;          // pointer OPENFILENAME struct
  1092.         DWORD           dwReserved1[4]; // (reserved for future use)
  1093.  
  1094.         // Specifics for OLEUICHANGESOURCE.
  1095.         LPOLEUILINKCONTAINERW lpOleUILinkContainer;  // IN: used to validate link sources
  1096.         DWORD           dwLink;         // IN: magic# for lpOleUILinkContainer
  1097.         LPWSTR          lpszDisplayName;// IN-OUT: complete source display name
  1098.         ULONG           nFileLength;    // IN-OUT: file moniker part of lpszDisplayName
  1099.         LPWSTR          lpszFrom;       // OUT: prefix of source changed from
  1100.         LPWSTR          lpszTo;         // OUT: prefix of source changed to
  1101.  
  1102. } OLEUICHANGESOURCEW, *POLEUICHANGESOURCEW, *LPOLEUICHANGESOURCEW;
  1103.  
  1104. typedef struct tagOLEUICHANGESOURCEA
  1105. {
  1106.         // These IN fields are standard across all OLEUI dialog functions.
  1107.         DWORD           cbStruct;       // Structure Size
  1108.         DWORD           dwFlags;        // IN-OUT:  Flags
  1109.         HWND            hWndOwner;      // Owning window
  1110.         LPCSTR          lpszCaption;    // Dialog caption bar contents
  1111.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  1112.         LPARAM          lCustData;      // Custom data to pass to hook
  1113.         HINSTANCE       hInstance;      // Instance for customized template name
  1114.         LPCSTR          lpszTemplate;   // Customized template name
  1115.         HRSRC           hResource;      // Customized template handle
  1116.  
  1117.         // INTERNAL ONLY: do not modify these members
  1118.         OPENFILENAMEA*  lpOFN;          // pointer OPENFILENAME struct
  1119.         DWORD           dwReserved1[4]; // (reserved for future use)
  1120.  
  1121.         // Specifics for OLEUICHANGESOURCE.
  1122.         LPOLEUILINKCONTAINERA lpOleUILinkContainer;  // IN: used to validate link sources
  1123.         DWORD           dwLink;         // IN: magic# for lpOleUILinkContainer
  1124.         LPSTR           lpszDisplayName;// IN-OUT: complete source display name
  1125.         ULONG           nFileLength;    // IN-OUT: file moniker part of lpszDisplayName
  1126.         LPSTR           lpszFrom;       // OUT: prefix of source changed from
  1127.         LPSTR           lpszTo;         // OUT: prefix of source changed to
  1128.  
  1129. } OLEUICHANGESOURCEA, *POLEUICHANGESOURCEA, *LPOLEUICHANGESOURCEA;
  1130.  
  1131. STDAPI_(UINT) OleUIChangeSourceW(LPOLEUICHANGESOURCEW);
  1132. STDAPI_(UINT) OleUIChangeSourceA(LPOLEUICHANGESOURCEA);
  1133.  
  1134. #ifdef UNICODE
  1135. #define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEW
  1136. #define OLEUICHANGESOURCE OLEUICHANGESOURCEW
  1137. #define POLEUICHANGESOURCE POLEUICHANGESOURCEW
  1138. #define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEW
  1139. #define OleUIChangeSource OleUIChangeSourceW
  1140. #else
  1141. #define tagOLEUICHANGESOURCE tagOLEUICHANGESOURCEA
  1142. #define OLEUICHANGESOURCE OLEUICHANGESOURCEA
  1143. #define POLEUICHANGESOURCE POLEUICHANGESOURCEA
  1144. #define LPOLEUICHANGESOURCE LPOLEUICHANGESOURCEA
  1145. #define OleUIChangeSource OleUIChangeSourceA
  1146. #endif
  1147.  
  1148. // Change Source Dialog flags
  1149. #define CSF_SHOWHELP                    0x00000001L // IN: enable/show help button
  1150. #define CSF_VALIDSOURCE                 0x00000002L // OUT: link was validated
  1151. #define CSF_ONLYGETSOURCE               0x00000004L // IN: disables validation of source
  1152. #define CSF_EXPLORER                    0x00000008L // IN: use new OFN_EXPLORER custom template behavior
  1153.  
  1154. // Change Source Dialog errors
  1155. #define OLEUI_CSERR_LINKCNTRNULL        (OLEUI_ERR_STANDARDMAX+0)
  1156. #define OLEUI_CSERR_LINKCNTRINVALID     (OLEUI_ERR_STANDARDMAX+1)
  1157. #define OLEUI_CSERR_FROMNOTNULL         (OLEUI_ERR_STANDARDMAX+2)
  1158. #define OLEUI_CSERR_TONOTNULL           (OLEUI_ERR_STANDARDMAX+3)
  1159. #define OLEUI_CSERR_SOURCENULL          (OLEUI_ERR_STANDARDMAX+4)
  1160. #define OLEUI_CSERR_SOURCEINVALID       (OLEUI_ERR_STANDARDMAX+5)
  1161. #define OLEUI_CSERR_SOURCEPARSERROR     (OLEUI_ERR_STANDARDMAX+6)
  1162. #define OLEUI_CSERR_SOURCEPARSEERROR    (OLEUI_ERR_STANDARDMAX+6)
  1163.  
  1164. /////////////////////////////////////////////////////////////////////////////
  1165. // OBJECT PROPERTIES DIALOG
  1166.  
  1167. #undef  INTERFACE
  1168. #define INTERFACE   IOleUIObjInfoW
  1169.  
  1170. DECLARE_INTERFACE_(IOleUIObjInfoW, IUnknown)
  1171. {
  1172.         // *** IUnknown methods *** //
  1173.         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1174.         STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  1175.         STDMETHOD_(ULONG,Release) (THIS) PURE;
  1176.  
  1177.         // *** extra for General Properties *** //
  1178.         STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
  1179.                 DWORD FAR* lpdwObjSize, LPWSTR FAR* lplpszLabel,
  1180.                 LPWSTR FAR* lplpszType, LPWSTR FAR* lplpszShortType,
  1181.                 LPWSTR FAR* lplpszLocation) PURE;
  1182.         STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
  1183.                 CLSID FAR* lpClassID, WORD FAR* lpwFormat,
  1184.                 CLSID FAR* lpConvertDefaultClassID,
  1185.                 LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
  1186.         STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
  1187.  
  1188.         // *** extra for View Properties *** //
  1189.         STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
  1190.                 HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
  1191.         STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
  1192.                 HGLOBAL hMetaPict, DWORD dvAspect,
  1193.                 int nCurrentScale, BOOL bRelativeToOrig) PURE;
  1194. };
  1195.  
  1196. typedef IOleUIObjInfoW FAR* LPOLEUIOBJINFOW;
  1197.  
  1198. #undef  INTERFACE
  1199. #define INTERFACE   IOleUIObjInfoA
  1200.  
  1201. DECLARE_INTERFACE_(IOleUIObjInfoA, IUnknown)
  1202. {
  1203.         // *** IUnknown methods *** //
  1204.         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1205.         STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  1206.         STDMETHOD_(ULONG,Release) (THIS) PURE;
  1207.  
  1208.         // *** extra for General Properties *** //
  1209.         STDMETHOD(GetObjectInfo) (THIS_ DWORD dwObject,
  1210.                 DWORD FAR* lpdwObjSize, LPSTR FAR* lplpszLabel,
  1211.                 LPSTR FAR* lplpszType, LPSTR FAR* lplpszShortType,
  1212.                 LPSTR FAR* lplpszLocation) PURE;
  1213.         STDMETHOD(GetConvertInfo) (THIS_ DWORD dwObject,
  1214.                 CLSID FAR* lpClassID, WORD FAR* lpwFormat,
  1215.                 CLSID FAR* lpConvertDefaultClassID,
  1216.                 LPCLSID FAR* lplpClsidExclude, UINT FAR* lpcClsidExclude) PURE;
  1217.         STDMETHOD(ConvertObject) (THIS_ DWORD dwObject, REFCLSID clsidNew) PURE;
  1218.  
  1219.         // *** extra for View Properties *** //
  1220.         STDMETHOD(GetViewInfo) (THIS_ DWORD dwObject,
  1221.                 HGLOBAL FAR* phMetaPict, DWORD* pdvAspect, int* pnCurrentScale) PURE;
  1222.         STDMETHOD(SetViewInfo) (THIS_ DWORD dwObject,
  1223.                 HGLOBAL hMetaPict, DWORD dvAspect,
  1224.                 int nCurrentScale, BOOL bRelativeToOrig) PURE;
  1225. };
  1226.  
  1227. typedef IOleUIObjInfoA FAR* LPOLEUIOBJINFOA;
  1228.  
  1229. #ifdef UNICODE
  1230. #define IOleUIObjInfo IOleUIObjInfoW
  1231. #define IOleUIObjInfoVtbl IOleUIObjInfoWVtbl
  1232. #define LPOLEUIOBJINFO LPOLEUIOBJINFOW
  1233. #else
  1234. #define IOleUIObjInfo IOleUIObjInfoA
  1235. #define IOleUIObjInfoVtbl IOleUIObjInfoAVtbl
  1236. #define LPOLEUIOBJINFO LPOLEUIOBJINFOA
  1237. #endif
  1238.  
  1239. #undef  INTERFACE
  1240. #define INTERFACE   IOleUILinkInfoW
  1241.  
  1242. DECLARE_INTERFACE_(IOleUILinkInfoW, IOleUILinkContainerW)
  1243. {
  1244.         // *** IUnknown methods *** //
  1245.         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1246.         STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  1247.         STDMETHOD_(ULONG,Release) (THIS) PURE;
  1248.  
  1249.         // *** IOleUILinkContainer *** //
  1250.         STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
  1251.         STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
  1252.                 DWORD dwUpdateOpt) PURE;
  1253.         STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
  1254.                 DWORD FAR* lpdwUpdateOpt) PURE;
  1255.         STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPWSTR lpszDisplayName,
  1256.                 ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
  1257.         STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
  1258.                 LPWSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
  1259.                 LPWSTR FAR* lplpszFullLinkType, LPWSTR FAR* lplpszShortLinkType,
  1260.                 BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
  1261.         STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
  1262.         STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
  1263.                 BOOL fErrorMessage, BOOL fReserved) PURE;
  1264.         STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
  1265.  
  1266.         // *** extra for Link Properties *** //
  1267.         STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
  1268.                 FILETIME FAR* lpLastUpdate) PURE;
  1269. };
  1270.  
  1271. typedef IOleUILinkInfoW FAR* LPOLEUILINKINFOW;
  1272.  
  1273. #undef  INTERFACE
  1274. #define INTERFACE   IOleUILinkInfoA
  1275.  
  1276. DECLARE_INTERFACE_(IOleUILinkInfoA, IOleUILinkContainerA)
  1277. {
  1278.         // *** IUnknown methods *** //
  1279.         STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  1280.         STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  1281.         STDMETHOD_(ULONG,Release) (THIS) PURE;
  1282.  
  1283.         // *** IOleUILinkContainer *** //
  1284.         STDMETHOD_(DWORD,GetNextLink) (THIS_ DWORD dwLink) PURE;
  1285.         STDMETHOD(SetLinkUpdateOptions) (THIS_ DWORD dwLink,
  1286.                 DWORD dwUpdateOpt) PURE;
  1287.         STDMETHOD(GetLinkUpdateOptions) (THIS_ DWORD dwLink,
  1288.                 DWORD FAR* lpdwUpdateOpt) PURE;
  1289.         STDMETHOD(SetLinkSource) (THIS_ DWORD dwLink, LPSTR lpszDisplayName,
  1290.                 ULONG lenFileName, ULONG FAR* pchEaten, BOOL fValidateSource) PURE;
  1291.         STDMETHOD(GetLinkSource) (THIS_ DWORD dwLink,
  1292.                 LPSTR FAR* lplpszDisplayName, ULONG FAR* lplenFileName,
  1293.                 LPSTR FAR* lplpszFullLinkType, LPSTR FAR* lplpszShortLinkType,
  1294.                 BOOL FAR* lpfSourceAvailable, BOOL FAR* lpfIsSelected) PURE;
  1295.         STDMETHOD(OpenLinkSource) (THIS_ DWORD dwLink) PURE;
  1296.         STDMETHOD(UpdateLink) (THIS_ DWORD dwLink,
  1297.                 BOOL fErrorMessage, BOOL fReserved) PURE;
  1298.         STDMETHOD(CancelLink) (THIS_ DWORD dwLink) PURE;
  1299.  
  1300.         // *** extra for Link Properties *** //
  1301.         STDMETHOD(GetLastUpdate) (THIS_ DWORD dwLink,
  1302.                 FILETIME FAR* lpLastUpdate) PURE;
  1303. };
  1304.  
  1305. typedef IOleUILinkInfoA FAR* LPOLEUILINKINFOA;
  1306.  
  1307. #ifdef UNICODE
  1308. #define IOleUILinkInfo IOleUILinkInfoW
  1309. #define IOleUILinkInfoVtbl IOleUILinkInfoWVtbl
  1310. #define LPOLEUILINKINFO LPOLEUILINKINFOW
  1311. #else
  1312. #define IOleUILinkInfo IOleUILinkInfoA
  1313. #define IOleUILinkInfoVtbl IOleUILinkInfoAVtbl
  1314. #define LPOLEUILINKINFO LPOLEUILINKINFOA
  1315. #endif
  1316.  
  1317. struct tagOLEUIOBJECTPROPSW;
  1318. struct tagOLEUIOBJECTPROPSA;
  1319.  
  1320. typedef struct tagOLEUIGNRLPROPSW
  1321. {
  1322.         // These IN fields are standard across all OLEUI property pages.
  1323.         DWORD           cbStruct;       // Structure Size
  1324.         DWORD           dwFlags;        // IN-OUT: flags specific to general page
  1325.         DWORD           dwReserved1[2];
  1326.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  1327.         LPARAM          lCustData;      // Custom data to pass to hook
  1328.         DWORD           dwReserved2[3];
  1329.  
  1330.         struct tagOLEUIOBJECTPROPSW* lpOP;   // (used internally)
  1331.  
  1332. } OLEUIGNRLPROPSW, *POLEUIGNRLPROPSW, FAR* LPOLEUIGNRLPROPSW;
  1333.  
  1334. typedef struct tagOLEUIGNRLPROPSA
  1335. {
  1336.         // These IN fields are standard across all OLEUI property pages.
  1337.         DWORD           cbStruct;       // Structure Size
  1338.         DWORD           dwFlags;        // IN-OUT: flags specific to general page
  1339.         DWORD           dwReserved1[2];
  1340.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback
  1341.         LPARAM          lCustData;      // Custom data to pass to hook
  1342.         DWORD           dwReserved2[3];
  1343.  
  1344.         struct tagOLEUIOBJECTPROPSA* lpOP;   // (used internally)
  1345.  
  1346. } OLEUIGNRLPROPSA, *POLEUIGNRLPROPSA, FAR* LPOLEUIGNRLPROPSA;
  1347.  
  1348. #ifdef UNICODE
  1349. #define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSW
  1350. #define OLEUIGNRLPROPS OLEUIGNRLPROPSW
  1351. #define POLEUIGNRLPROPS POLEUIGNRLPROPSW
  1352. #define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSW
  1353. #else
  1354. #define tagOLEUIGNRLPROPS tagOLEUIGNRLPROPSA
  1355. #define OLEUIGNRLPROPS OLEUIGNRLPROPSA
  1356. #define POLEUIGNRLPROPS POLEUIGNRLPROPSA
  1357. #define LPOLEUIGNRLPROPS LPOLEUIGNRLPROPSA
  1358. #endif
  1359.  
  1360. typedef struct tagOLEUIVIEWPROPSW
  1361. {
  1362.         // These IN fields are standard across all OLEUI property pages.
  1363.         DWORD           cbStruct;       // Structure Size
  1364.         DWORD           dwFlags;        // IN-OUT: flags specific to view page
  1365.         DWORD           dwReserved1[2];
  1366.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback (not used in this dialog)
  1367.         LPARAM          lCustData;      // Custom data to pass to hook
  1368.         DWORD           dwReserved2[3];
  1369.  
  1370.         struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
  1371.  
  1372.         int             nScaleMin;      // scale range
  1373.         int             nScaleMax;
  1374.  
  1375. } OLEUIVIEWPROPSW, *POLEUIVIEWPROPSW, FAR* LPOLEUIVIEWPROPSW;
  1376.  
  1377. typedef struct tagOLEUIVIEWPROPSA
  1378. {
  1379.         // These IN fields are standard across all OLEUI property pages.
  1380.         DWORD           cbStruct;       // Structure Size
  1381.         DWORD           dwFlags;        // IN-OUT: flags specific to view page
  1382.         DWORD           dwReserved1[2];
  1383.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback (not used in this dialog)
  1384.         LPARAM          lCustData;      // Custom data to pass to hook
  1385.         DWORD           dwReserved2[3];
  1386.  
  1387.         struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
  1388.  
  1389.         int             nScaleMin;      // scale range
  1390.         int             nScaleMax;
  1391.  
  1392. } OLEUIVIEWPROPSA, *POLEUIVIEWPROPSA, FAR* LPOLEUIVIEWPROPSA;
  1393.  
  1394. #ifdef UNICODE
  1395. #define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSW
  1396. #define OLEUIVIEWPROPS OLEUIVIEWPROPSW
  1397. #define POLEUIVIEWPROPS POLEUIVIEWPROPSW
  1398. #define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSW
  1399. #else
  1400. #define tagOLEUIVIEWPROPS tagOLEUIVIEWPROPSA
  1401. #define OLEUIVIEWPROPS OLEUIVIEWPROPSA
  1402. #define POLEUIVIEWPROPS POLEUIVIEWPROPSA
  1403. #define LPOLEUIVIEWPROPS LPOLEUIVIEWPROPSA
  1404. #endif
  1405.  
  1406. // Flags for OLEUIVIEWPROPS
  1407. #define VPF_SELECTRELATIVE          0x00000001L // IN: relative to orig
  1408. #define VPF_DISABLERELATIVE         0x00000002L // IN: disable relative to orig
  1409. #define VPF_DISABLESCALE            0x00000004L // IN: disable scale option
  1410.  
  1411. typedef struct tagOLEUILINKPROPSW
  1412. {
  1413.         // These IN fields are standard across all OLEUI property pages.
  1414.         DWORD           cbStruct;       // Structure Size
  1415.         DWORD           dwFlags;        // IN-OUT: flags specific to links page
  1416.         DWORD           dwReserved1[2];
  1417.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback (not used in this dialog)
  1418.         LPARAM          lCustData;      // Custom data to pass to hook
  1419.         DWORD           dwReserved2[3];
  1420.  
  1421.         struct tagOLEUIOBJECTPROPSW* lpOP; // (used internally)
  1422.  
  1423. } OLEUILINKPROPSW, *POLEUILINKPROPSW, FAR* LPOLEUILINKPROPSW;
  1424.  
  1425. typedef struct tagOLEUILINKPROPSA
  1426. {
  1427.         // These IN fields are standard across all OLEUI property pages.
  1428.         DWORD           cbStruct;       // Structure Size
  1429.         DWORD           dwFlags;        // IN-OUT: flags specific to links page
  1430.         DWORD           dwReserved1[2];
  1431.         LPFNOLEUIHOOK   lpfnHook;       // Hook callback (not used in this dialog)
  1432.         LPARAM          lCustData;      // Custom data to pass to hook
  1433.         DWORD           dwReserved2[3];
  1434.  
  1435.         struct tagOLEUIOBJECTPROPSA* lpOP; // (used internally)
  1436.  
  1437. } OLEUILINKPROPSA, *POLEUILINKPROPSA, FAR* LPOLEUILINKPROPSA;
  1438.  
  1439. #ifdef UNICODE
  1440. #define tagOLEUILINKPROPS tagOLEUILINKPROPSW
  1441. #define OLEUILINKPROPS OLEUILINKPROPSW
  1442. #define POLEUILINKPROPS POLEUILINKPROPSW
  1443. #define LPOLEUILINKPROPS LPOLEUILINKPROPSW
  1444. #else
  1445. #define tagOLEUILINKPROPS tagOLEUILINKPROPSA
  1446. #define OLEUILINKPROPS OLEUILINKPROPSA
  1447. #define POLEUILINKPROPS POLEUILINKPROPSA
  1448. #define LPOLEUILINKPROPS LPOLEUILINKPROPSA
  1449. #endif
  1450.  
  1451. #if (WINVER >= 0x400)
  1452. // Under Windows 95 prsht.h is NOT a part of the normal Windows
  1453. // environment, so we explicitly include it here to be safe.
  1454. #pragma option -b.
  1455. #include <prsht.h>
  1456. #pragma option -b
  1457.  
  1458. #ifndef PSM_SETFINISHTEXTA
  1459. // We are building under Windows 95.
  1460. //
  1461. // Under Windows 95 there are no wide-character definitions
  1462. // for the property sheet code.
  1463. //
  1464. // Since the UNICODE version of our API is not implemented on Windows 95,
  1465. // this only creates a semantic problem.  The entry points will still
  1466. // look the same and the code will still work the same if we define
  1467. // LPPROPSHEETHEADERW to be the narrow version of the structure.
  1468.  
  1469. typedef struct _PROPSHEETHEADER FAR* LPPROPSHEETHEADERW;
  1470. typedef struct _PROPSHEETHEADER FAR* LPPROPSHEETHEADERA;
  1471.  
  1472. #else
  1473. // We are building under Windows NT.
  1474.  
  1475. // Go ahead and define LPPROPSHEETHEADERW as it should be defined!
  1476.  
  1477. typedef struct _PROPSHEETHEADERW FAR* LPPROPSHEETHEADERW;
  1478. typedef struct _PROPSHEETHEADERA FAR* LPPROPSHEETHEADERA;
  1479.  
  1480. #ifdef UNICODE
  1481. #define LPPROPSHEETHEADER LPPROPSHEETHEADERW
  1482. #else
  1483. #define LPPROPSHEETHEADER LPPROPSHEETHEADERA
  1484. #endif
  1485.  
  1486. #endif // PSM_SETFINISHTEXTA
  1487.  
  1488. #else // WINVER
  1489.  
  1490. // If WINVER < 0x400, then PROPSHEETHEADER stuff isn't defined.
  1491. // The user won't be able to use the prop-sheet code, so we just define the
  1492. // necessary structures to be void pointers to enable to header file to
  1493. // at least compile correctly.
  1494.  
  1495. typedef void FAR* LPPROPSHEETHEADERW;
  1496. typedef void FAR* LPPROPSHEETHEADERA;
  1497.  
  1498. #ifdef UNICODE
  1499. #define LPPROPSHEETHEADER LPPROPSHEETHEADERW
  1500. #else
  1501. #define LPPROPSHEETHEADER LPPROPSHEETHEADERA
  1502. #endif
  1503.  
  1504. #endif // WINVER
  1505.  
  1506. typedef struct tagOLEUIOBJECTPROPSW
  1507. {
  1508.         // These IN fields are standard across all OLEUI property sheets.
  1509.         DWORD           cbStruct;       // Structure Size
  1510.         DWORD           dwFlags;        // IN-OUT: global flags for the sheet
  1511.  
  1512.         // Standard PROPSHEETHEADER used for extensibility
  1513.         LPPROPSHEETHEADERW   lpPS;         // IN: property sheet header
  1514.  
  1515.         // Data which allows manipulation of the object
  1516.         DWORD           dwObject;       // IN: identifier for the object
  1517.         LPOLEUIOBJINFOW lpObjInfo;      // IN: interface to manipulate object
  1518.  
  1519.         // Data which allows manipulation of the link
  1520.         DWORD           dwLink;         // IN: identifier for the link
  1521.         LPOLEUILINKINFOW lpLinkInfo;     // IN: interface to manipulate link
  1522.  
  1523.         // Data specfic to each page
  1524.         LPOLEUIGNRLPROPSW lpGP;          // IN: general page
  1525.         LPOLEUIVIEWPROPSW lpVP;          // IN: view page
  1526.         LPOLEUILINKPROPSW lpLP;          // IN: link page
  1527.  
  1528. } OLEUIOBJECTPROPSW, *POLEUIOBJECTPROPSW, FAR* LPOLEUIOBJECTPROPSW;
  1529.  
  1530. typedef struct tagOLEUIOBJECTPROPSA
  1531. {
  1532.         // These IN fields are standard across all OLEUI property sheets.
  1533.         DWORD           cbStruct;       // Structure Size
  1534.         DWORD           dwFlags;        // IN-OUT: global flags for the sheet
  1535.  
  1536.         // Standard PROPSHEETHEADER used for extensibility
  1537.         LPPROPSHEETHEADERA  lpPS;         // IN: property sheet header
  1538.  
  1539.         // Data which allows manipulation of the object
  1540.         DWORD           dwObject;       // IN: identifier for the object
  1541.         LPOLEUIOBJINFOA lpObjInfo;      // IN: interface to manipulate object
  1542.  
  1543.         // Data which allows manipulation of the link
  1544.         DWORD           dwLink;         // IN: identifier for the link
  1545.         LPOLEUILINKINFOA lpLinkInfo;     // IN: interface to manipulate link
  1546.  
  1547.         // Data specfic to each page
  1548.         LPOLEUIGNRLPROPSA lpGP;          // IN: general page
  1549.         LPOLEUIVIEWPROPSA lpVP;          // IN: view page
  1550.         LPOLEUILINKPROPSA lpLP;          // IN: link page
  1551.  
  1552. } OLEUIOBJECTPROPSA, *POLEUIOBJECTPROPSA, FAR* LPOLEUIOBJECTPROPSA;
  1553.  
  1554. STDAPI_(UINT) OleUIObjectPropertiesW(LPOLEUIOBJECTPROPSW);
  1555. STDAPI_(UINT) OleUIObjectPropertiesA(LPOLEUIOBJECTPROPSA);
  1556.  
  1557. #ifdef UNICODE
  1558. #define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSW
  1559. #define OLEUIOBJECTPROPS OLEUIOBJECTPROPSW
  1560. #define POLEUIOBJECTPROPS POLEUIOBJECTPROPSW
  1561. #define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSW
  1562. #define OleUIObjectProperties OleUIObjectPropertiesW
  1563. #else
  1564. #define tagOLEUIOBJECTPROPS tagOLEUIOBJECTPROPSA
  1565. #define OLEUIOBJECTPROPS OLEUIOBJECTPROPSA
  1566. #define POLEUIOBJECTPROPS POLEUIOBJECTPROPSA
  1567. #define LPOLEUIOBJECTPROPS LPOLEUIOBJECTPROPSA
  1568. #define OleUIObjectProperties OleUIObjectPropertiesA
  1569. #endif
  1570.  
  1571. // Flags for OLEUIOBJECTPROPS
  1572. #define OPF_OBJECTISLINK                0x00000001L
  1573. #define OPF_NOFILLDEFAULT               0x00000002L
  1574. #define OPF_SHOWHELP                    0x00000004L
  1575. #define OPF_DISABLECONVERT              0x00000008L
  1576.  
  1577. // Errors for OleUIObjectProperties
  1578. #define OLEUI_OPERR_SUBPROPNULL         (OLEUI_ERR_STANDARDMAX+0)
  1579. #define OLEUI_OPERR_SUBPROPINVALID      (OLEUI_ERR_STANDARDMAX+1)
  1580. #define OLEUI_OPERR_PROPSHEETNULL       (OLEUI_ERR_STANDARDMAX+2)
  1581. #define OLEUI_OPERR_PROPSHEETINVALID    (OLEUI_ERR_STANDARDMAX+3)
  1582. #define OLEUI_OPERR_SUPPROP             (OLEUI_ERR_STANDARDMAX+4)
  1583. #define OLEUI_OPERR_PROPSINVALID        (OLEUI_ERR_STANDARDMAX+5)
  1584. #define OLEUI_OPERR_PAGESINCORRECT      (OLEUI_ERR_STANDARDMAX+6)
  1585. #define OLEUI_OPERR_INVALIDPAGES        (OLEUI_ERR_STANDARDMAX+7)
  1586. #define OLEUI_OPERR_NOTSUPPORTED        (OLEUI_ERR_STANDARDMAX+8)
  1587. #define OLEUI_OPERR_DLGPROCNOTNULL      (OLEUI_ERR_STANDARDMAX+9)
  1588. #define OLEUI_OPERR_LPARAMNOTZERO       (OLEUI_ERR_STANDARDMAX+10)
  1589.  
  1590. #define OLEUI_GPERR_STRINGINVALID       (OLEUI_ERR_STANDARDMAX+11)
  1591. #define OLEUI_GPERR_CLASSIDINVALID      (OLEUI_ERR_STANDARDMAX+12)
  1592. #define OLEUI_GPERR_LPCLSIDEXCLUDEINVALID   (OLEUI_ERR_STANDARDMAX+13)
  1593. #define OLEUI_GPERR_CBFORMATINVALID     (OLEUI_ERR_STANDARDMAX+14)
  1594. #define OLEUI_VPERR_METAPICTINVALID     (OLEUI_ERR_STANDARDMAX+15)
  1595. #define OLEUI_VPERR_DVASPECTINVALID     (OLEUI_ERR_STANDARDMAX+16)
  1596. #define OLEUI_LPERR_LINKCNTRNULL        (OLEUI_ERR_STANDARDMAX+17)
  1597. #define OLEUI_LPERR_LINKCNTRINVALID     (OLEUI_ERR_STANDARDMAX+18)
  1598.  
  1599. #define OLEUI_OPERR_PROPERTYSHEET       (OLEUI_ERR_STANDARDMAX+19)
  1600. #define OLEUI_OPERR_OBJINFOINVALID      (OLEUI_ERR_STANDARDMAX+20)
  1601. #define OLEUI_OPERR_LINKINFOINVALID     (OLEUI_ERR_STANDARDMAX+21)
  1602.  
  1603. // wParam used by PSM_QUERYSIBLINGS
  1604. #define OLEUI_QUERY_GETCLASSID          0xFF00  // override class id for icon
  1605. #define OLEUI_QUERY_LINKBROKEN          0xFF01  // after link broken
  1606.  
  1607. /////////////////////////////////////////////////////////////////////////////
  1608. // PROMPT USER DIALOGS
  1609.  
  1610. int CDECL OleUIPromptUserW(int nTemplate, HWND hwndParent, ...);
  1611. int CDECL OleUIPromptUserA(int nTemplate, HWND hwndParent, ...);
  1612.  
  1613. #ifdef UNICODE
  1614. #define OleUIPromptUser OleUIPromptUserW
  1615. #else
  1616. #define OleUIPromptUser OleUIPromptUserA
  1617. #endif
  1618.  
  1619. STDAPI_(BOOL) OleUIUpdateLinksW(LPOLEUILINKCONTAINERW lpOleUILinkCntr,
  1620.         HWND hwndParent, LPWSTR lpszTitle, int cLinks);
  1621. STDAPI_(BOOL) OleUIUpdateLinksA(LPOLEUILINKCONTAINERA lpOleUILinkCntr,
  1622.         HWND hwndParent, LPSTR lpszTitle, int cLinks);
  1623.  
  1624. #ifdef UNICODE
  1625. #define OleUIUpdateLinks OleUIUpdateLinksW
  1626. #else
  1627. #define OleUIUpdateLinks OleUIUpdateLinksA
  1628. #endif
  1629.  
  1630. /////////////////////////////////////////////////////////////////////////////
  1631.  
  1632. #pragma pack(pop)
  1633.  
  1634. #ifdef __cplusplus
  1635. }
  1636. #endif
  1637.  
  1638. #endif // RC_INVOKED
  1639.  
  1640. #pragma option -b.
  1641. #endif  //_OLEDLG_H_
  1642.  
  1643. /////////////////////////////////////////////////////////////////////////////
  1644.