home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / sdk / winh / win95 / intshcut.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-07-11  |  19.0 KB  |  589 lines

  1. /*
  2.  * intshcut.h - Internet Shortcut interface definitions.
  3.  *
  4.  * Copyright (c) 1995, Microsoft Corporation.  All rights reserved.
  5.  */
  6.  
  7.  
  8. #ifndef __INTSHCUT_H__
  9. #define __INTSHCUT_H__
  10.  
  11.  
  12. /* Headers
  13.  **********/
  14.  
  15. #include <isguids.h>
  16.  
  17.  
  18. #ifdef __cplusplus
  19. extern "C" {                        /* Assume C declarations for C++. */
  20. #endif   /* __cplusplus */
  21.  
  22.  
  23. /* Constants
  24.  ************/
  25.  
  26. /* Define API decoration for direct import of DLL functions. */
  27.  
  28. #ifdef _INTSHCUT_
  29. #define INTSHCUTAPI
  30. #else
  31. #define INTSHCUTAPI                 DECLSPEC_IMPORT
  32. #endif
  33.  
  34. /* HRESULTs */
  35.  
  36. /*
  37.    @doc EXTERNAL
  38.  
  39.    @const HRESULT | E_FLAGS | The flag combination is invalid.
  40. */
  41.  
  42. #define E_FLAGS                     MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1000)
  43.  
  44. /*
  45.    @doc EXTERNAL INTSHCUTAPI
  46.  
  47.    @const HRESULT | IS_E_EXEC_FAILED | The URL's protocol handler failed to
  48.    run.
  49. */
  50.  
  51. #define IS_E_EXEC_FAILED            MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x2002)
  52.  
  53. /*
  54.    @doc EXTERNAL INTSHCUTAPI
  55.  
  56.    @const HRESULT | URL_E_INVALID_SYNTAX | The URL's syntax is invalid.
  57. */
  58.  
  59. #define URL_E_INVALID_SYNTAX        MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1001)
  60.  
  61. /*
  62.    @doc EXTERNAL INTSHCUTAPI
  63.  
  64.    @const HRESULT | URL_E_UNREGISTERED_PROTOCOL | The URL's protocol does not
  65.    have a registered protocol handler.
  66. */
  67.  
  68. #define URL_E_UNREGISTERED_PROTOCOL MAKE_SCODE(SEVERITY_ERROR, FACILITY_ITF, 0x1002)
  69.  
  70.  
  71. /* Interfaces
  72.  *************/
  73.  
  74. /******************************************************************************
  75.  
  76. @doc EXTERNAL INTSHCUTIFACE
  77.  
  78. @interface IUniformResourceLocator | Methods for manipulating a uniform
  79. resource locator (URL).
  80.  
  81. @xref <f URLAssociationDialog> <f TranslateURL>
  82.  
  83. ******************************************************************************/
  84.  
  85. /*
  86.    @doc EXTERNAL INTSHCUTIFACE
  87.  
  88.    @enum IURL_SETURL_FLAGS | IUniformResourceLocator::SetURL() input flags.
  89. */
  90.  
  91. typedef enum iurl_seturl_flags
  92. {
  93.    /*
  94.       @emem IURL_SETURL_FL_GUESS_PROTOCOL | If set, guess protocol if missing.
  95.       If clear, do not guess protocol.
  96.    */
  97.  
  98.    IURL_SETURL_FL_GUESS_PROTOCOL          = 0x0001,
  99.  
  100.    /*
  101.       @emem IURL_SETURL_FL_USE_DEFAULT_PROTOCOL | If set, use default protocol
  102.       if missing.  If clear, do not use default protocol.
  103.    */
  104.  
  105.    IURL_SETURL_FL_USE_DEFAULT_PROTOCOL    = 0x0002,
  106.  
  107.    ALL_IURL_SETURL_FLAGS                  = (IURL_SETURL_FL_GUESS_PROTOCOL |
  108.                                              IURL_SETURL_FL_USE_DEFAULT_PROTOCOL)
  109. }
  110. IURL_SETURL_FLAGS;
  111.  
  112. /*
  113.    @doc EXTERNAL INTSHCUTIFACE
  114.  
  115.    @enum IURL_INVOKECOMMAND_FLAGS | IUniformResourceLocator::InvokeCommand()
  116.    input flags.
  117. */
  118.  
  119. typedef enum iurl_invokecommand_flags
  120. {
  121.    /*
  122.       @emem IURL_INVOKECOMMAND_FL_ALLOW_UI | If set, interaction with the user
  123.       is allowed.  hwndParent is valid.  If clear, interaction with the user is
  124.       not allowed.  hwndParent is ignored.
  125.    */
  126.  
  127.    IURL_INVOKECOMMAND_FL_ALLOW_UI                  = 0x0001,
  128.  
  129.    /*
  130.       @emem IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB | If set, the default verb
  131.       for the Internet Shortcut's protocol is to be used.  pcszVerb is ignored.
  132.       If clear, the verb is specified by pcszVerb.
  133.    */
  134.  
  135.    IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB          = 0x0002,
  136.  
  137.    ALL_IURL_INVOKECOMMAND_FLAGS                    = (IURL_INVOKECOMMAND_FL_ALLOW_UI |
  138.                                                       IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB)
  139. }
  140. IURL_INVOKECOMMAND_FLAGS;
  141.  
  142. /*
  143.    @doc EXTERNAL INTSHCUTIFACE
  144.  
  145.    @struct URLINVOKECOMMANDINFO | Information describing the command to be
  146.    invoked via IUniformResourceLocator::InvokeCommand().
  147. */
  148.  
  149. typedef struct urlinvokecommandinfo
  150. {
  151.    /*
  152.       @field DWORD | dwcbSize | Length of URLINVOKECOMMANDINFO structure in
  153.       bytes.  Should be filled in with sizeof(URLINVOKECOMMANDINFO) before
  154.       passing to IUniformResourceLocator::InvokeCommand().
  155.    */
  156.  
  157.    DWORD dwcbSize;
  158.  
  159.    /*
  160.       @field DWORD | dwFlags | A bit mask of flags from the
  161.       <t IURL_INVOKECOMMAND_FLAGS> enumeration.
  162.    */
  163.  
  164.    DWORD dwFlags;
  165.  
  166.    /*
  167.       @field HWND | hwndParent | A handle to the parent window of any windows
  168.       posted during IUniformResourceLocator::InvokeCommand().  Should be a
  169.       valid window handle if IURL_INVOKECOMMAND_FL_ALLOW_UI is set in dwFlags.
  170.       Ignored if IURL_INVOKECOMMAND_FL_ALLOW_UI is clear in dwFlags.
  171.    */
  172.  
  173.    HWND hwndParent;
  174.  
  175.    /*
  176.       @field PCSTR | pcszVerb | The verb to invoke.  Must be valid if
  177.       IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is clear in dwFlags.  Ignored if
  178.       IURL_INVOKECOMMAND_FL_USE_DEFAULT_VERB is set in dwFlags.
  179.    */
  180.  
  181.    PCSTR pcszVerb;
  182. }
  183. URLINVOKECOMMANDINFO;
  184. typedef URLINVOKECOMMANDINFO *PURLINVOKECOMMANDINFO;
  185. typedef const URLINVOKECOMMANDINFO CURLINVOKECOMMANDINFO;
  186. typedef const URLINVOKECOMMANDINFO *PCURLINVOKECOMMANDINFO;
  187.  
  188. #undef  INTERFACE
  189. #define INTERFACE IUniformResourceLocator
  190.  
  191. DECLARE_INTERFACE_(IUniformResourceLocator, IUnknown)
  192. {
  193.    /* IUnknown methods */
  194.  
  195.    STDMETHOD(QueryInterface)(THIS_
  196.                              REFIID riid,
  197.                              PVOID *ppvObject) PURE;
  198.  
  199.    STDMETHOD_(ULONG, AddRef)(THIS) PURE;
  200.  
  201.    STDMETHOD_(ULONG, Release)(THIS) PURE;
  202.  
  203.    /* IUniformResourceLocator methods */
  204.  
  205. /******************************************************************************
  206.  
  207. @doc EXTERNAL INTSHCUTIFACE
  208.  
  209. @method HRESULT | IUniformResourceLocator | SetURL | Sets an object's URL.
  210.  
  211. @parm PCSTR | pcszURL | The URL to be used by the object.
  212.  
  213. @parm DWORD | dwInFlags | A bit mask of flags from the <t IURL_SETURL_FLAGS>
  214. enumeration.
  215.  
  216. @rdesc Returns one of the following return codes on success:
  217.  
  218. @flag S_OK | The object's URL was set successfully.
  219.  
  220. otherwise returns one of the following return codes on error:
  221.  
  222. @flag E_OUTOFMEMORY | There is not enough memory to complete the operation.
  223.  
  224. @flag URL_E_INVALID_SYNTAX | The URL's syntax is invalid.
  225.  
  226. ******************************************************************************/
  227.  
  228.    STDMETHOD(SetURL)(THIS_
  229.                      PCSTR pcszURL,
  230.                      DWORD dwInFlags) PURE;
  231.  
  232. /******************************************************************************
  233.  
  234. @doc EXTERNAL INTSHCUTIFACE
  235.  
  236. @method HRESULT | IUniformResourceLocator | GetURL | Retrieves an object's URL.
  237.  
  238. @parm PSTR * | ppszURL | A pointer to a PSTR to be filled in with a pointer to
  239. the object's URL.  When finished, this string should be freed by calling
  240. SHFree().
  241.  
  242. @rdesc Returns one of the following return codes on success:
  243.  
  244. @flag S_OK | The object's URL was retrieved successfully.  *ppszURL points to
  245. the URL string.
  246.  
  247. @flag S_FALSE | The object does not have a URL associated with it.  *ppszURL is
  248. NULL.
  249.  
  250. otherwise returns one of the following return codes on error:
  251.  
  252. @flag E_OUTOFMEMORY | There is not enough memory to complete the operation.
  253.  
  254. ******************************************************************************/
  255.  
  256.    STDMETHOD(GetURL)(THIS_
  257.                      PSTR *ppszURL) PURE;
  258.  
  259. /******************************************************************************
  260.  
  261. @doc EXTERNAL INTSHCUTIFACE
  262.  
  263. @method HRESULT | IUniformResourceLocator | InvokeCommand | Invokes a command
  264. on an object's URL.
  265.  
  266. @parm PURLINVOKECOMMANDINFO | purlici | A pointer to a <t URLINVOKECOMMANDINFO>
  267. structure describing the command to be invoked.
  268.  
  269. @rdesc Returns one of the following return codes on success:
  270.  
  271. @flag S_OK | The object's URL was opened successfully.
  272.  
  273. @flag S_FALSE | The object does not have a URL associated with it.
  274.  
  275. otherwise returns one of the following return codes on error:
  276.  
  277. @flag E_OUTOFMEMORY | There is not enough memory to complete the operation.
  278.  
  279. @flag IS_E_EXEC_FAILED | The URL's protocol handler failed to run.
  280.  
  281. @flag URL_E_INVALID_SYNTAX | The URL's syntax is invalid.
  282.  
  283. @flag URL_E_UNREGISTERED_PROTOCOL | The URL's protocol does not have a
  284. registered protocol handler.
  285.  
  286. ******************************************************************************/
  287.  
  288.    STDMETHOD(InvokeCommand)(THIS_
  289.                             PURLINVOKECOMMANDINFO purlici) PURE;
  290. };
  291. typedef IUniformResourceLocator *PIUniformResourceLocator;
  292. typedef const IUniformResourceLocator CIUniformResourceLocator;
  293. typedef const IUniformResourceLocator *PCIUniformResourceLocator;
  294.  
  295.  
  296. /* Prototypes
  297.  *************/
  298.  
  299. /*
  300.    @doc EXTERNAL INTSHCUTAPI
  301.  
  302.    @enum TRANSLATEURL_IN_FLAGS | TranslateURL() input flags.
  303. */
  304.  
  305. typedef enum translateurl_in_flags
  306. {
  307.    /*
  308.       @emem TRANSLATEURL_FL_GUESS_PROTOCOL | If set, guess protocol if missing.
  309.       If clear, do not guess protocol.
  310.    */
  311.  
  312.    TRANSLATEURL_FL_GUESS_PROTOCOL         = 0x0001,
  313.  
  314.    /*
  315.       @emem TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL | If set, use default protocol
  316.       if missing.  If clear, do not use default protocol.
  317.    */
  318.  
  319.    TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL   = 0x0002,
  320.  
  321.    ALL_TRANSLATEURL_FLAGS                 = (TRANSLATEURL_FL_GUESS_PROTOCOL |
  322.                                              TRANSLATEURL_FL_USE_DEFAULT_PROTOCOL)
  323. }
  324. TRANSLATEURL_IN_FLAGS;
  325.  
  326. /******************************************************************************
  327.  
  328. @doc EXTERNAL INTSHCUTAPI
  329.  
  330. @func HRESULT | TranslateURL | Applies common translations to a URL string,
  331. creating a new URL string.
  332.  
  333. @parm PCSTR | pcszURL | A pointer to the URL string to be translated.
  334.  
  335. @parm DWORD | dwInFlags | A bit mask of flags from the
  336. <t TRANSLATEURL_IN_FLAGS> enumeration.
  337.  
  338. @parm PSTR * | ppszTranslatedURL | A pointer to the newly created translated
  339. URL string, if any.  *ppszTranslatedURL is only valid if S_OK is returned.
  340. If valid, *ppszTranslatedURL should be freed by calling LocalFree().
  341. *ppszTranslatedURL is NULL on error.
  342.  
  343. @rdesc Returns one of the following return codes on success:
  344.  
  345. @flag S_OK | The URL string was translated successfully, and *ppszTranslatedURL
  346. points to the translated URL string.
  347.  
  348. @flag S_FALSE | The URL string did not require translation.  *ppszTranslatedURL
  349. is NULL.
  350.  
  351. otherwise returns one of the following return codes on error:
  352.  
  353. @flag E_FLAGS | The flag combination passed in dwFlags is invalid.
  354.  
  355. @flag E_OUTOFMEMORY | There is not enough memory to complete the operation.
  356.  
  357. @flag E_POINTER | One of the input pointers was invalid.
  358.  
  359. @comm TranslateURL() does not perform any validation on the syntax of the input
  360. URL string.  A successful return value does not indicate that the input or
  361. output URL strings are valid URLs.
  362.  
  363. ******************************************************************************/
  364.  
  365. INTSHCUTAPI HRESULT WINAPI TranslateURLA(PCSTR pcszURL,
  366.                                          DWORD dwInFlags,
  367.                                          PSTR *ppszTranslatedURL);
  368. INTSHCUTAPI HRESULT WINAPI TranslateURLW(PCWSTR pcszURL,
  369.                                          DWORD dwInFlags,
  370.                                          PWSTR *ppszTranslatedURL);
  371. #ifdef UNICODE
  372. #define TranslateURL             TranslateURLW
  373. #else
  374. #define TranslateURL             TranslateURLA
  375. #endif   /* UNICODE */
  376.  
  377. /*
  378.    @doc EXTERNAL INTSHCUTAPI
  379.  
  380.    @enum URLASSOCIATIONDIALOG_IN_FLAGS | URLAssociationDialog() input flags.
  381. */
  382.  
  383. typedef enum urlassociationdialog_in_flags
  384. {
  385.    /*
  386.       @emem URLASSOCDLG_FL_USE_DEFAULT_NAME | If set, pcszFile is not valid.
  387.       The default URL file name should be used.  If clear, pcszFile is valid.
  388.    */
  389.  
  390.    URLASSOCDLG_FL_USE_DEFAULT_NAME        = 0x0001,
  391.  
  392.    /*
  393.       @emem URLASSOCDLG_FL_REGISTER_ASSOC | If set, the application selected is
  394.       to be registered as the handler for URLs of pcszURL's protocol.  If
  395.       clear, no association is to be registered.  An application is only
  396.       registered if this flag is set, and the user indicates that a persistent
  397.       association is to be made.  Registration is only possible if
  398.       URLASSOCDLG_FL_USE_DEFAULT_NAME is clear.
  399.    */
  400.  
  401.    URLASSOCDLG_FL_REGISTER_ASSOC          = 0x0002,
  402.  
  403.    ALL_URLASSOCDLG_FLAGS                  = (URLASSOCDLG_FL_USE_DEFAULT_NAME |
  404.                                              URLASSOCDLG_FL_REGISTER_ASSOC)
  405. }
  406. URLASSOCIATIONDIALOG_IN_FLAGS;
  407.  
  408. /******************************************************************************
  409.  
  410. @doc EXTERNAL INTSHCUTAPI
  411.  
  412. @func HRESULT | URLAssociationDialog | Invokes the unregistered URL protocol
  413. dialog box.
  414.  
  415. @parm HWND | hwndParent | A handle to the window to be used as the parent
  416. window of any posted child windows.
  417.  
  418. @parm DWORD | dwInFlags | A bit mask of flags from the
  419. <t URLASSOCIATIONDIALOG_IN_FLAGS> enumeration.
  420.  
  421. @parm PSTR | pszAppBuf | A buffer to be filled in on success with the path of
  422. the application selected by the user.  pszAppBuf's buffer is filled in with the
  423. empty string on failure.
  424.  
  425. @parm UINT | ucAppBufLen | The length of pszAppBuf's buffer.
  426.  
  427. @rdesc Returns one of the following return codes on success:
  428.  
  429. @flag S_OK | Application registered with URL protocol.
  430.  
  431. @flag S_FALSE | Nothing registered.  One-time execution via selected
  432. application requested.
  433.  
  434. otherwise returns one of the following return codes on error:
  435.  
  436. @flag E_ABORT | The user cancelled the operation.
  437.  
  438. @flag E_FLAGS | The flag combination passed in dwFlags is invalid.
  439.  
  440. @flag E_OUTOFMEMORY | There is not enough memory to complete the operation.
  441.  
  442. @flag E_POINTER | One of the input pointers is invalid.
  443.  
  444. @flag URL_E_INVALID_SYNTAX | The URL's syntax is invalid.
  445.  
  446. ******************************************************************************/
  447.  
  448. INTSHCUTAPI HRESULT WINAPI URLAssociationDialogA(HWND hwndParent,
  449.                                                  DWORD dwInFlags,
  450.                                                  PCSTR pcszFile,
  451.                                                  PCSTR pcszURL,
  452.                                                  PSTR pszAppBuf,
  453.                                                  UINT ucAppBufLen);
  454. INTSHCUTAPI HRESULT WINAPI URLAssociationDialogW(HWND hwndParent,
  455.                                                  DWORD dwInFlags,
  456.                                                  PCWSTR pcszFile,
  457.                                                  PCWSTR pcszURL,
  458.                                                  PWSTR pszAppBuf,
  459.                                                  UINT ucAppBufLen);
  460. #ifdef UNICODE
  461. #define URLAssociationDialog     URLAssociationDialogW
  462. #else
  463. #define URLAssociationDialog     URLAssociationDialogA
  464. #endif  /* UNICODE */
  465.  
  466. /*
  467.    @doc EXTERNAL MIMEAPI
  468.  
  469.    @enum MIMEASSOCIATIONDIALOG_IN_FLAGS | MIMEAssociationDialog() input flags.
  470. */
  471.  
  472. typedef enum mimeassociationdialog_in_flags
  473. {
  474.    /*
  475.       @emem TRANSLATEURL_FL_GUESS_PROTOCOL | If set, the application selected
  476.       is to be registered as the handler for files of the given MIME type.  If
  477.       clear, no association is to be registered.  An application is only
  478.       registered if this flag is set, and the user indicates that a persistent
  479.       association is to be made.  Registration is only possible if pcszFile
  480.       contains an extension.
  481.    */
  482.  
  483.    MIMEASSOCDLG_FL_REGISTER_ASSOC         = 0x0001,
  484.  
  485.    ALL_MIMEASSOCDLG_FLAGS                 = MIMEASSOCDLG_FL_REGISTER_ASSOC
  486. }
  487. MIMEASSOCIATIONDIALOG_IN_FLAGS;
  488.  
  489. /******************************************************************************
  490.  
  491. @doc EXTERNAL MIMEAPI
  492.  
  493. @func HRESULT | MIMEAssociationDialog | Invokes the unregistered MIME content
  494. type dialog box.
  495.  
  496. @parm HWND | hwndParent | A handle to the window to be used as the parent
  497. window of any posted child windows.
  498.  
  499. @parm DWORD | dwInFlags | A bit mask of flags from the
  500. <t MIMEASSOCIATIONDIALOG_IN_FLAGS> enumeration.
  501.  
  502. @parm PCSTR | pcszFile | A pointer to a string indicating the name of the file
  503. containing data of pcszMIMEContentType's content type.  Ignored if
  504. MIMEASSOCDLG_FL_USE_DEFAULT_NAME is set.
  505.  
  506. @parm PCSTR | pcszMIMEContentType | A pointer to a string indicating the
  507. content type for which an application is sought.
  508.  
  509. @parm PSTR | pszAppBuf | A buffer to be filled in on success with the path of
  510. the application selected by the user.  pszAppBuf's buffer is filled in with the
  511. empty string on failure.
  512.  
  513. @parm UINT | ucAppBufLen | The length of pszAppBuf's buffer.
  514.  
  515. @rdesc Returns one of the following return codes on success:
  516.  
  517. @flag S_OK | MIME content type associated with extension.  Extension associated
  518. as default extension for content type.  Application associated with extension.
  519.  
  520. @flag S_FALSE | Nothing registered.  One-time execution via selected
  521. application requested.
  522.  
  523. otherwise returns one of the following return codes on error:
  524.  
  525. @flag E_ABORT | The user cancelled the operation.
  526.  
  527. @flag E_FLAGS | The flag combination passed in dwFlags is invalid.
  528.  
  529. @flag E_OUTOFMEMORY | There is not enough memory to complete the operation.
  530.  
  531. @flag E_POINTER | One of the input pointers is invalid.
  532.  
  533. @comm MIMEAssociationDialog() does not perform any validation on the syntax of
  534. the input content type string.  A successful return value does not indicate
  535. that the input MIME content type string is a valid content type.
  536.  
  537. ******************************************************************************/
  538.  
  539. INTSHCUTAPI HRESULT WINAPI MIMEAssociationDialogA(HWND hwndParent,
  540.                                                   DWORD dwInFlags,
  541.                                                   PCSTR pcszFile,
  542.                                                   PCSTR pcszMIMEContentType,
  543.                                                   PSTR pszAppBuf,
  544.                                                   UINT ucAppBufLen);
  545. INTSHCUTAPI HRESULT WINAPI MIMEAssociationDialogW(HWND hwndParent,
  546.                                                   DWORD dwInFlags,
  547.                                                   PCWSTR pcszFile,
  548.                                                   PCWSTR pcszMIMEContentType,
  549.                                                   PWSTR pszAppBuf,
  550.                                                   UINT ucAppBufLen);
  551. #ifdef UNICODE
  552. #define MIMEAssociationDialog    MIMEAssociationDialogW
  553. #else
  554. #define MIMEAssociationDialog    MIMEAssociationDialogA
  555. #endif  /* UNICODE */
  556.  
  557.  
  558. /******************************************************************************
  559.  
  560. @doc EXTERNAL INTSHCUTAPI
  561.  
  562. @func BOOL | InetIsOffline | Determines if the user wants to be "offline" (get
  563. all information from cache).
  564.  
  565. @parm DWORD | dwFlags | A bit mask of flags.  No flags are currently defined.
  566. This parameter must be 0.
  567.  
  568. @rdesc Returns TRUE to indicate that the local system is not currently
  569. connected to the Internet.  Returns FALSE to indicate that either the local
  570. system is connected to the Internet, or no attempt has yet been made to connect
  571. the local system to the Internet.  Applications that wish to support an
  572. off-line mode should do so if InetIsOffline() returns TRUE.
  573.  
  574. @comm Off-line mode begins when the user has been prompted to dial-in to the
  575. Internet, but canceled the attempt.
  576.  
  577. ******************************************************************************/
  578.  
  579. INTSHCUTAPI BOOL WINAPI InetIsOffline(DWORD dwFlags);
  580.  
  581.  
  582. #ifdef __cplusplus
  583. }                                   /* End of extern "C" {. */
  584. #endif   /* __cplusplus */
  585.  
  586.  
  587. #endif   /* ! __INTSHCUT_H__ */
  588.  
  589.