急求一C++ Builder做的com或com+(更好)例,由VC调用
我搞了一个礼拜了,那个CB做的com程序例还是没搞明白,时间不等人,哪位好心人现做一个,将步骤告诉我。我看书,做com控件做出来应该是个dll呀,可为什么那个例子做出来是个.exe,它只给出CB下做,然后CB下调,我想知道VC下怎么调它。
它的方法是,新建一个工程,原有的不变,然后选择菜单file/new/other...,单击activeX标签页,选中AutoMation Object自动化对象,我看该标签页里还有好多com呀com+的东西,不知道怎么用,还有平时拖控件的地方,也有个com+标签,里面有个com+控件,也不知道怎么用。
[解决办法]
给你贴一个我以前回答同样问题的内容
在tlb中定义一个带long参数的事件,名称是OnMyEvent
定义一个事件类型,并在窗口类中定义这个类成员,在实现类中定义一个点燃函数,并将点燃函数地址赋值给刚才的类成员
C/C++ code
typedef void __fastcall (__closure * TOnMyEvent)(System::TObject * Sender, long param );
class TTheAFormX : public TActiveForm
{
__published: // IDE-managed Components
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TTheAFormX(HWND ParentWindow);
__fastcall TTheAFormX(TComponent* AOwner): TActiveForm(AOwner) {};
TOnMyEvent OnMyEvent;
};
class ATL_NO_VTABLE TTheAFormXImpl:
VCLCONTROL_IMPL(TTheAFormXImpl, TheAFormX, TTheAFormX, ITheAFormX, DIID_ITheAFormXEvents)
{
void __fastcall ActivateEvent(TObject *Sender);
void __fastcall ClickEvent(TObject *Sender);
void __fastcall CreateEvent(TObject *Sender);
void __fastcall DblClickEvent(TObject *Sender);
void __fastcall DeactivateEvent(TObject *Sender);
void __fastcall DestroyEvent(TObject *Sender);
void __fastcall KeyPressEvent(TObject *Sender, char &Key);
void __fastcall PaintEvent(TObject *Sender);
void __fastcall MyEvent(TObject *Sender, long param);
public:
void InitializeControl()
{
m_VclCtl->OnActivate = ActivateEvent;
m_VclCtl->OnClick = ClickEvent;
m_VclCtl->OnCreate = CreateEvent;
m_VclCtl->OnDblClick = DblClickEvent;
m_VclCtl->OnDeactivate = DeactivateEvent;
m_VclCtl->OnDestroy = DestroyEvent;
m_VclCtl->OnKeyPress = KeyPressEvent;
m_VclCtl->OnPaint = PaintEvent;
m_VclCtl->OnMyEvent = MyEvent;
}
//……
void __fastcall TTheAFormXImpl::MyEvent(TObject *Sender, long param)
{
Fire_OnMyEvent(param);
}
void __fastcall TTheAFormX::Button1Click(TObject *Sender)
{
if(OnMyEvent)
OnMyEvent(this, Mouse->CursorPos.x);
}
[解决办法]