我想自己定制一个浏览器,结果发现简单设置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; 

解决方案 »

  1.   

    用VB6搞COM,必看Matthew Curland的Advanced Visual Basic,因为那本书主要就是讲COM的,另外Vb Hardcore里也有一点相关的东西.
    看你主做哪类应用软件了,如你主要做的那类应用软件本身就非常适合用vb.net搞(包括开发和部署等),那我想就没必要专门深入学COM了,先把vb.net学熟做出你要的东西赚钱最要紧.
      

  2.   

    COM的API是用C++实现的
    COM是超越面向对象的组件编程技术.
    搞清楚了没坏处.IDispatch是自动化(Automation)接口,VB只能使用实现了此接口的COM对象.(具体信息可参考MSDN)介绍COM/ATL的书/文章有:
    杨老师的《COM组件设计与应用》
    《COM技术内幕》
    《ATL开发指南》
    MSDN中的Platform SDK Documentation->Component Services->COM->COM Fundamentals->Guide
    等等
      

  3.   

    网上有很多关于COM的教材,不妨找一找!
      

  4.   

    从 VB 入手可以看《高级Visual Basic编程》(Advanced Visual Basic)
    当然 MSDN 也要结合看 http://msdn.microsoft.com/en-us/library/ms877981.aspx