描述:
下面是VC的代码
// Mem.h : CMem 的声明
#pragma once
#include "resource.h" // 主符号
// IMem
[
object,
uuid("47A631DA-EF71-44ED-99AC-3E8BDD6FBF7E"),
dual, helpstring("IMem 接口"),
pointer_default(unique)
]
__interface IMem : IDispatch
{
[id(1), helpstring("方法Do")] HRESULT Do(void);
};
// _IMemEvents
[
dispinterface,
uuid("08AFA06D-ABC4-4CA0-8037-4A807C914A7D"),
helpstring("_IMem事件接口")
]
__interface _IMemEvents
{
[id(1), helpstring("方法GoGo")] HRESULT GetData(void);
};
// CMem
[
coclass,
threading("apartment"),
event_source("com"),
vi_progid("test01.Mem"),
progid("test01.Mem.1"),
version(1.0),
uuid("087AED3F-37E1-44CC-BF1A-E72556B27638"),
helpstring("Mem Class")
]
class ATL_NO_VTABLE CMem :
public IMem
{
public:
CMem()
{
}
__event __interface _IMemEvents;
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
return S_OK;
}
void FinalRelease()
{
}
STDMETHOD(Do)(void);
};
// Mem.cpp : CMem 的实现
#include "stdafx.h"
#include "Mem.h"
// CMem
STDMETHODIMP CMem::Do(void)
{
// TODO: 在此添加实现代码
__raise GetData();
return S_OK;
}
下面是VB的代码
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows 窗体设计器生成的代码 "
……
#End Region
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
mm.Do()
End Sub
End Class
Module Module1
Public WithEvents eve As test01.CMemClass
Public mm As New test01.CMemClass()
Public Sub eve_GetData() Handles eve.GetData
MsgBox("good")
End Sub
End Module