From 82d98577c0ab2bf7cf52f5e61e5dcc30d9d500dd Mon Sep 17 00:00:00 2001 From: "locka%iol.ie" Date: Wed, 21 Jun 2000 13:30:31 +0000 Subject: [PATCH] NOT PART OF BUILD. Fixed a memory leak. Added a stop button. Added code to update the URL field when a page is loaded --- .../activex/tests/cbrowse/CBrowseDlg.cpp | 43 ++++++++++++++++--- .../activex/tests/cbrowse/CBrowseDlg.h | 2 + .../tests/cbrowse/ControlEventSink.cpp | 4 ++ .../browser/activex/tests/cbrowse/cbrowse.rc | 21 ++++----- .../browser/activex/tests/cbrowse/resource.h | 1 + 5 files changed, 54 insertions(+), 17 deletions(-) diff --git a/embedding/browser/activex/tests/cbrowse/CBrowseDlg.cpp b/embedding/browser/activex/tests/cbrowse/CBrowseDlg.cpp index 30fa5f6d37c4..624e95fd2a23 100644 --- a/embedding/browser/activex/tests/cbrowse/CBrowseDlg.cpp +++ b/embedding/browser/activex/tests/cbrowse/CBrowseDlg.cpp @@ -95,6 +95,7 @@ BEGIN_MESSAGE_MAP(CBrowseDlg, CDialog) ON_COMMAND(ID_EDIT_SELECTALL, OnEditSelectAll) ON_COMMAND(ID_VIEW_REFRESH, OnViewRefresh) ON_COMMAND(ID_VIEW_VIEWSOURCE, OnViewViewSource) + ON_BN_CLICKED(IDC_STOP, OnStop) //}}AFX_MSG_MAP ON_COMMAND(IDB_BOLD, OnEditBold) ON_COMMAND(IDB_ITALIC, OnEditItalic) @@ -128,7 +129,6 @@ BOOL CBrowseDlg::OnInitDialog() CRect rcTabMarker; GetDlgItem(IDC_TAB_MARKER)->GetWindowRect(&rcTabMarker); ScreenToClient(rcTabMarker); -// GetDlgItem(IDC_TAB_MARKER)->DestroyWindow(); m_dlgPropSheet.AddPage(&m_TabMessages); m_dlgPropSheet.AddPage(&m_TabTests); @@ -408,6 +408,23 @@ void CBrowseDlg::PopulateTests() } } + +void CBrowseDlg::UpdateURL() +{ + CIPtr(IWebBrowser) spBrowser; + + GetWebBrowser(&spBrowser); + if (spBrowser) + { + USES_CONVERSION; + BSTR szLocation = NULL; + spBrowser->get_LocationURL(&szLocation); + m_cmbURLs.SetWindowText(W2T(szLocation)); + SysFreeString(szLocation); + } +} + + HRESULT CBrowseDlg::GetWebBrowser(IWebBrowser **pWebBrowser) { if (pWebBrowser == NULL) @@ -424,11 +441,11 @@ HRESULT CBrowseDlg::GetWebBrowser(IWebBrowser **pWebBrowser) if (pIUnkBrowser) { pIUnkBrowser->QueryInterface(IID_IWebBrowser, (void **) pWebBrowser); + pIUnkBrowser->Release(); if (*pWebBrowser) { return S_OK; } - pIUnkBrowser->Release(); } } @@ -444,18 +461,30 @@ void CBrowseDlg::OnGo() { CString szURL; m_cmbURLs.GetWindowText(szURL); -// int nItem = m_cmbURLs.GetCurSel(); -// CString szURL = (nItem == 0) ? m_szTestURL : aURLs[nItem - 1]; - CComVariant vFlags(m_bNewWindow ? navOpenInNewWindow : 0); - BSTR bstrURL = szURL.AllocSysString(); - pIWebBrowser->Navigate(bstrURL, &vFlags, NULL, NULL, NULL); + HRESULT hr = pIWebBrowser->Navigate(bstrURL, &vFlags, NULL, NULL, NULL); + if (FAILED(hr)) + { + OutputString("Navigate failed (hr=0x%08x)", hr); + } ::SysFreeString(bstrURL); pIWebBrowser->Release(); } } + +void CBrowseDlg::OnStop() +{ + IWebBrowser *pIWebBrowser = NULL; + if (SUCCEEDED(GetWebBrowser(&pIWebBrowser))) + { + pIWebBrowser->Stop(); + pIWebBrowser->Release(); + } +} + + void CBrowseDlg::OnBackward() { IWebBrowser *pIWebBrowser = NULL; diff --git a/embedding/browser/activex/tests/cbrowse/CBrowseDlg.h b/embedding/browser/activex/tests/cbrowse/CBrowseDlg.h index 4baa608192e4..5825c985b89f 100644 --- a/embedding/browser/activex/tests/cbrowse/CBrowseDlg.h +++ b/embedding/browser/activex/tests/cbrowse/CBrowseDlg.h @@ -37,6 +37,7 @@ public: TestResult RunTest(Test *pTest); void UpdateTest(HTREEITEM hItem, TestResult nResult); void UpdateTestSet(HTREEITEM hItem); + void UpdateURL(); void OutputString(const TCHAR *szMessage, ...); void ExecOleCommand(const GUID *pguidGroup, DWORD nCmdId); @@ -97,6 +98,7 @@ protected: afx_msg void OnEditSelectAll(); afx_msg void OnViewRefresh(); afx_msg void OnViewViewSource(); + afx_msg void OnStop(); //}}AFX_MSG afx_msg void OnEditBold(); afx_msg void OnEditItalic(); diff --git a/embedding/browser/activex/tests/cbrowse/ControlEventSink.cpp b/embedding/browser/activex/tests/cbrowse/ControlEventSink.cpp index f8b6f898c437..28f098c06dad 100644 --- a/embedding/browser/activex/tests/cbrowse/ControlEventSink.cpp +++ b/embedding/browser/activex/tests/cbrowse/ControlEventSink.cpp @@ -110,6 +110,10 @@ HRESULT STDMETHODCALLTYPE CControlEventSink:: Invoke( break; case 0x103: szEvent = _T("DocumentComplete"); + if (m_pBrowseDlg) + { + m_pBrowseDlg->UpdateURL(); + } break; case 0xfd: szEvent = _T("OnQuit"); diff --git a/embedding/browser/activex/tests/cbrowse/cbrowse.rc b/embedding/browser/activex/tests/cbrowse/cbrowse.rc index df8a7305fd8d..2e0d01cab656 100644 --- a/embedding/browser/activex/tests/cbrowse/cbrowse.rc +++ b/embedding/browser/activex/tests/cbrowse/cbrowse.rc @@ -104,19 +104,20 @@ EXSTYLE WS_EX_APPWINDOW CAPTION "CBrowse" FONT 8, "MS Sans Serif" BEGIN - CONTROL "",IDC_TAB_MARKER,"Static",SS_BLACKFRAME,7,223,279,89 RTEXT "&URL:",IDC_STATIC,7,13,18,8 - DEFPUSHBUTTON "&Go",IDC_GO,135,11,25,13 + COMBOBOX IDC_URL,27,11,125,52,CBS_DROPDOWN | CBS_AUTOHSCROLL | + WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "&Go",IDC_GO,154,11,25,13 + DEFPUSHBUTTON "&Stop",IDC_STOP,181,11,25,13 + PUSHBUTTON "<",IDC_BACKWARD,208,11,10,13 + PUSHBUTTON ">",IDC_FORWARD,220,11,10,13 + CONTROL "&New window",IDC_NEWWINDOW,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,233,7,53,10 + CONTROL "&Edit mode",IDC_EDITMODE,"Button",BS_AUTOCHECKBOX | + WS_TABSTOP,233,17,47,10 + CONTROL "",IDC_TAB_MARKER,"Static",SS_BLACKFRAME,7,223,279,89 CONTROL "",IDC_BROWSER_MARKER,"Static",SS_BLACKFRAME,7,48,279, 168 - COMBOBOX IDC_URL,27,11,106,52,CBS_DROPDOWN | CBS_AUTOHSCROLL | - WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "<",IDC_BACKWARD,163,11,14,13 - PUSHBUTTON ">",IDC_FORWARD,179,11,14,13 - CONTROL "&New window",IDC_NEWWINDOW,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,200,7,53,10 - CONTROL "&Edit mode",IDC_EDITMODE,"Button",BS_AUTOCHECKBOX | - WS_TABSTOP,200,17,47,10 CONTROL "",IDC_EDITBAR_MARKER,"Static",SS_BLACKFRAME,7,28,279,19 END diff --git a/embedding/browser/activex/tests/cbrowse/resource.h b/embedding/browser/activex/tests/cbrowse/resource.h index 91eb29cfe572..84e4168cf2d8 100644 --- a/embedding/browser/activex/tests/cbrowse/resource.h +++ b/embedding/browser/activex/tests/cbrowse/resource.h @@ -25,6 +25,7 @@ #define IDC_GO 1001 #define IDC_BROWSER_MARKER 1002 #define IDC_LISTBROWSER 1003 +#define IDC_STOP 1003 #define IDC_RUNTEST 1004 #define IDC_LISTMESSAGES 1005 #define IDC_TESTLIST 1006