2 * PROJECT: PAINT for ReactOS
4 * FILE: base/applications/mspaint/toolbox.cpp
5 * PURPOSE: Window procedure of the main window and all children apart from
6 * hPalWin, hToolSettings and hSelection
7 * PROGRAMMERS: Benedikt Freisen
10 /* INCLUDES *********************************************************/
14 /* FUNCTIONS ********************************************************/
16 LRESULT
CToolBox::OnCreate(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
18 HIMAGELIST hImageList
;
21 TCHAR tooltips
[16][30];
24 * FIXME: Unintentionally there is a line above the tool bar (hidden by y-offset).
25 * To prevent cropping of the buttons height has been increased from 200 to 205
27 RECT toolbarPos
= {1, -2, 1 + 50, -2 + 205};
28 toolbar
.Create(TOOLBARCLASSNAME
, m_hWnd
, toolbarPos
, NULL
,
29 WS_CHILD
| WS_VISIBLE
| CCS_NOPARENTALIGN
| CCS_VERT
| CCS_NORESIZE
| TBSTYLE_TOOLTIPS
);
30 hImageList
= ImageList_Create(16, 16, ILC_COLOR24
| ILC_MASK
, 16, 0);
31 toolbar
.SendMessage(TB_SETIMAGELIST
, 0, (LPARAM
) hImageList
);
32 tempBm
= (HBITMAP
) LoadImage((HINSTANCE
)GetWindowLongPtr(GWLP_HINSTANCE
), MAKEINTRESOURCE(IDB_TOOLBARICONS
), IMAGE_BITMAP
, 256, 16, 0);
33 ImageList_AddMasked(hImageList
, tempBm
, 0xff00ff);
35 toolbar
.SendMessage(TB_BUTTONSTRUCTSIZE
, sizeof(TBBUTTON
), 0);
37 for(i
= 0; i
< 16; i
++)
43 wrapnow
= TBSTATE_WRAP
;
45 LoadString((HINSTANCE
)GetWindowLongPtr(GWLP_HINSTANCE
), IDS_TOOLTIP1
+ i
, tooltips
[i
], 30);
46 ZeroMemory(&tbbutton
, sizeof(TBBUTTON
));
47 tbbutton
.iString
= (INT_PTR
) tooltips
[i
];
48 tbbutton
.fsStyle
= TBSTYLE_CHECKGROUP
;
49 tbbutton
.fsState
= TBSTATE_ENABLED
| wrapnow
;
50 tbbutton
.idCommand
= ID_FREESEL
+ i
;
52 toolbar
.SendMessage(TB_ADDBUTTONS
, 1, (LPARAM
) &tbbutton
);
55 toolbar
.SendMessage(TB_CHECKBUTTON
, ID_PEN
, MAKELPARAM(TRUE
, 0));
56 toolbar
.SendMessage(TB_SETMAXTEXTROWS
, 0, 0);
57 toolbar
.SendMessage(TB_SETBUTTONSIZE
, 0, MAKELPARAM(25, 25));
62 LRESULT
CToolBox::OnSetCursor(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
64 SetCursor(LoadCursor(NULL
, IDC_ARROW
));
68 LRESULT
CToolBox::OnSysColorChange(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
70 toolbar
.SendMessage(WM_SYSCOLORCHANGE
, 0, 0);
74 LRESULT
CToolBox::OnCommand(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
76 switch (LOWORD(wParam
))
79 toolsModel
.SetActiveTool(1);
82 toolsModel
.SetActiveTool(2);
85 toolsModel
.SetActiveTool(3);
88 toolsModel
.SetActiveTool(4);
91 toolsModel
.SetActiveTool(5);
94 toolsModel
.SetActiveTool(6);
97 toolsModel
.SetActiveTool(7);
100 toolsModel
.SetActiveTool(8);
103 toolsModel
.SetActiveTool(9);
106 toolsModel
.SetActiveTool(10);
109 toolsModel
.SetActiveTool(11);
112 toolsModel
.SetActiveTool(12);
115 toolsModel
.SetActiveTool(13);
118 toolsModel
.SetActiveTool(14);
121 toolsModel
.SetActiveTool(15);
124 toolsModel
.SetActiveTool(16);
130 LRESULT
CToolBox::OnToolsModelToolChanged(UINT nMsg
, WPARAM wParam
, LPARAM lParam
, BOOL
& bHandled
)
132 selectionWindow
.ShowWindow(SW_HIDE
);
133 pointSP
= 0; // resets the point-buffer of the polygon and bezier functions