我试图从我的ActiveX(ATL C ++)dll调用Javascript。从我所做的研究中你应该得到连接点。
添加到我的idl文件
[
uuid(BDBFA5F9-B2CB-43b1-A414-CB6E3B15C6C2),
("Event interface for Test")
]
_ITestEvents
{
properties:
methods:
[id(1), helpstring("method Cancel")] void Cancel([in] char* x, [in] char* y);
};
已添加到我的班级.h文件
class ATL_NO_VTABLE CTest :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CTest, &CLSID_Test>,
public IConnectionPointContainerImpl<CTest>,
public CProxy_ITestEvents<CTest>,
public IObjectWithSiteImpl<CTest>,
public IObjectSafetyImpl<CTest,INTERFACESAFE_FOR_UNTRUSTED_CALLER | INTERFACESAFE_FOR_UNTRUSTED_DATA>,
public IProvideClassInfo2Impl<&CLSID_Test, &__uuidof(_ITestEvents), &LIBID_Test3Lib>,
public IDispatchImpl<ITest, &IID_ITest, &LIBID_Test3Lib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
BEGIN_COM_MAP(Clnaxprt)
COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)
COM_INTERFACE_ENTRY(Ilnaxprt)
COM_INTERFACE_ENTRY(IDispatch)
COM_INTERFACE_ENTRY(IConnectionPointContainer)
COM_INTERFACE_ENTRY(IObjectWithSite)
COM_INTERFACE_ENTRY(IObjectSafety)
COM_INTERFACE_ENTRY(IProvideClassInfo)
COM_INTERFACE_ENTRY(IProvideClassInfo2)
END_COM_MAP()
BEGIN_CONNECTION_POINT_MAP(Clnaxprt)
CONNECTION_POINT_ENTRY(__uuidof(_ITestEvents))
END_CONNECTION_POINT_MAP()
在visual studio中“实现了一个新的连接点”,它在_ITestEvents_CP.h中生成了使用方法名称Fire_Cancel(char * x,char * y)创建的代码。这就是我被困的地方。我试图调用Fire_Cancel,并在调试生成的代码时没有连接,因此没有从IDispatch调用。如何创建连接?
仍然不确定javascript是如何工作的,但是在我转向之前想要了解这部分内容。 感谢
答案 0 :(得分:0)
我的案例中的HTML和Javascript是错误的。如果您使用符号“id :: function_name”,请确保它位于对象标记之后。如果符号是“for = id event = cancel”,那么它可以位于
之前/之后