// This file is part of BOINC.
// http://boinc.berkeley.edu
// Copyright (C) 2014-2015 University of California
//
// BOINC is free software; you can redistribute it and/or modify it
// under the terms of the GNU Lesser General Public License
// as published by the Free Software Foundation,
// either version 3 of the License, or (at your option) any later version.
//
// BOINC is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
// See the GNU Lesser General Public License for more details.
//
// You should have received a copy of the GNU Lesser General Public License
// along with BOINC. If not, see .
#ifndef _BROWSERWND_WIN_H_
#define _BROWSERWND_WIN_H_
class CHTMLBrowserWnd :
public CWindowImpl,
public IDispEventImpl<1, CHTMLBrowserWnd, &__uuidof(DWebBrowserEvents2), &LIBID_SHDocVw, 1, 1>
{
public:
DECLARE_WND_CLASS_EX(_T("BOINC_app"), 0, 0);
DECLARE_NO_REGISTRY();
BEGIN_SINK_MAP(CHTMLBrowserWnd)
SINK_ENTRY_EX(1, __uuidof(DWebBrowserEvents2), DISPID_NEWPROCESS, OnNewProcess)
SINK_ENTRY_EX(1, __uuidof(DWebBrowserEvents2), DISPID_NEWWINDOW2, OnNewWindow2)
SINK_ENTRY_EX(1, __uuidof(DWebBrowserEvents2), DISPID_NEWWINDOW3, OnNewWindow3)
END_SINK_MAP()
BEGIN_MSG_MAP(CHTMLBrowserWnd)
MESSAGE_HANDLER(WM_CREATE, OnCreate)
MESSAGE_HANDLER(WM_CLOSE, OnClose)
MESSAGE_HANDLER(WM_SIZE, OnSize)
MESSAGE_HANDLER(WM_KEYUP, OnInputActivity)
MESSAGE_HANDLER(WM_KEYDOWN, OnInputActivity)
MESSAGE_HANDLER(WM_MOUSEMOVE, OnInputActivity)
MESSAGE_HANDLER(WM_TIMER, OnTimer)
END_MSG_MAP()
CHTMLBrowserWnd();
~CHTMLBrowserWnd();
// Generic Window Events
LRESULT OnCreate(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnClose(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnTimer(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
LRESULT OnInputActivity(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
// HTML Browser Events
STDMETHOD_(void, OnNewProcess)(LONG lCauseFlag, IDispatch* pDisp, VARIANT_BOOL* pCancel);
STDMETHOD_(void, OnNewWindow2)(IDispatch** ppDisp, VARIANT_BOOL* pCancel);
STDMETHOD_(void, OnNewWindow3)(IDispatch** ppDisp, VARIANT_BOOL* pCancel, DWORD dwFlags, BSTR bstrUrlContext, BSTR bstrUrl);
//
void NavigateToStateURL(bool bForce);
CComObject* m_pBrowserHost;
CComQIPtr m_pBrowserCtrl;
HICON m_hIcon;
HICON m_hIconSmall;
bool m_bInitializing;
bool m_bScreensaverMode;
CComBSTR m_strCurrentURL;
CComBSTR m_strEmbeddedURL;
};
#endif