xref: /reactos/base/applications/mspaint/canvas.h (revision 2687c1b4)
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