1 /* 2 * PROJECT: PAINT for ReactOS 3 * LICENSE: LGPL 4 * FILE: base/applications/mspaint/canvas.h 5 * PURPOSE: Providing the canvas window class 6 * PROGRAMMERS: Benedikt Freisen 7 */ 8 9 #pragma once 10 11 class CCanvasWindow : public CWindowImpl<CCanvasWindow> 12 { 13 public: 14 DECLARE_WND_CLASS_EX(_T("ReactOSPaintCanvas"), 0, COLOR_APPWORKSPACE) 15 16 BEGIN_MSG_MAP(CCanvasWindow) 17 MESSAGE_HANDLER(WM_SIZE, OnSize) 18 MESSAGE_HANDLER(WM_PAINT, OnPaint) 19 MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove) 20 MESSAGE_HANDLER(WM_HSCROLL, OnHScroll) 21 MESSAGE_HANDLER(WM_VSCROLL, OnVScroll) 22 MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd) 23 MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown) 24 MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown) 25 MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp) 26 MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor) 27 MESSAGE_HANDLER(WM_MOUSEWHEEL, OnMouseWheel) 28 MESSAGE_HANDLER(WM_CANCELMODE, OnCancelMode) 29 MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged) 30 END_MSG_MAP() 31 32 CCanvasWindow(); 33 34 VOID Update(HWND hwndFrom); 35 36 protected: 37 CANVAS_HITTEST m_whereHit; 38 POINT m_ptOrig; // The origin of drag start 39 40 CANVAS_HITTEST HitTest(POINT pt); 41 RECT GetBaseRect(); 42 VOID DoDraw(HDC hDC, RECT& rcClient, RECT& rcPaint); 43 VOID OnHVScroll(WPARAM wParam, INT fnBar); 44 45 LRESULT OnSize(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 46 LRESULT OnHScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 47 LRESULT OnVScroll(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 48 LRESULT OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 49 LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 50 LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 51 LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 52 LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 53 LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 54 LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 55 LRESULT OnMouseWheel(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 56 LRESULT OnCancelMode(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 57 LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled); 58 }; 59