00001 #ifndef _OLE_H
00002 #define _OLE_H
00003
00004 #ifdef __cplusplus
00005 extern "C" {
00006 #endif
00007 #ifdef STRICT
00008 #define OLE_LPCSTR LPCSTR
00009 #define OLE_CONST const
00010 #else
00011 #define OLE_LPCSTR LPSTR
00012 #define OLE_CONST
00013 #endif
00014 #define LRESULT LONG
00015 #define HGLOBAL HANDLE
00016 #define OT_LINK 1L
00017 #define OT_EMBEDDED 2L
00018 #define OT_STATIC 3L
00019 #define OLEVERB_PRIMARY 0
00020 #define OF_SET 1
00021 #define OF_GET 2
00022 #define OF_HANDLER 4
00023
00024 typedef struct _OLETARGETDEVICE {
00025 USHORT otdDeviceNameOffset;
00026 USHORT otdDriverNameOffset;
00027 USHORT otdPortNameOffset;
00028 USHORT otdExtDevmodeOffset;
00029 USHORT otdExtDevmodeSize;
00030 USHORT otdEnvironmentOffset;
00031 USHORT otdEnvironmentSize;
00032 BYTE otdData[1];
00033 } OLETARGETDEVICE;
00034 typedef OLETARGETDEVICE *LPOLETARGETDEVICE;
00035 typedef enum {
00036 OLE_OK,
00037 OLE_WAIT_FOR_RELEASE,
00038 OLE_BUSY,
00039 OLE_ERROR_PROTECT_ONLY,
00040 OLE_ERROR_MEMORY,
00041 OLE_ERROR_STREAM,
00042 OLE_ERROR_STATIC,
00043 OLE_ERROR_BLANK,
00044 OLE_ERROR_DRAW,
00045 OLE_ERROR_METAFILE,
00046 OLE_ERROR_ABORT,
00047 OLE_ERROR_CLIPBOARD,
00048 OLE_ERROR_FORMAT,
00049 OLE_ERROR_OBJECT,
00050 OLE_ERROR_OPTION,
00051 OLE_ERROR_PROTOCOL,
00052 OLE_ERROR_ADDRESS,
00053 OLE_ERROR_NOT_EQUAL,
00054 OLE_ERROR_HANDLE,
00055 OLE_ERROR_GENERIC,
00056 OLE_ERROR_CLASS,
00057 OLE_ERROR_SYNTAX,
00058 OLE_ERROR_DATATYPE,
00059 OLE_ERROR_PALETTE,
00060 OLE_ERROR_NOT_LINK,
00061 OLE_ERROR_NOT_EMPTY,
00062 OLE_ERROR_SIZE,
00063 OLE_ERROR_DRIVE,
00064 OLE_ERROR_NETWORK,
00065 OLE_ERROR_NAME,
00066 OLE_ERROR_TEMPLATE,
00067 OLE_ERROR_NEW,
00068 OLE_ERROR_EDIT,
00069 OLE_ERROR_OPEN,
00070 OLE_ERROR_NOT_OPEN,
00071 OLE_ERROR_LAUNCH,
00072 OLE_ERROR_COMM,
00073 OLE_ERROR_TERMINATE,
00074 OLE_ERROR_COMMAND,
00075 OLE_ERROR_SHOW,
00076 OLE_ERROR_DOVERB,
00077 OLE_ERROR_ADVISE_NATIVE,
00078 OLE_ERROR_ADVISE_PICT,
00079 OLE_ERROR_ADVISE_RENAME,
00080 OLE_ERROR_POKE_NATIVE,
00081 OLE_ERROR_REQUEST_NATIVE,
00082 OLE_ERROR_REQUEST_PICT,
00083 OLE_ERROR_SERVER_BLOCKED,
00084 OLE_ERROR_REGISTRATION,
00085 OLE_ERROR_ALREADY_REGISTERED,
00086 OLE_ERROR_TASK,
00087 OLE_ERROR_OUTOFDATE,
00088 OLE_ERROR_CANT_UPDATE_CLIENT,
00089 OLE_ERROR_UPDATE,
00090 OLE_ERROR_SETDATA_FORMAT,
00091 OLE_ERROR_STATIC_FROM_OTHER_OS,
00092 OLE_ERROR_FILE_VER,
00093 OLE_WARN_DELETE_DATA = 1000
00094 } OLESTATUS;
00095 typedef enum {
00096 OLE_CHANGED,
00097 OLE_SAVED,
00098 OLE_CLOSED,
00099 OLE_RENAMED,
00100 OLE_QUERY_PAINT,
00101 OLE_RELEASE,
00102 OLE_QUERY_RETRY
00103 } OLE_NOTIFICATION;
00104 typedef enum {
00105 OLE_NONE,
00106 OLE_DELETE,
00107 OLE_LNKPASTE,
00108 OLE_EMBPASTE,
00109 OLE_SHOW,
00110 OLE_RUN,
00111 OLE_ACTIVATE,
00112 OLE_UPDATE,
00113 OLE_CLOSE,
00114 OLE_RECONNECT,
00115 OLE_SETUPDATEOPTIONS,
00116 OLE_SERVERUNLAUNCH,
00117 OLE_LOADFROMSTREAM,
00118 OLE_SETDATA,
00119 OLE_REQUESTDATA,
00120 OLE_OTHER,
00121 OLE_CREATE,
00122 OLE_CREATEFROMTEMPLATE,
00123 OLE_CREATELINKFROMFILE,
00124 OLE_COPYFROMLNK,
00125 OLE_CREATEFROMFILE,
00126 OLE_CREATEINVISIBLE
00127 } OLE_RELEASE_METHOD;
00128 typedef enum {
00129 olerender_none,
00130 olerender_draw,
00131 olerender_format
00132 } OLEOPT_RENDER;
00133 typedef WORD OLECLIPFORMAT;
00134 typedef enum {
00135 oleupdate_always,
00136 oleupdate_onsave,
00137 #ifdef OLE_INTERNAL
00138 oleupdate_oncall,
00139 oleupdate_onclose
00140 #else
00141 oleupdate_oncall
00142 #endif
00143 } OLEOPT_UPDATE;
00144 typedef HANDLE HOBJECT;
00145 typedef LONG LHSERVER;
00146 typedef LONG LHCLIENTDOC;
00147 typedef LONG LHSERVERDOC;
00148 typedef struct _OLEOBJECT *LPOLEOBJECT;
00149 typedef struct _OLESTREAM *LPOLESTREAM;
00150 typedef struct _OLECLIENT *LPOLECLIENT;
00151 typedef struct _OLEOBJECTVTBL {
00152 void *(CALLBACK* QueryProtocol)(LPOLEOBJECT,OLE_LPCSTR);
00153 OLESTATUS (CALLBACK* Release)(LPOLEOBJECT);
00154 OLESTATUS (CALLBACK* Show)(LPOLEOBJECT,BOOL);
00155 OLESTATUS (CALLBACK* DoVerb)(LPOLEOBJECT,UINT,BOOL,BOOL);
00156 OLESTATUS (CALLBACK* GetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*);
00157 OLESTATUS (CALLBACK* SetData)(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
00158 OLESTATUS (CALLBACK* SetTargetDevice)(LPOLEOBJECT,HGLOBAL);
00159 OLESTATUS (CALLBACK* SetBounds)(LPOLEOBJECT,OLE_CONST RECT*);
00160 OLECLIPFORMAT (CALLBACK* EnumFormats)(LPOLEOBJECT,OLECLIPFORMAT);
00161 OLESTATUS (CALLBACK* SetColorScheme)(LPOLEOBJECT,OLE_CONST LOGPALETTE*);
00162 #ifndef SERVERONLY
00163 OLESTATUS (CALLBACK* Delete)(LPOLEOBJECT);
00164 OLESTATUS (CALLBACK* SetHostNames)(LPOLEOBJECT,OLE_LPCSTR,OLE_LPCSTR);
00165 OLESTATUS (CALLBACK* SaveToStream)(LPOLEOBJECT,LPOLESTREAM);
00166 OLESTATUS (CALLBACK* Clone)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
00167 OLESTATUS (CALLBACK* CopyFromLink)(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
00168 OLESTATUS (CALLBACK* Equal)(LPOLEOBJECT,LPOLEOBJECT);
00169 OLESTATUS (CALLBACK* CopyToClipboard)(LPOLEOBJECT);
00170 OLESTATUS (CALLBACK* Draw)(LPOLEOBJECT,HDC,OLE_CONST RECT*,OLE_CONST RECT*,HDC);
00171 OLESTATUS (CALLBACK* Activate)(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,OLE_CONST RECT*);
00172 OLESTATUS (CALLBACK* Execute)(LPOLEOBJECT,HGLOBAL,UINT);
00173 OLESTATUS (CALLBACK* Close)(LPOLEOBJECT);
00174 OLESTATUS (CALLBACK* Update)(LPOLEOBJECT);
00175 OLESTATUS (CALLBACK* Reconnect)(LPOLEOBJECT);
00176 OLESTATUS (CALLBACK* ObjectConvert)(LPOLEOBJECT,OLE_LPCSTR,LPOLECLIENT,LHCLIENTDOC,OLE_LPCSTR,LPOLEOBJECT*);
00177 OLESTATUS (CALLBACK* GetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE*);
00178 OLESTATUS (CALLBACK* SetLinkUpdateOptions)(LPOLEOBJECT,OLEOPT_UPDATE);
00179 OLESTATUS (CALLBACK* Rename)(LPOLEOBJECT,OLE_LPCSTR);
00180 OLESTATUS (CALLBACK* QueryName)(LPOLEOBJECT,LPSTR,UINT*);
00181 OLESTATUS (CALLBACK* QueryType)(LPOLEOBJECT,LONG*);
00182 OLESTATUS (CALLBACK* QueryBounds)(LPOLEOBJECT,RECT*);
00183 OLESTATUS (CALLBACK* QuerySize)(LPOLEOBJECT,DWORD*);
00184 OLESTATUS (CALLBACK* QueryOpen)(LPOLEOBJECT);
00185 OLESTATUS (CALLBACK* QueryOutOfDate)(LPOLEOBJECT);
00186 OLESTATUS (CALLBACK* QueryReleaseStatus)(LPOLEOBJECT);
00187 OLESTATUS (CALLBACK* QueryReleaseError)(LPOLEOBJECT);
00188 OLE_RELEASE_METHOD (CALLBACK* QueryReleaseMethod)(LPOLEOBJECT);
00189 OLESTATUS (CALLBACK* RequestData)(LPOLEOBJECT,OLECLIPFORMAT);
00190 OLESTATUS (CALLBACK* ObjectLong)(LPOLEOBJECT,UINT,LONG*);
00191 OLESTATUS (CALLBACK* ChangeData)(LPOLEOBJECT,HANDLE,LPOLECLIENT,BOOL);
00192 #endif
00193 } OLEOBJECTVTBL;
00194 typedef OLEOBJECTVTBL*LPOLEOBJECTVTBL;
00195 #ifndef OLE_INTERNAL
00196 typedef struct _OLEOBJECT { LPOLEOBJECTVTBL lpvtbl; } OLEOBJECT;
00197 #endif
00198 typedef struct _OLECLIENTVTBL { int (CALLBACK* CallBack)(LPOLECLIENT,OLE_NOTIFICATION,LPOLEOBJECT); } OLECLIENTVTBL;
00199 typedef OLECLIENTVTBL *LPOLECLIENTVTBL;
00200 typedef struct _OLECLIENT { LPOLECLIENTVTBL lpvtbl; } OLECLIENT;
00201 typedef struct _OLESTREAMVTBL {
00202 DWORD (CALLBACK* Get)(LPOLESTREAM,void*,DWORD);
00203 DWORD (CALLBACK* Put)(LPOLESTREAM,OLE_CONST void*,DWORD);
00204 } OLESTREAMVTBL;
00205 typedef OLESTREAMVTBL *LPOLESTREAMVTBL;
00206 typedef struct _OLESTREAM { LPOLESTREAMVTBL lpstbl; } OLESTREAM;
00207 typedef enum {
00208 OLE_SERVER_MULTI,
00209 OLE_SERVER_SINGLE
00210 } OLE_SERVER_USE;
00211 typedef struct _OLESERVER *LPOLESERVER;
00212 typedef struct _OLESERVERDOC *LPOLESERVERDOC;
00213 typedef struct _OLESERVERVTBL {
00214 OLESTATUS (CALLBACK* Open)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,LPOLESERVERDOC*);
00215 OLESTATUS (CALLBACK* Create)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
00216 OLESTATUS (CALLBACK* CreateFromTemplate)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
00217 OLESTATUS (CALLBACK* Edit)(LPOLESERVER,LHSERVERDOC,OLE_LPCSTR,OLE_LPCSTR,LPOLESERVERDOC*);
00218 OLESTATUS (CALLBACK* Exit)(LPOLESERVER);
00219 OLESTATUS (CALLBACK* Release)(LPOLESERVER);
00220 OLESTATUS (CALLBACK* Execute)(LPOLESERVER,HGLOBAL);
00221 } OLESERVERVTBL;
00222 typedef OLESERVERVTBL *LPOLESERVERVTBL;
00223 typedef struct _OLESERVER { LPOLESERVERVTBL lpvtbl; } OLESERVER;
00224 typedef struct _OLESERVERDOCVTBL {
00225 OLESTATUS (CALLBACK* Save)(LPOLESERVERDOC);
00226 OLESTATUS (CALLBACK* Close)(LPOLESERVERDOC);
00227 OLESTATUS (CALLBACK* SetHostNames)(LPOLESERVERDOC,OLE_LPCSTR,OLE_LPCSTR);
00228 OLESTATUS (CALLBACK* SetDocDimensions)(LPOLESERVERDOC,OLE_CONST RECT*);
00229 OLESTATUS (CALLBACK* GetObject)(LPOLESERVERDOC,OLE_LPCSTR,LPOLEOBJECT*,LPOLECLIENT);
00230 OLESTATUS (CALLBACK* Release)(LPOLESERVERDOC);
00231 OLESTATUS (CALLBACK* SetColorScheme)(LPOLESERVERDOC,OLE_CONST LOGPALETTE*);
00232 OLESTATUS (CALLBACK* Execute)(LPOLESERVERDOC,HGLOBAL);
00233 } OLESERVERDOCVTBL;
00234 typedef OLESERVERDOCVTBL *LPOLESERVERDOCVTBL;
00235 typedef struct _OLESERVERDOC { LPOLESERVERDOCVTBL lpvtbl; } OLESERVERDOC;
00236 OLESTATUS WINAPI OleDelete(LPOLEOBJECT);
00237 OLESTATUS WINAPI OleRelease(LPOLEOBJECT);
00238 OLESTATUS WINAPI OleSaveToStream(LPOLEOBJECT,LPOLESTREAM);
00239 OLESTATUS WINAPI OleEqual(LPOLEOBJECT,LPOLEOBJECT );
00240 OLESTATUS WINAPI OleCopyToClipboard(LPOLEOBJECT);
00241 OLESTATUS WINAPI OleSetHostNames(LPOLEOBJECT,LPCSTR,LPCSTR);
00242 OLESTATUS WINAPI OleSetTargetDevice(LPOLEOBJECT,HGLOBAL);
00243 OLESTATUS WINAPI OleSetBounds(LPOLEOBJECT,LPCRECT);
00244 OLESTATUS WINAPI OleSetColorScheme(LPOLEOBJECT,const LOGPALETTE*);
00245 OLESTATUS WINAPI OleQueryBounds(LPOLEOBJECT,RECT*);
00246 OLESTATUS WINAPI OleQuerySize(LPOLEOBJECT,DWORD*);
00247 OLESTATUS WINAPI OleDraw(LPOLEOBJECT,HDC,LPCRECT,LPCRECT,HDC);
00248 OLESTATUS WINAPI OleQueryOpen(LPOLEOBJECT);
00249 OLESTATUS WINAPI OleActivate(LPOLEOBJECT,UINT,BOOL,BOOL,HWND,LPCRECT);
00250 OLESTATUS WINAPI OleExecute(LPOLEOBJECT,HGLOBAL,UINT);
00251 OLESTATUS WINAPI OleClose(LPOLEOBJECT);
00252 OLESTATUS WINAPI OleUpdate(LPOLEOBJECT);
00253 OLESTATUS WINAPI OleReconnect(LPOLEOBJECT);
00254 OLESTATUS WINAPI OleGetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE*);
00255 OLESTATUS WINAPI OleSetLinkUpdateOptions(LPOLEOBJECT,OLEOPT_UPDATE);
00256 WINAPI void *OleQueryProtocol(LPOLEOBJECT,LPCSTR);
00257 OLESTATUS WINAPI OleQueryReleaseStatus(LPOLEOBJECT);
00258 OLESTATUS WINAPI OleQueryReleaseError(LPOLEOBJECT);
00259 OLE_RELEASE_METHOD WINAPI OleQueryReleaseMethod(LPOLEOBJECT);
00260 OLESTATUS WINAPI OleQueryType(LPOLEOBJECT,LONG*);
00261 DWORD WINAPI OleQueryClientVersion(void);
00262 DWORD WINAPI OleQueryServerVersion(void);
00263 OLECLIPFORMAT WINAPI OleEnumFormats(LPOLEOBJECT,OLECLIPFORMAT);
00264 OLESTATUS WINAPI OleGetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE*);
00265 OLESTATUS WINAPI OleSetData(LPOLEOBJECT,OLECLIPFORMAT,HANDLE);
00266 OLESTATUS WINAPI OleQueryOutOfDate(LPOLEOBJECT);
00267 OLESTATUS WINAPI OleRequestData(LPOLEOBJECT,OLECLIPFORMAT);
00268 OLESTATUS WINAPI OleQueryLinkFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
00269 OLESTATUS WINAPI OleQueryCreateFromClip(LPCSTR,OLEOPT_RENDER,OLECLIPFORMAT);
00270 OLESTATUS WINAPI OleCreateFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
00271 OLESTATUS WINAPI OleCreateLinkFromClip(LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
00272 OLESTATUS WINAPI OleCreateFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
00273 OLESTATUS WINAPI OleCreateLinkFromFile(LPCSTR,LPOLECLIENT,LPCSTR,LPCSTR,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
00274 OLESTATUS WINAPI OleLoadFromStream(LPOLESTREAM,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
00275 OLESTATUS WINAPI OleCreate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
00276 OLESTATUS WINAPI OleCreateInvisible(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT,BOOL);
00277 OLESTATUS WINAPI OleCreateFromTemplate(LPCSTR,LPOLECLIENT,LPCSTR,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*,OLEOPT_RENDER,OLECLIPFORMAT);
00278 OLESTATUS WINAPI OleClone(LPOLEOBJECT,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
00279 OLESTATUS WINAPI OleCopyFromLink(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
00280 OLESTATUS WINAPI OleObjectConvert(LPOLEOBJECT,LPCSTR,LPOLECLIENT,LHCLIENTDOC,LPCSTR,LPOLEOBJECT*);
00281 OLESTATUS WINAPI OleRename(LPOLEOBJECT,LPCSTR);
00282 OLESTATUS WINAPI OleQueryName(LPOLEOBJECT,LPSTR,UINT*);
00283 OLESTATUS WINAPI OleRevokeObject(LPOLECLIENT);
00284 BOOL WINAPI OleIsDcMeta(HDC);
00285 OLESTATUS WINAPI OleRegisterClientDoc(LPCSTR,LPCSTR,LONG,LHCLIENTDOC*);
00286 OLESTATUS WINAPI OleRevokeClientDoc(LHCLIENTDOC);
00287 OLESTATUS WINAPI OleRenameClientDoc(LHCLIENTDOC,LPCSTR);
00288 OLESTATUS WINAPI OleRevertClientDoc(LHCLIENTDOC);
00289 OLESTATUS WINAPI OleSavedClientDoc(LHCLIENTDOC);
00290 OLESTATUS WINAPI OleEnumObjects(LHCLIENTDOC,LPOLEOBJECT*);
00291 OLESTATUS WINAPI OleRegisterServer(LPCSTR,LPOLESERVER,LHSERVER*,HINSTANCE,OLE_SERVER_USE);
00292 OLESTATUS WINAPI OleRevokeServer(LHSERVER);
00293 OLESTATUS WINAPI OleBlockServer(LHSERVER);
00294 OLESTATUS WINAPI OleUnblockServer(LHSERVER,BOOL*);
00295 OLESTATUS WINAPI OleLockServer(LPOLEOBJECT,LHSERVER*);
00296 OLESTATUS WINAPI OleUnlockServer(LHSERVER);
00297 OLESTATUS WINAPI OleRegisterServerDoc(LHSERVER,LPCSTR,LPOLESERVERDOC,LHSERVERDOC*);
00298 OLESTATUS WINAPI OleRevokeServerDoc(LHSERVERDOC);
00299 OLESTATUS WINAPI OleRenameServerDoc(LHSERVERDOC,LPCSTR);
00300 OLESTATUS WINAPI OleRevertServerDoc(LHSERVERDOC);
00301 OLESTATUS WINAPI OleSavedServerDoc(LHSERVERDOC);
00302 #ifdef __cplusplus
00303 }
00304 #endif
00305 #endif