在非对话框容器中如何使用ActiveX控件?ActiveX控件的方法如何映射到

sandy_wu 2000-07-27 05:20:00
我在CMainFrame中定义了一ActiveX控件的成员变量,请问
ActiveX控件的方法如何映射到CMainFrame中??
...全文
154 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiangz 2000-07-28
  • 打赏
  • 举报
回复
ID_GPSSocket should be the ID of your winsock control ID, the one
you use in the m_sockctrl.Create(....) function, ID_GPSSocket is
the one I used in my project, you can use any symbol you like.
0 /* OnDataArrival */, is the index of event sink of winsock
control, when the control was made , the index value was decided,
the information stored in the relevant .tlb file.
Flowwing are all the event sink of winsock,you can see index of each
function:

BEGIN_EVENTSINK_MAP(CSocketDlg, CDialog)
//{{AFX_EVENTSINK_MAP(CSocketDlg)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 5 /* Close */, OnCloseWinsock1, VTS_NONE)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 0 /* DataArrival */, OnDataArrivalWinsock1, VTS_I4)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 1 /* Connect */, OnConnectWinsock1, VTS_NONE)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 2 /* ConnectionRequest */, OnConnectionRequestWinsock1, VTS_I4)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 6 /* Error */, OnErrorWinsock1, VTS_I2 VTS_PBSTR VTS_I4 VTS_BSTR VTS_BSTR VTS_I4 VTS_PBOOL)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 4 /* SendComplete */, OnSendCompleteWinsock1, VTS_NONE)
ON_EVENT(CSocketDlg, IDC_WINSOCK1, 3 /* SendProgress */, OnSendProgressWinsock1, VTS_I4 VTS_I4)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

if these are useful to you, don't forget pay me scores.

sandy_wu 2000-07-28
  • 打赏
  • 举报
回复
HELLO Tiangz
THANK YOU FOR YOUR ANSWER, BUT I STILL HAVE LITTLE CONFUSED. I dont understand the Macro (CMainFrame, ID_GPSSocket, 0 /* OnDataArrival */,
OnSocketDataArrival,VTS_I4)

what does those Parameters mean, specially the second ID_GPSSocket, where does it from, and the third, why is it 0?
thanks thanks
Tiangz 2000-07-28
  • 打赏
  • 举报
回复
在MaimFram.h中添加如下代码,是手工进行的,:
//{{AFX_MSG(CMainFrame)
afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
******* afx_msg void OnSocketDataArrival (long bytesTotal);
//}}AFX_MSG
****** DECLARE_EVENTSINK_MAP()
DECLARE_MESSAGE_MAP()
在MainFrm.cpp中,添加
**** // add eventsink map to hook events
BEGIN_EVENTSINK_MAP(CMainFrame, CFrameWnd)
ON_EVENT(CMainFrame, ID_GPSSocket, 0 /* OnDataArrival */,
OnSocketDataArrival,VTS_I4)
END_EVENTSINK_MAP()
*********
然后手工添加CMainFrm::OnSocketDataArrival(long bytesTotal);即可.
至于如何知道手工加入的代码参数如何设定,一个简单方法就是打开一个
dialog based的新Project,在对话框中插入一个winsocket6.0控件,
在该对话框上点右键,插入消息处理函数,objectID选该插入的控件,选
希望响应的消息,添加处理函数,看看向导添加的代码.这些代码都从Tlb文件中
获得的.

sandy_wu 2000-07-28
  • 打赏
  • 举报
回复
HELLO Tiangz

it is very useful to me, thanks very much, i have some other question, i hope u can anwser me next time, thanks thanks thanks
sandy_wu 2000-07-27
  • 打赏
  • 举报
回复
你说的我已做了,但关键的是:ActiveX控件的方法如何映射到CMainFrame中??
ActiveX控件中有一些事件如何映射到CMainFrame,如我有一socket的控件,一有网罗消息他就要通知CMainFrame,完成相应的处理,我该怎做??
Tiangz 2000-07-27
  • 打赏
  • 举报
回复
在CMainFrame的OnCreate 中,直接调用ActiveX的Create函数,创建控件,
然后在需要的地方直接调用控件的方法(公有)即可.

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧