ole2.h
来自「用于查询PC机上的USB端口是否有设备挂接上」· C头文件 代码 · 共 1,209 行 · 第 1/3 页
H
1,209 行
/*****************************************************************************\
* *
* ole2.h - main ole2 header; includes all subcomponents *
* *
* Version 1.0 *
* *
* Copyright (c) 1993-1994, Microsoft Corp. All rights reserved. *
* *
\*****************************************************************************/
#if !defined( _OLE2_H_ )
#define _OLE2_H_
#ifndef RC_INVOKED
#pragma warning(disable:4001)
#endif /* RC_INVOKED */
#include <string.h>
/****** Standard Object Definitions *****************************************/
#include <compobj.h>
// *************** FACILITY_ITF scodes common to all interfaces ************
//
// By convention, OLE interfaces divide the FACILITY_ITF range of errors
// into nonoverlapping subranges. If an interface returns a FACILITY_ITF
// scode, it must be from the range associated with that interface or from
// the shared range: OLE_E_FIRST...OLE_E_LAST.
//
// error codes
#define OLE_E_OLEVERB (OLE_E_FIRST)
// invalid OLEVERB structure
#define OLE_E_ADVF (OLE_E_FIRST+1)
// invalid advise flags
#define OLE_E_ENUM_NOMORE (OLE_E_FIRST+2)
// you can't enuemrate any more, because the associated data is missing
#define OLE_E_ADVISENOTSUPPORTED (OLE_E_FIRST+3)
// this implementation doesn't take advises
#define OLE_E_NOCONNECTION (OLE_E_FIRST+4)
// there is no connection for this connection id
#define OLE_E_NOTRUNNING (OLE_E_FIRST+5)
// need run the object to perform this operation
#define OLE_E_NOCACHE (OLE_E_FIRST+6)
// there is no cache to operate on
#define OLE_E_BLANK (OLE_E_FIRST+7)
// Uninitialized object
#define OLE_E_CLASSDIFF (OLE_E_FIRST+8)
// linked object's source class has changed
#define OLE_E_CANT_GETMONIKER (OLE_E_FIRST+9)
// not able to get the moniker of the object
#define OLE_E_CANT_BINDTOSOURCE (OLE_E_FIRST+10)
// not able to bind to the source
#define OLE_E_STATIC (OLE_E_FIRST+11)
// object is static, operation not allowed
#define OLE_E_PROMPTSAVECANCELLED (OLE_E_FIRST+12)
// user cancelled out of save dialog
#define OLE_E_INVALIDRECT (OLE_E_FIRST+13)
// invalid rectangle
#define OLE_E_WRONGCOMPOBJ (OLE_E_FIRST+14)
// compobj.dll is too old for the ole2.dll initialized
#define OLE_E_INVALIDHWND (OLE_E_FIRST+15)
// invalid window handle
#define OLE_E_NOT_INPLACEACTIVE (OLE_E_FIRST+16)
// object is not in any of the inplace active states
#define DVGEN_E_FIRST (OLE_E_FIRST+100)
#define DV_E_FORMATETC (DVGEN_E_FIRST)
// invalid FORMATETC structure
#define DV_E_DVTARGETDEVICE (DVGEN_E_FIRST+1)
// invalid DVTARGETDEVICE structure
#define DV_E_STGMEDIUM (DVGEN_E_FIRST+2)
// invalid STDGMEDIUM structure
#define DV_E_STATDATA (DVGEN_E_FIRST+3)
// invalid STATDATA structure
#define DV_E_LINDEX (DVGEN_E_FIRST+4)
// invalid lindex
#define DV_E_TYMED (DVGEN_E_FIRST+5)
// invalid tymed
#define DV_E_CLIPFORMAT (DVGEN_E_FIRST+6)
// invalid clipboard format
#define DV_E_DVASPECT (DVGEN_E_FIRST+7)
// invalid aspect(s)
#define DV_E_DVTARGETDEVICE_SIZE (DVGEN_E_FIRST+8)
// tdSize paramter of the DVTARGETDEVICE structure is invalid
#define DV_E_NOIVIEWOBJECT (DVGEN_E_FIRST+9)
// object doesn't support IViewObject interface
// Success codes
#define OLE_S_USEREG (OLE_S_FIRST)
// use the reg database to provide the requested info
#define OLE_S_STATIC (OLE_S_FIRST+1)
// success, but static
#define OLE_S_MAC_CLIPFORMAT (OLE_S_FIRST+2)
// macintosh clipboard format
//*************************** Interface or API specific scodes *************
// Errors for OleConvertOLESTREAMToIStorage and OleConvertIStorageToOLESTREAM
// OLESTREAM Get method failed
#define CONVERT10_E_OLESTREAM_GET (CONVERT10_E_FIRST + 0)
// OLESTREAM Put method failed
#define CONVERT10_E_OLESTREAM_PUT (CONVERT10_E_FIRST + 1)
// Contents of the OLESTREAM not in correct format
#define CONVERT10_E_OLESTREAM_FMT (CONVERT10_E_FIRST + 2)
// There was in an error in a Windows GDI call while converting the bitmap
// to a DIB.
#define CONVERT10_E_OLESTREAM_BITMAP_TO_DIB (CONVERT10_E_FIRST + 3)
// Contents of the IStorage not in correct format
#define CONVERT10_E_STG_FMT (CONVERT10_E_FIRST + 4)
// Contents of IStorage is missing one of the standard streams ("\1CompObj",
// "\1Ole", "\2OlePres000"). This may be the storage for a DLL object, or a
// class that does not use the def handler.
#define CONVERT10_E_STG_NO_STD_STREAM (CONVERT10_E_FIRST + 5)
// There was in an error in a Windows GDI call while converting the DIB
// to a bitmap.
#define CONVERT10_E_STG_DIB_TO_BITMAP (CONVERT10_E_FIRST + 6)
// Returned by either API, this scode indicates that the original object
// had no presentation, therefore the converted object does not either.
#define CONVERT10_S_NO_PRESENTATION (CONVERT10_S_FIRST + 0)
// Errors for Clipboard functions
// OpenClipboard Failed
#define CLIPBRD_E_CANT_OPEN (CLIPBRD_E_FIRST + 0)
// EmptyClipboard Failed
#define CLIPBRD_E_CANT_EMPTY (CLIPBRD_E_FIRST + 1)
// SetClipboard Failed
#define CLIPBRD_E_CANT_SET (CLIPBRD_E_FIRST + 2)
// Data on clipboard is invalid
#define CLIPBRD_E_BAD_DATA (CLIPBRD_E_FIRST + 3)
// CloseClipboard Failed
#define CLIPBRD_E_CANT_CLOSE (CLIPBRD_E_FIRST + 4)
/****** OLE value types *****************************************************/
/* rendering options */
typedef enum tagOLERENDER
{
OLERENDER_NONE = 0,
OLERENDER_DRAW = 1,
OLERENDER_FORMAT = 2,
OLERENDER_ASIS = 3
} OLERENDER;
typedef OLERENDER FAR* LPOLERENDER;
// OLE verb; returned by IEnumOLEVERB
typedef struct FARSTRUCT tagOLEVERB
{
LONG lVerb;
LPSTR lpszVerbName;
DWORD fuFlags;
DWORD grfAttribs;
} OLEVERB, FAR* LPOLEVERB;
// Bitwise verb attributes used in OLEVERB.grfAttribs
typedef enum tagOLEVERBATTRIB // bitwise
{
OLEVERBATTRIB_NEVERDIRTIES = 1,
OLEVERBATTRIB_ONCONTAINERMENU = 2
} OLEVERBATTRIB;
// IOleObject::GetUserType optons; determines which form of the string to use
typedef enum tagUSERCLASSTYPE
{
USERCLASSTYPE_FULL = 1,
USERCLASSTYPE_SHORT= 2,
USERCLASSTYPE_APPNAME= 3,
} USERCLASSTYPE;
// bits returned from IOleObject::GetMistStatus
typedef enum tagOLEMISC // bitwise
{
OLEMISC_RECOMPOSEONRESIZE = 1,
OLEMISC_ONLYICONIC = 2,
OLEMISC_INSERTNOTREPLACE = 4,
OLEMISC_STATIC = 8,
OLEMISC_CANTLINKINSIDE = 16,
OLEMISC_CANLINKBYOLE1 = 32,
OLEMISC_ISLINKOBJECT = 64,
OLEMISC_INSIDEOUT = 128,
OLEMISC_ACTIVATEWHENVISIBLE = 256
} OLEMISC;
// IOleObject::Close options
typedef enum tagOLECLOSE
{
OLECLOSE_SAVEIFDIRTY = 0,
OLECLOSE_NOSAVE = 1,
OLECLOSE_PROMPTSAVE = 2
} OLECLOSE;
// IOleObject::GetMoniker and IOleClientSite::GetMoniker options; determines
// if and how monikers should be assigned.
typedef enum tagOLEGETMONIKER
{
OLEGETMONIKER_ONLYIFTHERE=1,
OLEGETMONIKER_FORCEASSIGN=2,
OLEGETMONIKER_UNASSIGN=3,
OLEGETMONIKER_TEMPFORUSER=4
} OLEGETMONIKER;
// IOleObject::GetMoniker, IOleObject::SetMoniker and
// IOleClientSite::GetMoniker options; determines which moniker to use
typedef enum tagOLEWHICHMK
{
OLEWHICHMK_CONTAINER=1,
OLEWHICHMK_OBJREL=2,
OLEWHICHMK_OBJFULL=3
} OLEWHICHMK;
#ifdef WIN32
#define LPSIZEL PSIZEL
#elif (WINVER < 0x0400)
typedef struct FARSTRUCT tagSIZEL
{
long cx;
long cy;
} SIZEL, FAR* LPSIZEL;
#endif
#ifdef WIN32
#define LPRECTL PRECTL
#elif (WINVER < 0x0400)
typedef struct FARSTRUCT tagRECTL
{
long left;
long top;
long right;
long bottom;
} RECTL, FAR* LPRECTL;
typedef struct FARSTRUCT tagPOINTL {
LONG x;
LONG y;
} POINTL;
#endif
#ifndef LPCRECT
typedef const RECT FAR* LPCRECT;
#endif
#ifndef LPCRECTL
typedef const RECTL FAR* LPCRECTL;
#endif
/***** OLE 1.0 OLESTREAM declarations *************************************/
typedef struct _OLESTREAM FAR* LPOLESTREAM;
typedef struct _OLESTREAMVTBL
{
DWORD (CALLBACK* Get)(LPOLESTREAM, void FAR*, DWORD);
DWORD (CALLBACK* Put)(LPOLESTREAM, const void FAR*, DWORD);
} OLESTREAMVTBL;
typedef OLESTREAMVTBL FAR* LPOLESTREAMVTBL;
typedef struct _OLESTREAM
{
LPOLESTREAMVTBL lpstbl;
} OLESTREAM;
/****** Clipboard Data structures *****************************************/
typedef struct tagOBJECTDESCRIPTOR
{
ULONG cbSize; // Size of structure in bytes
CLSID clsid; // CLSID of data being transferred
DWORD dwDrawAspect; // Display aspect of the object
// normally DVASPECT_CONTENT or ICON.
// dwDrawAspect will be 0 (which is NOT
// DVASPECT_CONTENT) if the copier or
// dragsource didn't draw the object to
// begin with.
SIZEL sizel; // size of the object in HIMETRIC
// sizel is opt.: will be (0,0) for apps
// which don't draw the object being
// transferred
POINTL pointl; // Offset in HIMETRIC units from the
// upper-left corner of the obj where the
// mouse went down for the drag.
// NOTE: y coordinates increase downward.
// x coordinates increase to right
// pointl is opt.; it is only meaningful
// if object is transfered via drag/drop.
// (0, 0) if mouse position is unspecified
// (eg. when obj transfered via clipboard)
DWORD dwStatus; // Misc. status flags for object. Flags are
// defined by OLEMISC enum. these flags
// are as would be returned
// by IOleObject::GetMiscStatus.
DWORD dwFullUserTypeName; // Offset from beginning of structure to
// null-terminated string that specifies
// Full User Type Name of the object.
// 0 indicates string not present.
DWORD dwSrcOfCopy; // Offset from beginning of structure to
// null-terminated string that specifies
// source of the transfer.
// dwSrcOfCOpy is normally implemented as
// the display name of the temp-for-user
// moniker which identifies the source of
// the data.
// 0 indicates string not present.
// NOTE: moniker assignment is NOT forced.
// see IOleObject::GetMoniker(
// OLEGETMONIKER_TEMPFORUSER)
/* variable sized string data may appear here */
} OBJECTDESCRIPTOR, *POBJECTDESCRIPTOR, FAR *LPOBJECTDESCRIPTOR,
LINKSRCDESCRIPTOR, *PLINKSRCDESCRIPTOR, FAR *LPLINKSRCDESCRIPTOR;
/* verbs */
#define OLEIVERB_PRIMARY (0L)
#define OLEIVERB_SHOW (-1L)
#define OLEIVERB_OPEN (-2L)
#define OLEIVERB_HIDE (-3L)
#define OLEIVERB_UIACTIVATE (-4L)
#define OLEIVERB_INPLACEACTIVATE (-5L)
#define OLEIVERB_DISCARDUNDOSTATE (-6L)
// forward type declarations
#if defined(__cplusplus)
interface IOleClientSite;
interface IOleContainer;
interface IOleObject;
#else
typedef interface IOleClientSite IOleClientSite;
typedef interface IOleContainer IOleContainer;
typedef interface IOleObject IOleObject;
#endif
typedef IOleObject FAR* LPOLEOBJECT;
typedef IOleClientSite FAR* LPOLECLIENTSITE;
typedef IOleContainer FAR* LPOLECONTAINER;
/****** OLE GUIDs *********************************************************/
#include "oleguid.h"
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?