|
|
#include "priv.h"
#include "zaxxon.h"
#include "guids.h"
#include "shlwapip.h"
#include "mmreg.h"
#include "mmstream.h" // Multimedia stream interfaces
#include "amstream.h" // DirectShow multimedia stream interfaces
#include "ddstream.h" // DirectDraw multimedia stream interfaces
#include "bands.h"
#include "sccls.h"
#include "power.h"
class CMegaMan : public CToolBand, public IWinEventHandler { public: // *** IUnknown ***
virtual STDMETHODIMP_(ULONG) AddRef(void) { return CToolBand::AddRef(); }; virtual STDMETHODIMP_(ULONG) Release(void) { return CToolBand::Release(); }; virtual STDMETHODIMP QueryInterface(REFIID riid, LPVOID * ppvObj);
// *** IOleWindow methods ***
virtual STDMETHODIMP GetWindow(HWND * phwnd); virtual STDMETHODIMP ContextSensitiveHelp(BOOL bEnterMode) {return E_NOTIMPL;};
// *** IDeskBar methods ***
virtual STDMETHODIMP SetClient(IUnknown* punk) { return E_NOTIMPL; }; virtual STDMETHODIMP GetClient(IUnknown** ppunkClient) { return E_NOTIMPL; }; virtual STDMETHODIMP OnPosRectChangeDB (LPRECT prc) { return E_NOTIMPL;};
// ** IWinEventHandler ***
virtual STDMETHODIMP IsWindowOwner(HWND hwnd); virtual STDMETHODIMP OnWinEvent(HWND hwnd, UINT dwMsg, WPARAM wParam, LPARAM lParam, LRESULT* plres);
// *** IDeskBand methods ***
virtual STDMETHODIMP GetBandInfo(DWORD dwBandID, DWORD fViewMode, DESKBANDINFO* pdbi);
// *** IDockingWindow methods (override) ***
virtual STDMETHODIMP ShowDW(BOOL fShow); virtual STDMETHODIMP CloseDW(DWORD dw); // *** IInputObject methods (override) ***
virtual STDMETHODIMP TranslateAcceleratorIO(LPMSG lpMsg); virtual STDMETHODIMP HasFocusIO(); virtual STDMETHODIMP UIActivateIO(BOOL fActivate, LPMSG lpMsg); virtual STDMETHODIMP GetClassID(CLSID *pClassID); virtual STDMETHODIMP Load(IStream *pStm); virtual STDMETHODIMP Save(IStream *pStm, BOOL fClearDirty);
CMegaMan(); private: virtual ~CMegaMan();
HWND _CreateWindow(HWND hwndParent);
friend HRESULT CMegaMan_CreateInstance(IUnknown *punk, REFIID riid, void **ppv); };
CMegaMan::CMegaMan() {
}
CMegaMan::~CMegaMan() {
}
HWND CMegaMan::_CreateWindow(HWND hwndParent) { if (_hwnd) return _hwnd;
_hwnd = CreateWindow(TEXT("Button"), TEXT("Sup"), WS_VISIBLE | WS_CHILD | TBSTYLE_FLAT | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, 0, 0, 0, 0, hwndParent, (HMENU) 0, HINST_THISDLL, NULL);
return _hwnd; }
STDMETHODIMP CMegaMan::QueryInterface(REFIID riid, LPVOID * ppvObj) { static const QITAB qit[] = { QITABENT(CMegaMan, IWinEventHandler), { 0 }, };
HRESULT hres = QISearch(this, qit, riid, ppvObj); if (FAILED(hres)) hres = CToolBand::QueryInterface(riid, ppvObj);
return hres; }
STDMETHODIMP CMegaMan::GetWindow(HWND * phwnd) {
*phwnd = _CreateWindow(_hwndParent);
return *phwnd? S_OK : E_FAIL; }
STDMETHODIMP CMegaMan::GetBandInfo(DWORD dwBandID, DWORD fViewMode, DESKBANDINFO* pdbi) {
UINT ucy = 50; UINT ucx = 50;
#if 0
if (fViewMode & (DBIF_VIEWMODE_FLOATING |DBIF_VIEWMODE_VERTICAL)) {
} else { } #endif
_dwBandID = dwBandID;
pdbi->ptMinSize.x = 0; pdbi->ptMinSize.y = ucy;
pdbi->ptMaxSize.y = -1; pdbi->ptMaxSize.x = 32000;
pdbi->ptActual.y = 0; pdbi->ptActual.x = 0;
pdbi->ptIntegral.y = 1; pdbi->ptIntegral.x = 1;
if (pdbi->dwMask & DBIM_TITLE) { StrCpy(pdbi->wszTitle, TEXT("MegaMan")); }
return S_OK; }
STDMETHODIMP CMegaMan::ShowDW(BOOL fShow) { return CToolBand::ShowDW(fShow); }
STDMETHODIMP CMegaMan::CloseDW(DWORD dw) { return CToolBand::CloseDW(dw); }
STDMETHODIMP CMegaMan::TranslateAcceleratorIO(LPMSG lpMsg) { return E_NOTIMPL; }
STDMETHODIMP CMegaMan::HasFocusIO() { return E_NOTIMPL; }
STDMETHODIMP CMegaMan::UIActivateIO(BOOL fActivate, LPMSG lpMsg) { return S_OK; }
STDMETHODIMP CMegaMan::IsWindowOwner(HWND hwnd) { return (hwnd == _hwnd)? S_OK : S_FALSE; }
STDMETHODIMP CMegaMan::OnWinEvent(HWND hwnd, UINT dwMsg, WPARAM wParam, LPARAM lParam, LRESULT* plres) {
HRESULT hres = S_FALSE; return hres; }
HRESULT CMegaMan_CreateInstance(IUnknown *punk, REFIID riid, void **ppv) { HRESULT hr; CMegaMan *pmm = new CMegaMan; if (pmm) { hr = pmm->QueryInterface(riid, ppv); pmm->Release(); } else { hr = E_OUTOFMEMORY; *ppv = NULL; } return hr; }
STDMETHODIMP CMegaMan::GetClassID(CLSID *pClassID) { *pClassID = CLSID_MegaMan;
return S_OK; }
STDMETHODIMP CMegaMan::Load(IStream *pStm) { return S_OK; }
STDMETHODIMP CMegaMan::Save(IStream *pStm, BOOL fClearDirty) { return S_OK;
}
|