WEB开发网
开发学院软件开发VC 浏览器的定制与扩展 阅读

浏览器的定制与扩展

 2006-07-22 22:56:33 来源:WEB开发网   
核心提示: DISP_FUNCTION(CCalendarView,"TestFunc",TestFunc,VT_BOOL,VTS_BSTR VTS_I4 VTS_I4)BOOL TestFunc(LPCSTR param1, int param2, int param3){...

DISP_FUNCTION(CCalendarView,"TestFunc",TestFunc,VT_BOOL,VTS_BSTR VTS_I4 VTS_I4)
BOOL TestFunc(LPCSTR param1, int param2, int param3)
{
  .....
}    
  参数表VTS_BSTR VTS_I4 VTS_I4是用空格分隔,他们的类型映射请参考MSDN,这要提醒的是不要把VTS_BSTR与CString对应,而应与LPCSTR对应。

C++代码中如何调用网页脚本中的函数

IHTMLDocument2::scripts属性表示HTML文档中所有脚本对象。使用脚本对象的IDispatch接口的GetIDsOfNames方法可以得到脚本函数的 DispID,得到DispID后,使用IDispatch的Invoke函数可以调用对应的脚本函数。CLhpHtmlView提供了方便的调用JavaScript的函数,请参考CLhpHtmlView中有关键字“JScript”的代码。

定制消息框的标题

我们在脚本中调用alert弹出消息框时,消息框的标题是微软预定义的“Microsoft Internet Explorer”,如下图:

在自定义的控制站点类中实现IDocHostShowUI接口,在接口的ShowMessage方法中调用浏览器的OnShowMessage,我们重载 OnShowMessage虚函数即可定制消息框的标题,实现代码如下:

// 窗口标题"Microsoft Internet Explorer"的资源标识
#define IDS_MESSAGE_BOX_TITLE 2213
HRESULT CLhpHtmlView::OnShowMessage(HWND hwnd,
                  LPOLESTR lpstrText,
                  LPOLESTR lpstrCaption,
                  DWORD dwType,
                  LPOLESTR lpstrHelpFile,
                  DWORD dwHelpContext,
                  LRESULT * plResult)
{
  //载入Shdoclc.dll 和IE消息框标题字符串
  HINSTANCE hinstSHDOCLC = LoadLibrary(TEXT("SHDOCLC.DLL"));
  if (hinstSHDOCLC == NULL)
    return S_FALSE;
  CString strBuf,strCaption(lpstrCaption);
  strBuf.LoadString(hinstSHDOCLC, IDS_MESSAGE_BOX_TITLE);
  // 比较IE消息框标题字符串和lpstrCaption
  // 如果相同,用自定义标题替换
  if(strBuf==lpstrCaption)
    strCaption = m_DefaultMsgBoxTitle;
  // 创建自己的消息框并且显示
  *plResult = MessageBox(CString(lpstrText), strCaption, dwType);
  //卸载Shdoclc.dll并且返回
  FreeLibrary(hinstSHDOCLC);
  return S_OK;
}    
从代码中可以看到通过设定m_DefaultMsgBoxTitle的值来改变消息宽的标题,修改此值是同过SetDefaultMsgBoxTitle来实现 void CLhpHtmlView::SetDefaultMsgBoxTitle(CString strTitle)
{
  m_DefaultMsgBoxTitle=strTitle;
}

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:浏览器 定制 扩展

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接