200 lines
6.1 KiB
C++
200 lines
6.1 KiB
C++
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
|
|
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
|
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
|
|
// PARTICULAR PURPOSE.
|
|
//
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
#ifndef __SPYCON_H_
|
|
#define __SPYCON_H_
|
|
|
|
#include "resource.h" // main symbols
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSpyCon
|
|
class ATL_NO_VTABLE CSpyCon :
|
|
public CComObjectRoot,
|
|
public CComCoClass<CSpyCon, &CLSID_SpyCon>,
|
|
public ISpyCon,
|
|
public CWindowImpl<CSpyCon>,
|
|
public IOleClientSite,
|
|
public IOleInPlaceSite
|
|
|
|
{
|
|
private:
|
|
WINDOWPLACEMENT m_wp;
|
|
CComPtr<IOleObject> m_spOleObject;
|
|
CComPtr<IComSpy> m_spSpy;
|
|
bool m_bInPlaceActive;
|
|
bool m_bAlwaysOnTop;
|
|
bool m_bSaveOnExit;
|
|
|
|
protected:
|
|
CSpyCon()
|
|
{
|
|
ZeroMemory(&m_wp, sizeof(m_wp));
|
|
m_wp.length = sizeof(m_wp);
|
|
m_bInPlaceActive = false;
|
|
m_bAlwaysOnTop = false;
|
|
m_bSaveOnExit = true;
|
|
}
|
|
|
|
~CSpyCon()
|
|
{
|
|
}
|
|
|
|
void FinalRelease()
|
|
{
|
|
}
|
|
|
|
public:
|
|
|
|
DECLARE_REGISTRY_RESOURCEID(IDR_SPYCON)
|
|
DECLARE_NOT_AGGREGATABLE(CSpyCon)
|
|
|
|
BEGIN_COM_MAP(CSpyCon)
|
|
COM_INTERFACE_ENTRY(ISpyCon)
|
|
COM_INTERFACE_ENTRY(IOleClientSite)
|
|
COM_INTERFACE_ENTRY(IOleWindow)
|
|
COM_INTERFACE_ENTRY(IOleInPlaceSite)
|
|
END_COM_MAP()
|
|
|
|
BEGIN_MSG_MAP(CSpyCon)
|
|
MESSAGE_HANDLER(WM_NCDESTROY, OnNCDestroy)
|
|
MESSAGE_HANDLER(WM_SIZE, OnSize)
|
|
MESSAGE_HANDLER(WM_ERASEBKGND, OnErase)
|
|
MESSAGE_HANDLER(WM_INITMENU, OnInitMenu)
|
|
COMMAND_ID_HANDLER(IDM_EXIT, OnExit)
|
|
COMMAND_ID_HANDLER(WM_CLOSE, OnExit)
|
|
COMMAND_ID_HANDLER(IDM_SELECT_APPLICATIONS, OnSelectFilter)
|
|
MESSAGE_HANDLER(WM_SYSCOMMAND, OnSysCommand)
|
|
COMMAND_ID_HANDLER(ID_LOG, OnLogToFile)
|
|
COMMAND_ID_HANDLER(ID_CHOOSE_LOG_FILE_NAME, OnChooseLogFile)
|
|
COMMAND_ID_HANDLER(ID_SAVE, OnSave)
|
|
COMMAND_ID_HANDLER(ID_CLEAR, OnClear)
|
|
COMMAND_ID_HANDLER(ID_OPTIONS_GRID_LINES, OnToggleGridLines)
|
|
COMMAND_ID_HANDLER(IDM_ON_TOP, OnAlwaysOnTop)
|
|
COMMAND_ID_HANDLER(IDM_ABOUT, OnAbout)
|
|
COMMAND_ID_HANDLER(ID_CHOOSEFONT, OnChooseFont)
|
|
COMMAND_ID_HANDLER(ID_SHOW_ON_SCREEN, OnToggleShowOnScreen)
|
|
COMMAND_ID_HANDLER(ID_SAVE_ON_EXIT, OnToggleSaveOnExit)
|
|
COMMAND_ID_HANDLER(ID_SAVE_NOW, OnSaveNow)
|
|
END_MSG_MAP()
|
|
|
|
protected:
|
|
LRESULT OnSaveNow(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnToggleSaveOnExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnToggleShowOnScreen(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnSelectFilter(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnSysCommand(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
LRESULT OnLogToFile(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnChooseLogFile(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnInitMenu(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
LRESULT OnSave(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnClear(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnToggleGridLines(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnAlwaysOnTop(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnAbout(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnChooseFont(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnClose(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnExit(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled);
|
|
LRESULT OnNCDestroy(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
LRESULT OnErase(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
LRESULT OnSize(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
|
|
|
|
// ISpyCon
|
|
public:
|
|
STDMETHOD(Run)();
|
|
|
|
// IOleClientSite
|
|
public:
|
|
STDMETHOD(SaveObject)()
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleClientSite::SaveObject");
|
|
}
|
|
STDMETHOD(GetMoniker)(DWORD dwAssign, DWORD dwWhichMoniker, IMoniker **ppmk)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleClientSite::GetMoniker");
|
|
}
|
|
STDMETHOD(GetContainer)(IOleContainer **ppContainer)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleClientSite::GetContainer");
|
|
}
|
|
STDMETHOD(ShowObject)()
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleClientSite::ShowObject");
|
|
}
|
|
STDMETHOD(OnShowWindow)(BOOL fShow)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleClientSite::OnShowWindow");
|
|
}
|
|
STDMETHOD(RequestNewObjectLayout)()
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleClientSite::RequestNewObjectLayout");
|
|
}
|
|
|
|
|
|
// IOleWindow
|
|
public:
|
|
STDMETHOD(GetWindow)(HWND *phwnd)
|
|
{
|
|
*phwnd = m_hWnd;
|
|
return S_OK;
|
|
}
|
|
STDMETHOD(ContextSensitiveHelp)(BOOL fEnterMode)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleWindow::ContextSensitiveHelp");
|
|
}
|
|
|
|
// IOleInPlaceSite
|
|
public:
|
|
HRESULT SaveSettings();
|
|
STDMETHOD(CanInPlaceActivate)()
|
|
{
|
|
return S_OK;
|
|
}
|
|
STDMETHOD(OnInPlaceActivate)()
|
|
{
|
|
m_bInPlaceActive = true;
|
|
return S_OK;
|
|
}
|
|
STDMETHOD(OnUIActivate)()
|
|
{
|
|
return S_OK;
|
|
}
|
|
STDMETHOD(GetWindowContext)(IOleInPlaceFrame **ppFrame, IOleInPlaceUIWindow **ppDoc,
|
|
LPRECT lprcPosRect, LPRECT lprcClipRect, LPOLEINPLACEFRAMEINFO lpFrameInfo)
|
|
{
|
|
GetClientRect(lprcPosRect);
|
|
GetClientRect(lprcClipRect);
|
|
return S_OK;
|
|
}
|
|
STDMETHOD(Scroll)(SIZE scrollExtant)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleInPlaceSite::Scroll");
|
|
}
|
|
STDMETHOD(OnUIDeactivate)(BOOL fUndoable)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleInPlaceSite::OnUIDeactivate");
|
|
}
|
|
STDMETHOD(OnInPlaceDeactivate)()
|
|
{
|
|
m_bInPlaceActive = false;
|
|
return S_OK;
|
|
}
|
|
STDMETHOD(DiscardUndoState)()
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleInPlaceSite::DiscardUndoState");
|
|
}
|
|
STDMETHOD(DeactivateAndUndo)()
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleInPlaceSite::DeactivateAndUndo");
|
|
}
|
|
STDMETHOD(OnPosRectChange)(LPCRECT lprcPosRect)
|
|
{
|
|
ATLTRACENOTIMPL(L"IOleInPlaceSite::OnPosRectChange");
|
|
}
|
|
};
|
|
|
|
#endif //__SPYCON_H_
|