100分求助,帮我看一下com的问题,
原形如下
DECLARE_INTERFACE_(IRichEditOle, IUnknown)
{
// *** IUnknown methods ***
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR * lplpObj) PURE;
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
STDMETHOD_(ULONG,Release) (THIS) PURE;
// *** IRichEditOle methods ***
STDMETHOD(GetClientSite) (THIS_ LPOLECLIENTSITE FAR * lplpolesite) PURE;
STDMETHOD_(LONG,GetObjectCount) (THIS) PURE;
STDMETHOD_(LONG,GetLinkCount) (THIS) PURE;
STDMETHOD(GetObject) (THIS_ LONG iob, REOBJECT FAR * lpreobject,
DWORD dwFlags) PURE;
STDMETHOD(InsertObject) (THIS_ REOBJECT FAR * lpreobject) PURE;
STDMETHOD(ConvertObject) (THIS_ LONG iob, REFCLSID rclsidNew,
LPCSTR lpstrUserTypeNew) PURE;
STDMETHOD(ActivateAs) (THIS_ REFCLSID rclsid, REFCLSID rclsidAs) PURE;
STDMETHOD(SetHostNames) (THIS_ LPCSTR lpstrContainerApp,
LPCSTR lpstrContainerObj) PURE;
STDMETHOD(SetLinkAvailable) (THIS_ LONG iob, BOOL fAvailable) PURE;
STDMETHOD(SetDvaspect) (THIS_ LONG iob, DWORD dvaspect) PURE;
STDMETHOD(HandsOffStorage) (THIS_ LONG iob) PURE;
STDMETHOD(SaveCompleted) (THIS_ LONG iob, LPSTORAGE lpstg) PURE;
STDMETHOD(InPlaceDeactivate) (THIS) PURE;
STDMETHOD(ContextSensitiveHelp) (THIS_ BOOL fEnterMode) PURE;
STDMETHOD(GetClipboardData) (THIS_ CHARRANGE FAR * lpchrg, DWORD reco,
LPDATAOBJECT FAR * lplpdataobj) PURE;
STDMETHOD(ImportDataObject) (THIS_ LPDATAOBJECT lpdataobj,
CLIPFORMAT cf, HGLOBAL hMetaPict) PURE;
};
我的包装如下
[ComImport, Guid("00020D00-0000-0000-c000-000000000046"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
public interface IRichEditOle
{
int GetClientSite(ref IOleClientSite lplpolesite);
long GetObjectCount();
long GetLinkCount();
int GetObject(long iob, REOBJECT lpreobject, [MarshalAs(UnmanagedType.U4)]GetObjectOptions flags);
int InsertObject(REOBJECT lpreobject);
int ConvertObject(long iob,ref Guid rclsidNew, string lpstrUserTypeNew);
int ActivateAs(ref Guid rclsid, ref Guid rclsidAs);
int SetHostNames(string lpstrContainerApp, string lpstrContainerObj);
int SetLinkAvailable(long iob, bool fAvailable);
int SetDvaspect(long iob, uint dvaspect);
int HandsOffStorage(long iob);
int SaveCompleted(long iob, ref IStorage lpstg);
int InPlaceDeactivate();
int ContextSensitiveHelp(bool fEnterMode);
int GetClipboardData(object lpchrg, uint reco, object lplpdataobj);
int ImportDataObject(object lpdataobj, IntPtr cf, IntPtr hMetaPict);
}
调用GetObjectCount总是返回0;
而在c++下返回非0;