client ocx
ocx function subject (provide service)
ocx event (for callback) subject
1) event in CSharp/Delphi is only a funcion pointer, no concreate body,
but ocx event has a body, it used FireEvent to invoke the client application's event handler
//in ocx
void CMyOcxCtrl1Ctrl::OnMyEvent1(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
//client call back
//Call CWinClientDlg::OnMyEvent1Myocxctrl1ctrl1()
FireEvent(dispidOnMyEvent1, EVENT_PARAM(VTS_NONE));
}
// in client application
BEGIN_EVENTSINK_MAP(CWinClientDlg, CDialog)
ON_EVENT(CWinClientDlg, IDC_MYOCXCTRL1CTRL1, 1, OnMyEvent1Myocxctrl1ctrl1, VTS_NONE)
END_EVENTSINK_MAP()
void CWinClientDlg::OnMyEvent1Myocxctrl1ctrl1()
{
AfxMessageBox("CWinClientDlg::OnMyEvent1Myocxctrl1ctrl1()");
}
2) if you set some output parameter in event, you can query client application's data
(event is not only for client to define self-call back)
ocx function subject (provide service)
ocx event (for callback) subject
1) event in CSharp/Delphi is only a funcion pointer, no concreate body,
but ocx event has a body, it used FireEvent to invoke the client application's event handler
//in ocx
void CMyOcxCtrl1Ctrl::OnMyEvent1(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
//client call back
//Call CWinClientDlg::OnMyEvent1Myocxctrl1ctrl1()
FireEvent(dispidOnMyEvent1, EVENT_PARAM(VTS_NONE));
}
// in client application
BEGIN_EVENTSINK_MAP(CWinClientDlg, CDialog)
ON_EVENT(CWinClientDlg, IDC_MYOCXCTRL1CTRL1, 1, OnMyEvent1Myocxctrl1ctrl1, VTS_NONE)
END_EVENTSINK_MAP()
void CWinClientDlg::OnMyEvent1Myocxctrl1ctrl1()
{
AfxMessageBox("CWinClientDlg::OnMyEvent1Myocxctrl1ctrl1()");
}
2) if you set some output parameter in event, you can query client application's data
(event is not only for client to define self-call back)
本文探讨了OCX控件中事件(Event)的概念及其如何触发客户端应用程序中的事件处理器。文章详细介绍了通过FireEvent机制调用客户端回调函数的过程,并展示了如何在客户端定义相应的事件处理器来响应这些事件。

1121

被折叠的 条评论
为什么被折叠?



