描述:
用 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:
如果想知道是不是跟注册表有关,你可以hook一下,看看是不是调用了RegOpenKey之类的注册表操作方法
解决方案2: 浏览器直接浏览文件, 需要系统注册对应扩展名的 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中浏览
其他的文件一样
刚刚用webbrowser控件试了一下,没有你说的问题
CComVariant varVal;
m_Explorer.Navigate(CComBSTR("D:\\123.png"),&varVal,&varVal,&varVal,&varVal);