用 IWebBrowser2::Navigate打开本地PNG图片,出现“打开”“保存”“取消”对话框!做法如下:CComPtr <IEBROWSER::IWebBrowser2> spiBrowser = NULL;   //m_pWinContainer需要绑定显示的窗口,是这么声明的 :CAxWindow* m_pWinContainer;
hRet = m_pWinContainer->QueryControl(&spiBrowser);        //strUrl = _T("C:\abc.png");
hRet = spiBrowser->Navigate(CComBSTR(strUrl),&varVal,&varVal,&varVal,&varVal);同样的代码  把图片保存为了jpg格式 就没问题。。 求解,求高手指点!谢谢!

解决方案 »

  1.   

    刚刚用webbrowser控件试了一下,没有你说的问题CComVariant varVal;
    m_Explorer.Navigate(CComBSTR("D:\\123.png"),&varVal,&varVal,&varVal,&varVal);
      

  2.   


    你这是直接打开的? 那我就多了一步 控件绑定啊。 hRet = m_pWinContainer->QueryControl(&spiBrowser);   那是怎么回事呢 ? 会不会跟注册表有关系啊? 不太明白 这个 webbrowser 控件打开本地图片的机制原理。哎
      

  3.   

    浏览器直接浏览文件, 需要系统注册对应扩展名的 minetype, 里面的CLSID属性以XP, IE6, BMP为例
    注册表 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\MIME\Database\Content Type\image/bmp
    如果没有 CLSID项, IE无法直接浏览bmp
    自己手动加上一个字服装 CLSID, 值为 {25336920-03F9-11cf-8FD0-00AA00686F13} (从jpg复制过来)
    这样就可以直接在IE中浏览
    其他的文件一样
      

  4.   

    如果想知道是不是跟注册表有关,你可以hook一下,看看是不是调用了RegOpenKey之类的注册表操作方法