module win32.oleextra; //import windows; //import com; //import win32.wingdi; /+ import win32.com.extras; extern(Windows) { alias IID * REFIID; enum PICTUREATTRIBUTES { PICTURE_SCALABLE = 0x1, PICTURE_TRANSPARENT = 0x2 } alias UINT OLE_HANDLE; alias LONG OLE_XPOS_HIMETRIC; alias LONG OLE_YPOS_HIMETRIC; alias LONG OLE_XSIZE_HIMETRIC; alias LONG OLE_YSIZE_HIMETRIC; alias long OLE_XPOS_PIXELS; alias long OLE_YPOS_PIXELS; alias long OLE_XSIZE_PIXELS; alias long OLE_YSIZE_PIXELS; alias float OLE_XPOS_CONTAINER; alias float OLE_YPOS_CONTAINER; alias float OLE_XSIZE_CONTAINER; alias float OLE_YSIZE_CONTAINER; enum OLE_TRISTATE { triUnchecked = 0, triChecked = 1, triGray = 2 }; ///////////////////////////////////////////////////////////////////////////// // OCPFIPARAMS structure - parameters for OleCreatePropertyFrameIndirect /* struct OCPFIPARAMS { ULONG cbStructSize; HWND hWndOwner; int x; int y; LPCOLESTR lpszCaption; ULONG cObjects; LPUNKNOWN * lplpUnk; ULONG cPages; CLSID * lpPages; LCID lcid; DISPID dispidInitialProperty; } alias OCPFIPARAMS * LPOCPFIPARAMS; */ ///////////////////////////////////////////////////////////////////////////// // FONTDESC structure //#define FONTSIZE(n) { n##0000, 0 } /* struct FONTDESC { UINT cbSizeofstruct; LPOLESTR lpstrName; CY cySize; SHORT sWeight; SHORT sCharset; BOOL fItalic; BOOL fUnderline; BOOL fStrikethrough; } alias FONTDESC * LPFONTDESC; */ ///////////////////////////////////////////////////////////////////////////// // PICTDESC structure enum : int { PICTYPE_UNINITIALIZED = (-1), PICTYPE_NONE = 0, PICTYPE_BITMAP = 1, PICTYPE_METAFILE = 2, PICTYPE_ICON = 3, PICTYPE_ENHMETAFILE = 4 } struct PICTDESC { UINT cbSizeofstruct; UINT picType; union prvUnion { struct prvBmp { HBITMAP hbitmap; // Bitmap HPALETTE hpal; // Accompanying palette } prvBmp bmp; struct prvWmf { HMETAFILE hmeta; // Metafile int xExt; int yExt; // Extent } prvWmf wmf; struct prvIcon { HICON hicon; // Icon } prvIcon icon; struct prvEmf { HENHMETAFILE hemf; // Enhanced Metafile } prvEmf emf; } prvUnion value; } alias PICTDESC * LPPICTDESC; ///////////////////////////////////////////////////////////////////////////// // Dispatch ID constants for font and picture types enum { DISPID_FONT_NAME = 0, DISPID_FONT_SIZE = 2, DISPID_FONT_BOLD = 3, DISPID_FONT_ITALIC = 4, DISPID_FONT_UNDER = 5, DISPID_FONT_STRIKE = 6, DISPID_FONT_WEIGHT = 7, DISPID_FONT_CHARSET = 8 } enum { DISPID_PICT_HANDLE = 0, DISPID_PICT_HPAL = 2, DISPID_PICT_TYPE = 3, DISPID_PICT_WIDTH = 4, DISPID_PICT_HEIGHT = 5, DISPID_PICT_RENDER = 6 } /* WINOLEAPI GetHGlobalFromStream (LPSTREAM pstm, HGLOBAL FAR* phglobal); WINOLEAPI CreateStreamOnHGlobal (HGLOBAL hGlobal, BOOL fDeleteOnRelease, LPSTREAM FAR* ppstm); */ interface IPicture : IUnknown { HRESULT get_Handle( OLE_HANDLE * pHandle ); HRESULT get_hPal( OLE_HANDLE * phPal ); HRESULT get_Type( SHORT * pType ); HRESULT get_Width( OLE_XSIZE_HIMETRIC * pWidth ); HRESULT get_Height( OLE_YSIZE_HIMETRIC * pHeight ); HRESULT Render( HDC hDC, LONG x, LONG y, LONG cx, LONG cy, OLE_XPOS_HIMETRIC xSrc, OLE_YPOS_HIMETRIC ySrc, OLE_XSIZE_HIMETRIC cxSrc, OLE_YSIZE_HIMETRIC cySrc, LPCRECT pRcWBounds ); HRESULT set_hPal( OLE_HANDLE hPal ); HRESULT get_CurDC( HDC * phDC ); HRESULT SelectPicture ( HDC hDCIn, HDC * phDCOut, OLE_HANDLE * phBmpOut ); HRESULT get_KeepOriginalFormat( BOOL * pKeep ); HRESULT put_KeepOriginalFormat( BOOL keep ); HRESULT PictureChanged(); HRESULT SaveAsFile( LPSTREAM pStream, BOOL fSaveMemCopy, LONG * pCbSize ); HRESULT get_Attributes( DWORD * pDwAttr ); } alias IPicture LPPICTURE; //EXTERN_C const IID IID_ISequentialStream; interface ISequentialStream : IUnknown { HRESULT Read( void *pv, ULONG cb, ULONG * pcbRead ); HRESULT Write( void * pv, ULONG cb, ULONG * pcbWritten ); } struct STATSTG { LPOLESTR pwcsName; DWORD type; ULARGE_INTEGER cbSize; FILETIME mtime; FILETIME ctime; FILETIME atime; DWORD grfMode; DWORD grfLocksSupported; CLSID clsid; DWORD grfStateBits; DWORD reserved; } enum STGTY { STGTY_STORAGE = 1, STGTY_STREAM = 2, STGTY_LOCKBYTES = 3, STGTY_PROPERTY = 4 } enum STREAM_SEEK { STREAM_SEEK_SET = 0, STREAM_SEEK_CUR = 1, STREAM_SEEK_END = 2 } enum LOCKTYPE { LOCK_WRITE = 1, LOCK_EXCLUSIVE = 2, LOCK_ONLYONCE = 4 } //EXTERN_C const IID IID_IStream; interface IStream : ISequentialStream { HRESULT Seek( LARGE_INTEGER dlibMove, DWORD dwOrigin, ULARGE_INTEGER * plibNewPosition ); HRESULT SetSize( ULARGE_INTEGER libNewSize ); HRESULT CopyTo( IStream pstm, ULARGE_INTEGER cb, ULARGE_INTEGER * pcbRead, ULARGE_INTEGER * pcbWritten ); HRESULT Commit( DWORD grfCommitFlags ); HRESULT Revert(); HRESULT LockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType ); HRESULT UnlockRegion( ULARGE_INTEGER libOffset, ULARGE_INTEGER cb, DWORD dwLockType ); HRESULT Stat( STATSTG * pstatstg, DWORD grfStatFlag ); HRESULT Clone( IStream * ppstm ); } alias IStream LPSTREAM; /* WINOLECTLAPI OleCreatePropertyFrame(HWND hwndOwner, UINT x, UINT y, LPCOLESTR lpszCaption, ULONG cObjects, LPUNKNOWN FAR* ppUnk, ULONG cPages, LPCLSID pPageClsID, LCID lcid, DWORD dwReserved, LPVOID pvReserved); WINOLECTLAPI OleCreatePropertyFrameIndirect(LPOCPFIPARAMS lpParams); ///////////////////////////////////////////////////////////////////////////// // Standard type APIs WINOLECTLAPI OleTranslateColor(OLE_COLOR clr, HPALETTE hpal, COLORREF* lpcolorref); WINOLECTLAPI OleCreateFontIndirect(LPFONTDESC lpFontDesc, REFIID riid, LPVOID FAR* lplpvObj); WINOLECTLAPI OleCreatePictureIndirect(LPPICTDESC lpPictDesc, REFIID riid, BOOL fOwn, LPVOID FAR* lplpvObj); */ HRESULT OleLoadPicture( LPSTREAM lpstream, LONG lSize, BOOL fRunmode, REFIID riid, LPVOID * lplpvObj ); /* WINOLECTLAPI OleLoadPicturePath( LPOLESTR szURLorPath, LPUNKNOWN punkCaller, DWORD dwReserved, OLE_COLOR clrReserved, REFIID riid, LPVOID * ppvRet ); WINOLECTLAPI OleLoadPictureFile(VARIANT varFileName, LPDISPATCH* lplpdispPicture); WINOLECTLAPI OleSavePictureFile(LPDISPATCH lpdispPicture, BSTR bstrFileName); WINOLECTLAPI_(HCURSOR) OleIconToCursor(HINSTANCE hinstExe, HICON hIcon); */ } +/