123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129 |
- #include "pch.h"
- /////////////////////////////////////////////////////////////////////////////
- //
- // TopPaneSiteImpl
- //
- /////////////////////////////////////////////////////////////////////////////
- class WindowTopPaneSiteImpl : public TopPaneSite {
- private:
- PaneWindow* m_pwindow;
- public:
- WindowTopPaneSiteImpl(PaneWindow* pwindow) :
- m_pwindow(pwindow)
- {
- }
- Point TransformLocalToImage(const Point& point)
- {
- return m_pwindow->TransformLocalToImage(point);
- }
- void SurfaceChanged()
- {
- m_pwindow->PaneSurfaceChanged();
- }
- void SizeChanged()
- {
- m_pwindow->PaneSizeChanged();
- }
- };
- /////////////////////////////////////////////////////////////////////////////
- //
- // PaneWindow
- //
- /////////////////////////////////////////////////////////////////////////////
- const WPARAM IDD_SizeChanged = 0;
- const WPARAM IDD_SurfaceChanged = 1;
- PaneWindow::PaneWindow(
- Window* pwindow,
- Engine* pengine,
- Pane* ppane,
- SurfaceType stype
- ) :
- ChildWindow(
- pwindow,
- WinRect(0, 0, 0, 0)
- ),
- m_pengine(pengine)
- {
- m_ptopPane =
- new TopPane(
- pengine,
- stype,
- false,
- new WindowTopPaneSiteImpl(this),
- ppane
- );
- SetMouseInput(m_ptopPane);
- UpdateSize();
- }
- void PaneWindow::SetPane(Pane* ppane)
- {
- m_ptopPane->RemoveAllChildren();
- m_ptopPane->InsertAtTop(ppane);
- UpdateSize();
- }
- Point PaneWindow::TransformLocalToImage(const Point& point)
- {
- return point;
- }
- void PaneWindow::UpdateSize()
- {
- SetClientSize(m_ptopPane->GetSurfaceSize());
- }
- void PaneWindow::PaneSizeChanged()
- {
- PostMessage(WM_COMMAND, IDD_SizeChanged, 0);
- }
- void PaneWindow::PaneSurfaceChanged()
- {
- PostMessage(WM_COMMAND, IDD_SurfaceChanged, 0);
- }
- bool PaneWindow::OnCommand(WPARAM wParam, LPARAM lParam)
- {
- switch(wParam) {
- case IDD_SizeChanged:
- UpdateSize();
- return true;
- case IDD_SurfaceChanged:
- //InvalidateRgn();
- HDC hdc = GetDC();
- OnPaint(hdc, WinRect(WinPoint(0, 0), GetClientRect().Size()));
- ReleaseDC(hdc);
- return true;
- }
- return false;
- }
- void PaneWindow::OnPaint(HDC hdc, const WinRect& rect)
- {
- Surface* psurface = m_ptopPane->GetSurface();
- m_pengine->BltToWindow(
- this,
- WinPoint(0, 0),
- psurface,
- WinRect(
- WinPoint(0, 0),
- psurface->GetSize()
- )
- );
- }
|