3,245
社区成员
发帖
与我相关
我的任务
分享
void AFX_CDECL CWnd::InvokeHelper(DISPID dwDispID, WORD wFlags, VARTYPE vtRet,
void* pvRet, const BYTE* pbParamInfo, ...)
{
ASSERT(m_pCtrlSite != NULL); // not an OLE control (not yet, at least)
if (m_pCtrlSite == NULL) //这里成立,直接返回了.. :(
return;
va_list argList;
va_start(argList, pbParamInfo);
m_pCtrlSite->InvokeHelperV(dwDispID, wFlags, vtRet, pvRet, pbParamInfo,
argList);
va_end(argList);
}
Option Explicit
'//工程名:SNActiveX
'//类模块:ClsTEST
Dim m_Data As String
Public Sub SetString(strData As String)
m_Data = strData
End Sub
Public Sub Msg()
MsgBox "OK"
End Sub
Public Function GetString() As String
GetString = m_Data
End Function
// 从类型库向导中用“添加类”创建的计算机生成的 IDispatch 包装类
#import "E:\\2010项目\\CRM Personal Edition\\CRMClient\\CRM.dll" no_namespace
// SNClsCRM 包装类
class SNClsCRM : public COleDispatchDriver
{
public:
SNClsCRM(){} // 调用 COleDispatchDriver 默认构造函数
SNClsCRM(LPDISPATCH pDispatch) : COleDispatchDriver(pDispatch) {}
SNClsCRM(const SNClsCRM& dispatchSrc) : COleDispatchDriver(dispatchSrc) {}
// 属性
public:
// 操作
public:
// _ClsCRM 方法
public:
BOOL Login(BSTR * strData)
{
BOOL result;
static BYTE parms[] = VTS_PBSTR ;
InvokeHelper(0x60030001, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms, strData);
return result;
}
CString GetData()
{
CString result;
InvokeHelper(0x60030002, DISPATCH_METHOD, VT_BSTR, (void*)&result, NULL);
return result;
}
CString get_RemoteHost()
{
CString result;
InvokeHelper(0x68030000, DISPATCH_PROPERTYGET, VT_BSTR, (void*)&result, NULL);
return result;
}
void put_RemoteHost(LPCTSTR newValue)
{
static BYTE parms[] = VTS_BSTR ;
InvokeHelper(0x68030000, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
// _ClsCRM 属性
public:
};
#include "CClsTEST.h"
...
...
void CtestActivexDlg::OnBnClickedOk()
{
CClsTEST CT;
CT.Msg(); //这里还是一样... :( 没反应...
}
...
...
//在APP对象中
BOOL CtestActivexApp::InitInstance()
{
...
AfxEnableControlContainer();
CWinApp::InitInstance();
.....
.....
}