VB程序员如何学习COM的知识,请高人指点一二?
我想自己定制一个浏览器,结果发现简单设置WebBrowser控件不能达到我的需求,结果我在论坛请教,有人指点了如下代码:
这里面用到了很对COM接口的知识,如Dispatch Invoke 这些应当是COM的接口吧。我实在看不懂,我想请问:
1、一个VB程序员想看懂下面的代码,需要学习些哪方面的知识?
2、现在能查到的COM接口详细一点的资料,似乎都是用C++来讲解的。我对C++学过一些入手的知识,但的确只是一知半解,有没有什么专门针对VB程序员的这方面的书刊或资料可否推荐一下?
3、COM技术出现也有好多年了,不知道从技述趋势上说,还值得深入学习吗?
STDMETHODIMP CBrowserView::XDispatch::Invoke(
DISPID dispid, REFIID, LCID, unsigned short /*wFlags*/,
DISPPARAMS* /*pDispParams*/, VARIANT* pvarResult,
EXCEPINFO*, unsigned int*)
{
switch (dispid)
{
case DISPID_AMBIENT_DLCONTROL:
pvarResult->vt = VT_I4;
pvarResult->lVal = 0;
if (m_BrowserView->m_bShowImages)
{//如果需要显示图片
pvarResult->lVal |= DLCTL_DLIMAGES;
}
if(m_BrowserView->m_bShowVideos)
{//如果需要显示视频
pvarResult->lVal |= DLCTL_VIDEOS;
}
if(m_BrowserView->m_bShowBgSounds)
{//如果需要播放背景音乐
pvarResult->lVal |= DLCTL_BGSOUNDS;
}
if(!m_BrowserView->m_bPlayFlash)
{//如果不播放flash(禁止执行OCX控件)
pvarResult->lVal |= (DLCTL_NO_RUNACTIVEXCTLS | DLCTL_NO_DLACTIVEXCTLS | DLCTL_SILENT);
}
break;
default:
return DISP_E_MEMBERNOTFOUND;
}
return S_OK;
}
[解决办法]
用VB6搞COM,必看Matthew Curland的Advanced Visual Basic,因为那本书主要就是讲COM的,另外Vb Hardcore里也有一点相关的东西.
看你主做哪类应用软件了,如你主要做的那类应用软件本身就非常适合用vb.net搞(包括开发和部署等),那我想就没必要专门深入学COM了,先把vb.net学熟做出你要的东西赚钱最要紧.
[解决办法]
同意1楼。。。
大实话啊!~~
[解决办法]
看书,
我有一本,明天去找一下和你分享一下
[解决办法]
COM的API是用C++实现的
COM是超越面向对象的组件编程技术.
搞清楚了没坏处.
IDispatch是自动化(Automation)接口,VB只能使用实现了此接口的COM对象.(具体信息可参考MSDN)
介绍COM/ATL的书/文章有:
杨老师的《COM组件设计与应用》
《COM技术内幕》
《ATL开发指南》
MSDN中的Platform SDK Documentation->Component Services->COM->COM Fundamentals->Guide
等等
[解决办法]
学习中...............
[解决办法]
网上有很多关于COM的教材,不妨找一找!
[解决办法]
从 VB 入手可以看《高级Visual Basic编程》(Advanced Visual Basic)
当然 MSDN 也要结合看 http://msdn.microsoft.com/en-us/library/ms877981.aspx