[MSPAINT]
[reactos.git] / reactos / base / applications / mspaint / selection.h
1 /*
2 * PROJECT: PAINT for ReactOS
3 * LICENSE: LGPL
4 * FILE: base/applications/mspaint/selection.h
5 * PURPOSE: Window procedure of the selection window
6 * PROGRAMMERS: Benedikt Freisen
7 * Katayama Hirofumi MZ
8 */
9
10 class CSelectionWindow : public CWindowImpl<CSelectionWindow>
11 {
12 public:
13 DECLARE_WND_CLASS_EX(_T("Selection"), CS_DBLCLKS, COLOR_BTNFACE)
14
15 BEGIN_MSG_MAP(CSelectionWindow)
16 MESSAGE_HANDLER(WM_PAINT, OnPaint)
17 MESSAGE_HANDLER(WM_ERASEBKGND, OnEraseBkgnd)
18 MESSAGE_HANDLER(WM_CREATE, OnCreate)
19 MESSAGE_HANDLER(WM_SYSCOLORCHANGE, OnSysColorChange)
20 MESSAGE_HANDLER(WM_SETCURSOR, OnSetCursor)
21 MESSAGE_HANDLER(WM_LBUTTONDOWN, OnLButtonDown)
22 MESSAGE_HANDLER(WM_MOUSEMOVE, OnMouseMove)
23 MESSAGE_HANDLER(WM_LBUTTONUP, OnLButtonUp)
24 MESSAGE_HANDLER(WM_PALETTEMODELCOLORCHANGED, OnPaletteModelColorChanged)
25 MESSAGE_HANDLER(WM_TOOLSMODELSETTINGSCHANGED, OnToolsModelSettingsChanged)
26 MESSAGE_HANDLER(WM_SELECTIONMODELREFRESHNEEDED, OnSelectionModelRefreshNeeded)
27 MESSAGE_HANDLER(WM_CAPTURECHANGED, OnCaptureChanged)
28 MESSAGE_HANDLER(WM_KEYDOWN, OnKeyDown)
29 END_MSG_MAP()
30
31 LRESULT OnPaint(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
32 LRESULT OnEraseBkgnd(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
33 LRESULT OnCreate(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
34 LRESULT OnSysColorChange(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
35 LRESULT OnSetCursor(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
36 LRESULT OnLButtonDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
37 LRESULT OnMouseMove(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
38 LRESULT OnLButtonUp(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
39 LRESULT OnPaletteModelColorChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
40 LRESULT OnToolsModelSettingsChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
41 LRESULT OnSelectionModelRefreshNeeded(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
42 LRESULT OnCaptureChanged(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
43 LRESULT OnKeyDown(UINT nMsg, WPARAM wParam, LPARAM lParam, BOOL& bHandled);
44
45 private:
46 static const LPCTSTR m_lpszCursorLUT[9];
47 BOOL m_bMoving;
48 int m_iAction;
49 POINT m_ptPos;
50 POINT m_ptFrac;
51 POINT m_ptDelta;
52 DWORD m_dwSystemSelectionColor;
53
54 int IdentifyCorner(int iXPos, int iYPos, int iWidth, int iHeight);
55 };
56
57 void ForceRefreshSelectionContents();