ÎÒÏë×Ô¼º¶¨ÖÆÒ»¸öä¯ÀÀÆ÷£¬½á¹û·¢ÏÖ¼òµ¥ÉèÖÃ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:
ÏëÔÚwarcraft3Àï½øÐÐдÆÁ²Ù×÷¡¾Èç¶Ôսƽ̨ÖеÄʤ¸ºÌáʾÐÅÏ¢¡¿£¬Ð§¹û¾ÍÏñÓÎϷƽ̨ÖÐÒ»Ñù£¬ÎÒÊÔ¹ýÔÚÒ»´°¿ÚÖÐдÈëÎÄ×Ö£¬È»ºóÒ»Ö±Èô°¿ÚÇ¿ÖÆ×îǰ£¬ËäÈ»ÄÜʵÏÖÎÄ×ÖÏÔʾ£¬µ«ÊÇÎÄ×ֻ᲻¶ÏÉÁ˸£¬¶øÇÒÓв»È·¶¨BUG£¬Í¨¹ýÂÛ̳ËÑ ......