diff options
Diffstat (limited to 'richole.go')
-rw-r--r-- | richole.go | 213 |
1 files changed, 213 insertions, 0 deletions
diff --git a/richole.go b/richole.go new file mode 100644 index 00000000..e1e3fa65 --- /dev/null +++ b/richole.go @@ -0,0 +1,213 @@ +// Copyright 2010 The win Authors. All rights reserved. +// Use of this source code is governed by a BSD-style +// license that can be found in the LICENSE file. + +// +build windows + +package win + +import ( + "syscall" + "unsafe" +) + +type REOBJECT struct { + cbStruct uint32 // Size of structure + cp int32 // Character position of object + clsid CLSID // Class ID of object + poleobj *IOleObject // OLE object interface + pstg *IStorage // Associated storage interface + polesite *IOleClientSite // Associated client site interface + sizel SIZE // Size of object (may be 0,0) + dvaspect uint32 // Display aspect to use + dwFlags uint32 // Object status flags + dwUser uint32 // Dword for user's use +} + +type IRichEditOleVtbl struct { + IUnknownVtbl + GetClientSite uintptr + GetObjectCount uintptr + GetLinkCount uintptr + GetObject uintptr + InsertObject uintptr + ConvertObject uintptr + ActivateAs uintptr + SetHostNames uintptr + SetLinkAvailable uintptr + SetDvaspect uintptr + HandsOffStorage uintptr + SaveCompleted uintptr + InPlaceDeactivate uintptr + ContextSensitiveHelp uintptr + GetClipboardData uintptr + ImportDataObject uintptr +} + +type IRichEditOle struct { + LpVtbl *IRichEditOleVtbl +} + +func (obj *IRichEditOle) QueryInterface(riid REFIID, ppvObject *unsafe.Pointer) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.QueryInterface, 3, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(riid)), + uintptr(unsafe.Pointer(ppvObject))) + return HRESULT(ret) +} + +func (obj *IRichEditOle) AddRef() uint32 { + ret, _, _ := syscall.Syscall(obj.LpVtbl.AddRef, 1, + uintptr(unsafe.Pointer(obj)), + 0, + 0) + return uint32(ret) +} + +func (obj *IRichEditOle) Release() uint32 { + ret, _, _ := syscall.Syscall(obj.LpVtbl.Release, 1, + uintptr(unsafe.Pointer(obj)), + 0, + 0) + return uint32(ret) +} + +func (obj *IRichEditOle) GetClientSite(lplpolesite **IOleClientSite) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.GetClientSite, 2, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(lplpolesite)), + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) GetObjectCount() int32 { + ret, _, _ := syscall.Syscall(obj.LpVtbl.GetObjectCount, 1, + uintptr(unsafe.Pointer(obj)), + 0, + 0) + return int32(ret) +} + +func (obj *IRichEditOle) GetLinkCount() int32 { + ret, _, _ := syscall.Syscall(obj.LpVtbl.GetLinkCount, 1, + uintptr(unsafe.Pointer(obj)), + 0, + 0) + return int32(ret) +} + +func (obj *IRichEditOle) GetObject(iob int32, lpreobject *REOBJECT, dwFlags uint32) HRESULT { + ret, _, _ := syscall.Syscall6(obj.LpVtbl.GetObject, 4, + uintptr(unsafe.Pointer(obj)), + uintptr(iob), + uintptr(unsafe.Pointer(lpreobject)), + uintptr(dwFlags), + 0, + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) InsertObject(lpreobject *REOBJECT) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.InsertObject, 2, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(lpreobject)), + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) ConvertObject(iob int32, rclsidNew REFCLSID, lpstrUserTypeNew *byte) HRESULT { + ret, _, _ := syscall.Syscall6(obj.LpVtbl.ConvertObject, 4, + uintptr(unsafe.Pointer(obj)), + uintptr(iob), + uintptr(unsafe.Pointer(rclsidNew)), + uintptr(unsafe.Pointer(lpstrUserTypeNew)), + 0, + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) ActivateAs(rclsid REFCLSID, rclsidAs REFCLSID) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.ActivateAs, 3, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(rclsid)), + uintptr(unsafe.Pointer(rclsidAs))) + return HRESULT(ret) +} + +func (obj *IRichEditOle) SetHostNames(lpstrContainerApp *byte, lpstrContainerObj *byte) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.SetHostNames, 3, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(lpstrContainerApp)), + uintptr(unsafe.Pointer(lpstrContainerObj))) + return HRESULT(ret) +} + +func (obj *IRichEditOle) SetLinkAvailable(iob int32, fAvailable BOOL) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.SetLinkAvailable, 3, + uintptr(unsafe.Pointer(obj)), + uintptr(iob), + uintptr(fAvailable)) + return HRESULT(ret) +} + +func (obj *IRichEditOle) SetDvaspect(iob int32, dvaspect uint32) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.SetDvaspect, 3, + uintptr(unsafe.Pointer(obj)), + uintptr(iob), + uintptr(dvaspect)) + return HRESULT(ret) +} + +func (obj *IRichEditOle) HandsOffStorage(iob int32) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.HandsOffStorage, 2, + uintptr(unsafe.Pointer(obj)), + uintptr(iob), + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) SaveCompleted(iob int32, lpstg *IStorage) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.SaveCompleted, 3, + uintptr(unsafe.Pointer(obj)), + uintptr(iob), + uintptr(unsafe.Pointer(lpstg))) + return HRESULT(ret) +} + +func (obj *IRichEditOle) InPlaceDeactivate() HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.InPlaceDeactivate, 1, + uintptr(unsafe.Pointer(obj)), + 0, + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) ContextSensitiveHelp(fEnterMode BOOL) HRESULT { + ret, _, _ := syscall.Syscall(obj.LpVtbl.ContextSensitiveHelp, 2, + uintptr(unsafe.Pointer(obj)), + uintptr(fEnterMode), + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) GetClipboardData(lpchrg *CHARRANGE, reco uint32, lplpdataobj **IDataObject) HRESULT { + ret, _, _ := syscall.Syscall6(obj.LpVtbl.GetClipboardData, 4, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(lpchrg)), + uintptr(reco), + uintptr(unsafe.Pointer(lplpdataobj)), + 0, + 0) + return HRESULT(ret) +} + +func (obj *IRichEditOle) ImportDataObject(lpdataobj *IDataObject, cf CLIPFORMAT, hMetaPict HGLOBAL) HRESULT { + ret, _, _ := syscall.Syscall6(obj.LpVtbl.ImportDataObject, 4, + uintptr(unsafe.Pointer(obj)), + uintptr(unsafe.Pointer(lpdataobj)), + uintptr(cf), + uintptr(hMetaPict), + 0, + 0) + return HRESULT(ret) +} |