VC在對話方塊中顯示網頁並對網頁進行操作
阿新 • • 發佈:2018-12-27
VC對話方塊程式中顯示網頁有兩種方法:
(1) 利用Active控制元件。
1. 新增"Microsoft web瀏覽器"控制元件:Add to Project
->Components and controls->Registered ActiveX
Controls->Microsoft Web 瀏覽器
2. 新增控制元件到對話方塊;
3. 為控制元件新增變數:CWebBrowser2 m_web;
4. 新增返回變數 VARIANT vart;
5. 呼叫m_web.Navigate("URL",&vart,&vart,&vart,&vart);即可
在對話方塊中的webBrowser控制元件顯示網頁;
(2)使用CHtmlView類開啟網頁
為了在對話方塊中顯示HTML檔案,必須將CHtmlCtrl類與對話方塊中的一個靜態控制(也可以是其它控制)關聯起來,這樣才能為顯示HTML檔案提供一個視窗,為此可以在CHtmlCtrl類中定義一個建立函式:- BOOL CHTMLCtrl::CreateFromStatic(CStatic* pStaticWnd, CWnd* pParent)
- {
- ASSERT(NULL!=pStaticWnd && NULL!=pStaticWnd->GetSafeHwnd());
- ASSERT(NULL!=pParent && NULL!=pParent->GetSafeHwnd());
- CRect rc;
- pStaticWnd->GetClientRect(&rc);
- int nID = pStaticWnd->GetDlgCtrlID();
- LPCTSTR lpClassName = AfxRegisterWndClass(NULL);
- return Create(lpClassName, _T(""), WS_CHILD|WS_VISIBLE, rc, pParent, nID, NULL);
- }
- int CHTMLCtrl::OnMouseActivate(CWnd* pDesktopWnd, UINT nHitTest, UINT message)
- {
- // TODO: Add your message handler code here and/or call default
- return CWnd::OnMouseActivate(pDesktopWnd, nHitTest, message);
- //Do not call it.
- // return CHtmlView::OnMouseActivate(pDesktopWnd, nHitTest, message);
- }
- BOOL CHomePage::OnInitDialog()
- {
- CDialog::OnInitDialog();
- CRect rc;
- GetClientRect(&rc);
- CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC_HTML);
- pStatic->MoveWindow(&rc);
- m_pHTMLPage = new CHTMLCtrl;
- CHTMLCtrl* pHTMLCtrl = (CHTMLCtrl*)m_pHTMLPage;
- pHTMLCtrl->CreateFromStatic(pStatic, this);
- pHTMLCtrl->Navigate(_T("http://www.osssk1.com"));
- return TRUE;
- }
- void CHTMLCtrl::OnNavigateError(LPCTSTR lpszURL, LPCTSTR lpszFrame,
- DWORD dwError,BOOL *pbCancel)
- {
- if (200!=dwError && 0==_tcscmp(_T("http://www.osssk1.com/"), lpszURL))
- {
- // Navigate to local html file.
- GetParent()->PostMessage(WM_NAVI_LOCAL_URL, 0, 0);
- return;
- }
- return CHtmlView::OnNavigateError(lpszURL, lpszFrame, dwError, pbCancel);
- }
- BOOL CHomePage::OnWndMsg(UINT message, WPARAM wParam, LPARAM lParam, LRESULT* pResult)
- {
- // TODO: Add your specialized code here and/or call the base class
- if (WM_NAVI_LOCAL_URL == message)
- {
- CHTMLCtrl* pHTMLCtrl = (CHTMLCtrl*)m_pHTMLPage;
- pHTMLCtrl->Navigate(_T("e:\\index.html"));
- return TRUE;
- }
- return CDialog::OnWndMsg(message, wParam, lParam, pResult);
- }