WebBrowser里有一个方法Navigate2,它的第一个参数是URL,
比如我想输入 "c:\\winnt",可它显示数据格式不对,要VARIANT *
我用(VARIANT *)强制转换,结果就出错了,怎么回事啊

解决方案 »

  1.   


    _variant_t var=_bstr_t("c:\\winnt");
    VARIANT * pvar=&var;
      

  2.   

    要包括什么头文件,现在显示_variant_t没有定义
      

  3.   

    找到了,是#include <comdef.h>,
    我想不打开新窗口该怎么办呢,现在每次显示c:\winnt下的内容,
    可我点击它时,它就新开一个窗口来显示,而我只想在原来的窗口显示.
    以前听说是第三个参数用_SELF,可不知道怎么用,我加上去没有反应,
    仍然是新开窗口,有些不明白了,楼上的高手请指点一下吧
      

  4.   

    to show in a new dialog
    void CMyDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, 
                              BOOL FAR* Cancel) 
     {
        m_dlgNewWB = new CMyDlg;
        m_dlgNewWB->Create(IDD_MYDLG_DIALOG);
     
        *ppDisp = m_dlgNewWB->m_webBrowser.GetApplication();
     }
    to show in a new frame
    void CYourView::OnNewWindow2(LPDISPATCH FAR* ppDisp,
                                  BOOL FAR* Cancel)
     {
        // Get a pointer to the application object
        CWinApp* pApp = AfxGetApp();    // Get the correct document template
        CDocTemplate* pDocTemplate;
        POSITION pos = pApp->GetFirstDocTemplatePosition();
        pDocTemplate = pApp->GetNextDocTemplate(pos);    ASSERT(pDocTemplate);    // Create the new frame
        CFrameWnd* pNewFrame = pDocTemplate->CreateNewFrame(GetDocument(),
                                       (CFrameWnd*)AfxGetMainWnd());
        ASSERT(pNewFrame);    // Activate the frame and set its active view
        pDocTemplate->InitialUpdateFrame(pNewFrame, NULL);    CYourView* pWBVw = (CYourView*)pNewFrame->GetActiveView();
        ASSERT(pWBVw);    pWBVw->m_webBrowser.SetRegisterAsBrowser(TRUE);    *ppDisp = pWBVw->m_webBrowser.GetApplication();
     } to show in the same windowvoid CYourView::OnNewWindow2(LPDISPATCH FAR* ppDisp,
                                  BOOL FAR* Cancel)
    {
    //Get m_strLastUrl in the handler funtion of BeforeNavigate2 event
    *Cancel=TRUE;
    Navigate(m_strLastUrl);
      

  5.   

    你说得很好,就是我看得有点晕.
    我那个_self用得哪里不对呢.
      

  6.   

    COleVariant varURL("http://www");
    COleVariant varEmpty;
    m_WebBrowser.Navigate2( &varURL, &varEmpty, &varEmpty, &varEmpty, &varEmpty );
    签名:jmcooler
      

  7.   

    jmcooler:
    你的方法很简单了,不知我那个_SELF是怎么赋值呢,
    我用COleVariant var("_SELF")好象是没错,
    m_WebBrowser.Navigate2( &varURL, &varEmpty, &var, &varEmpty, &varEmpty );
    可这样做,一开始就跳出个新窗口
      

  8.   

    那就试试"_parent"
    签名:jmcooler
      

  9.   

    "_parent"没在启动时直接跳出新窗口了,可如果点击其中一个文件夹,就
    又跳出新窗口来显示
      

  10.   

    是否你应该做一个BHO,它可以拦截浏览器的点击链接事件,然后用自己的浏览器控件来打开。查看BHO(Browser Helper Object)的MSDN帮助和例子代码。
    签名:jmcooler
      

  11.   

    另外一个办法是:见下一贴
    签名:jmcooler
      

  12.   

    调用m_WebBrowser.SetRegisterAsBrowser( true );
    这样估计,用户再点击链接时,会传给你的程序一个命令行参数。
    签名:jmcooler