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