EVC开发实例三:浏览器窗口
/ #undef __urlmon_h__ #include <urlmon.h> #undef _SHLOBJ_H_ #include <shlobj.h> #undef _WINNETWK_ #include <winnetwk.h> #undef __AFXHTML_H__ #include "afxhtml.h"在IEGIFView . h文件里CIEGIFView类的声明中添加下列代码: public: IWebBrowser2 *m_pBrowser; CWnd m_wndBrowser; IWebBrowser2 的容器 void Navigate(CString); ///调用IWebBrowser2的Navigate接口在CIEGIFView类的构造函数中初始化指针: CIEGIFView:: CIEGIFView () { m_pBrowser = NULL; }在IEGIFView . cpp文件里定义下列函数: void CIEGIFView::Navigate(CString strURL) { COleVariant empty; BSTR bstrURL = strURL.AllocSysString(); m_pBrowser->Navigate (bstrURL, COleVariant((long) 0, VT_I4), empty, empty, empty); }在IEGIFView . cpp文件里定义消息处理函数: ///响应WM_CREATE int CIEGIFView::OnCreate(LPCREATESTRUCT lpCreateStruct) { if (CView::OnCreate(lpCreateStruct) == -1) return -1; RECT rectClient; GetClientRect(&rectClient); ///在客户端整个区域显示GIF ///创建控件 if (! m_wndBrowser.CreateControl(CLSID_WebBrowser, NULL, WS_VISIBLE | WS_CHILD, rectClient, this, AFX_IDW_PANE_FIRST)) { DestroyWindow(); return FALSE; } ///得到指针 LPUNKNOWN lpUnk = m_wndBrowser.GetControlUnknown(); HRESULT hr = lpUnk->QueryInterface(IID_IWebBrowser2, (void**) &m_pBrowser); if (! SUCCEEDED(hr)) { m_pBrowser = NULL; m_wndBrowser.DestroyWindow(); DestroyWindow(); return FALSE; } return 0; } ///响应命令ON_COMMAND(ID_OPENGIF, OnOpenGIF) ///随便用一个按钮,或菜单项。ID为ID_OPENGIF void CIEGIFView::OnOpenGIF() { CFileDialog dlg(TRUE, NULL, NULL); if(dlg.DoModal() == IDCANCEL) { return; } Navigate(dlg.GetPathName()); } 图1 显示GIF截图 注:代码一部分源至 MSDN 写作时间:2004-5-25 未经本文作者同意,不准擅自转载本篇文章。联系作者请邮至:fllsoft@sina.com或windowsce@tom.com |
Copyright© 1999-2004 vckbase.com All Rights Reserved. |