3 * Copyright (C) 2001, 2002, 2003 ReactOS Team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
21 * COPYRIGHT: See COPYING in the top level directory
22 * PROJECT: ReactOS welcome/autorun application
23 * FILE: subsys/system/welcome/welcome.c
24 * PROGRAMMERS: Eric Kohl
25 * Casper S. Hornstrup (chorns@users.sourceforge.net)
28 * This utility can be customized by modifying the resources.
29 * Please do NOT change the source code in order to customize this
30 * utility but change the resources!
33 #include "../../../include/reactos/version.h"
43 #define LIGHT_BLUE 0x00F7EFD6
44 #define DARK_BLUE 0x008C7B6B
46 #define TITLE_WIDTH 480
47 #define TITLE_HEIGHT 93
50 /* GLOBALS ******************************************************************/
52 TCHAR szFrameClass
[] = TEXT("WelcomeWindowClass");
53 TCHAR szAppTitle
[80];
58 HWND hwndDefaultTopic
= 0;
63 int nDefaultTopic
= -1;
65 ULONG ulInnerWidth
= TITLE_WIDTH
;
66 ULONG ulInnerHeight
= (TITLE_WIDTH
* 3) / 4;
67 ULONG ulTitleHeight
= TITLE_HEIGHT
+ 3;
69 HBITMAP hTitleBitmap
= 0;
70 HBITMAP hDefaultTopicBitmap
= 0;
71 HBITMAP hTopicBitmap
[10];
72 HWND hwndTopicButton
[10];
76 HFONT hfontTopicButton
;
77 HFONT hfontTopicTitle
;
78 HFONT hfontTopicDescription
;
79 HFONT hfontCheckButton
;
93 MainWndProc (HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
);
96 /* FUNCTIONS ****************************************************************/
99 _tWinMain(HINSTANCE hInst
,
100 HINSTANCE hPrevInstance
,
113 DWORD dwStyle
= WS_OVERLAPPED
| WS_CLIPCHILDREN
| WS_CLIPSIBLINGS
|
114 WS_CAPTION
| WS_SYSMENU
| WS_MINIMIZEBOX
;
117 UNREFERENCED_PARAMETER(hPrevInstance
);
118 UNREFERENCED_PARAMETER(lpszCmdLine
);
123 hMainIcon
= LoadIcon (hInstance
, MAKEINTRESOURCE(IDI_MAIN
));
125 /* Register the window class */
126 wndclass
.style
= CS_HREDRAW
| CS_VREDRAW
;
127 wndclass
.lpfnWndProc
= (WNDPROC
)MainWndProc
;
128 wndclass
.cbClsExtra
= 0;
129 wndclass
.cbWndExtra
= 0;
130 wndclass
.hInstance
= hInstance
;
131 wndclass
.hIcon
= hMainIcon
;
132 wndclass
.hCursor
= LoadCursor (NULL
, IDC_ARROW
);
133 wndclass
.hbrBackground
= 0;
134 wndclass
.lpszMenuName
= NULL
;
135 wndclass
.lpszClassName
= szFrameClass
;
137 wndclass
.cbSize
= sizeof(WNDCLASSEX
);
138 wndclass
.hIconSm
= 0;
140 RegisterClassEx(&wndclass
);
142 hTitleBitmap
= LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_TITLEBITMAP
));
143 if (hTitleBitmap
!= NULL
)
145 GetObject(hTitleBitmap
, sizeof(BITMAP
), &BitmapInfo
);
146 ulInnerWidth
= BitmapInfo
.bmWidth
;
147 ulInnerHeight
= (ulInnerWidth
* 3) / 4;
148 ulTitleHeight
= BitmapInfo
.bmHeight
+ 3;
149 DeleteObject(hTitleBitmap
);
151 ulInnerHeight
-= GetSystemMetrics(SM_CYCAPTION
);
154 rcWindow
.bottom
= ulInnerHeight
- 1;
156 rcWindow
.right
= ulInnerWidth
- 1;
158 AdjustWindowRect(&rcWindow
,
161 xWidth
= rcWindow
.right
- rcWindow
.left
;
162 yHeight
= rcWindow
.bottom
- rcWindow
.top
;
164 xPos
= (GetSystemMetrics(SM_CXSCREEN
) - xWidth
) / 2;
165 yPos
= (GetSystemMetrics(SM_CYSCREEN
) - yHeight
) / 2;
167 rcTitlePanel
.top
= 0;
168 rcTitlePanel
.bottom
= ulTitleHeight
;
169 rcTitlePanel
.left
= 0;
170 rcTitlePanel
.right
= ulInnerWidth
- 1;
172 rcLeftPanel
.top
= rcTitlePanel
.bottom
;
173 rcLeftPanel
.bottom
= ulInnerHeight
- 1;
174 rcLeftPanel
.left
= 0;
175 rcLeftPanel
.right
= ulInnerWidth
/ 3;
177 rcRightPanel
.top
= rcLeftPanel
.top
;
178 rcRightPanel
.bottom
= rcLeftPanel
.bottom
;
179 rcRightPanel
.left
= rcLeftPanel
.right
;
180 rcRightPanel
.right
= ulInnerWidth
- 1;
182 if (!LoadString(hInstance
, (UINT_PTR
)MAKEINTRESOURCE(IDS_APPTITLE
), szAppTitle
, 80))
183 _tcscpy(szAppTitle
, TEXT("ReactOS Welcome"));
185 /* Create main window */
186 hwndMain
= CreateWindow(szFrameClass
,
198 hSystemMenu
= GetSystemMenu(hwndMain
, FALSE
);
201 RemoveMenu(hSystemMenu
, SC_SIZE
, MF_BYCOMMAND
);
202 RemoveMenu(hSystemMenu
, SC_MAXIMIZE
, MF_BYCOMMAND
);
205 ShowWindow(hwndMain
, nCmdShow
);
206 UpdateWindow(hwndMain
);
208 while (GetMessage(&msg
, NULL
, 0, 0) != FALSE
)
210 TranslateMessage(&msg
);
211 DispatchMessage(&msg
);
219 ButtonSubclassWndProc (HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
223 if (uMsg
== WM_MOUSEMOVE
)
225 i
= GetWindowLongPtr(hWnd
, GWL_ID
);
230 InvalidateRect(hwndMain
, &rcRightPanel
, TRUE
);
234 return(CallWindowProc(fnOldBtn
, hWnd
, uMsg
, wParam
, lParam
));
239 RunApplication(int nTopic
)
241 PROCESS_INFORMATION ProcessInfo
;
242 STARTUPINFO StartupInfo
;
244 TCHAR CurrentDir
[256];
247 InvalidateRect(hwndMain
, NULL
, TRUE
);
249 GetCurrentDirectory(256, CurrentDir
);
251 nLength
= LoadString(hInstance
, IDS_TOPICACTION0
+ nTopic
, AppName
, 256);
255 if (!_tcsicmp(AppName
, TEXT("<exit>")))
258 if (_tcsicmp(AppName
, TEXT("explorer.exe")) == 0)
260 _tcscat(AppName
, TEXT(" "));
261 _tcscat(AppName
, CurrentDir
);
264 memset(&StartupInfo
, 0, sizeof(STARTUPINFO
));
265 StartupInfo
.cb
= sizeof(STARTUPINFO
);
266 StartupInfo
.lpTitle
= TEXT("Test");
267 StartupInfo
.dwFlags
= STARTF_USESHOWWINDOW
;
268 StartupInfo
.wShowWindow
= SW_SHOWNORMAL
;
270 CreateProcess(NULL
, AppName
, NULL
, NULL
, FALSE
, CREATE_NEW_CONSOLE
,NULL
,
275 CloseHandle(ProcessInfo
.hProcess
);
276 CloseHandle(ProcessInfo
.hThread
);
283 SubclassButton(HWND hWnd
)
285 fnOldBtn
= (WNDPROC
)SetWindowLongPtr(hWnd
, GWL_WNDPROC
, (DWORD_PTR
)ButtonSubclassWndProc
);
290 GetButtonHeight(HDC hDC
,
299 rect
.right
= dwWidth
- 20;
303 hOldFont
= (HFONT
) SelectObject(hDC
, hFont
);
304 DrawText(hDC
, szText
, -1, &rect
, DT_TOP
| DT_CALCRECT
| DT_WORDBREAK
);
305 SelectObject(hDC
, hOldFont
);
307 return(rect
.bottom
-rect
.top
+ 14);
312 OnCreate(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
320 UNREFERENCED_PARAMETER(wParam
);
321 UNREFERENCED_PARAMETER(lParam
);
323 hbrLightBlue
= CreateSolidBrush(LIGHT_BLUE
);
324 hbrDarkBlue
= CreateSolidBrush(DARK_BLUE
);
325 hbrRightPanel
= CreateSolidBrush(0x00FFFFFF);
327 /* Topic title font */
328 hfontTopicTitle
= CreateFont(-18,0,0,0,FW_NORMAL
,
329 FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
336 /* Topic description font */
337 hfontTopicDescription
= CreateFont(-11,0,0,0,FW_THIN
,
338 FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
345 /* Topic button font */
346 hfontTopicButton
= CreateFont(-11,0,0,0,FW_BOLD
,
347 FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
354 /* Load title bitmap */
355 if (hTitleBitmap
!= 0)
356 hTitleBitmap
= LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_TITLEBITMAP
));
358 /* Load topic bitmaps */
359 hDefaultTopicBitmap
= LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_DEFAULTTOPICBITMAP
));
360 for (i
=0;i
< 10; i
++)
362 hTopicBitmap
[i
] = LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_TOPICBITMAP0
+i
));
365 ScreenDC
= GetWindowDC(hWnd
);
366 hdcMem
= CreateCompatibleDC (ScreenDC
);
367 ReleaseDC(hWnd
, ScreenDC
);
369 /* load and create buttons */
370 dwTop
= rcLeftPanel
.top
;
371 for (i
= 0; i
< 10; i
++)
373 nLength
= LoadString(hInstance
, IDS_TOPICBUTTON0
+ i
, szText
, 80);
376 dwHeight
= GetButtonHeight(hdcMem
,
379 rcLeftPanel
.right
- rcLeftPanel
.left
);
381 hwndTopicButton
[i
] = CreateWindow(TEXT("BUTTON"),
383 WS_CHILDWINDOW
| WS_VISIBLE
| WS_TABSTOP
| BS_MULTILINE
| BS_OWNERDRAW
,
386 rcLeftPanel
.right
- rcLeftPanel
.left
,
392 hwndDefaultTopic
= hwndTopicButton
[i
];
394 SubclassButton(hwndTopicButton
[i
]);
395 SendMessage(hwndTopicButton
[i
], WM_SETFONT
, (WPARAM
)hfontTopicButton
, MAKELPARAM(TRUE
,0));
399 hwndTopicButton
[i
] = 0;
405 /* Create exit button */
406 nLength
= LoadString(hInstance
, IDS_CLOSETEXT
, szText
, 80);
409 hwndCloseButton
= CreateWindow(TEXT("BUTTON"),
411 WS_VISIBLE
| WS_CHILD
| BS_FLAT
,
412 rcRightPanel
.right
- 10 - 57,
413 rcRightPanel
.bottom
- 10 - 21,
417 (HMENU
)IDC_CLOSEBUTTON
,
420 hwndDefaultTopic
= 0;
422 SendMessage(hwndCloseButton
, WM_SETFONT
, (WPARAM
)hfontTopicButton
, MAKELPARAM(TRUE
,0));
429 /* Create checkbox */
430 nLength
= LoadString(hInstance
, IDS_CHECKTEXT
,szText
,80);
433 hfontCheckButton
= CreateFont(-10,0,0,0,FW_THIN
,FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
440 hwndCheckButton
= CreateWindow(TEXT("BUTTON"),
442 WS_VISIBLE
| WS_CHILD
| BS_AUTOCHECKBOX
,
443 rcLeftPanel
.left
+ 8,
444 rcLeftPanel
.bottom
- 8 - 13,
445 rcLeftPanel
.right
- rcLeftPanel
.left
- 16,
448 (HMENU
)IDC_CHECKBUTTON
,
451 SendMessage(hwndCheckButton
, WM_SETFONT
, (WPARAM
)hfontCheckButton
, MAKELPARAM(TRUE
,0));
456 hfontCheckButton
= 0;
464 OnCommand(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
466 UNREFERENCED_PARAMETER(lParam
);
468 if (LOWORD(wParam
) == IDC_CLOSEBUTTON
)
472 else if ((LOWORD(wParam
) < 10))
474 if (RunApplication(LOWORD(wParam
)) == FALSE
)
484 PaintBanner(HDC hdc
, LPRECT rcPanel
)
490 hOldBitmap
= (HBITMAP
) SelectObject(hdcMem
, hTitleBitmap
);
494 rcPanel
->right
- rcPanel
->left
,
496 hdcMem
, 0, 0, SRCCOPY
);
497 SelectObject(hdcMem
, hOldBitmap
);
500 hOldBrush
= (HBRUSH
) SelectObject(hdc
, hbrDarkBlue
);
504 rcPanel
->right
- rcPanel
->left
,
508 SelectObject(hdc
, hOldBrush
);
513 OnPaint(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
519 HBITMAP hOldBitmap
= 0;
522 RECT rcTitle
, rcDescription
;
523 TCHAR szTopicTitle
[80];
524 TCHAR szTopicDesc
[256];
529 UNREFERENCED_PARAMETER(wParam
);
530 UNREFERENCED_PARAMETER(lParam
);
532 hdc
= BeginPaint(hWnd
, &ps
);
535 PaintBanner(hdc
, &rcTitlePanel
);
538 hOldBrush
= (HBRUSH
) SelectObject (hdc
, hbrLightBlue
);
542 rcLeftPanel
.right
- rcLeftPanel
.left
,
543 rcLeftPanel
.bottom
- rcLeftPanel
.top
,
545 SelectObject(hdc
, hOldBrush
);
548 hOldBrush
= (HBRUSH
) SelectObject (hdc
, WHITE_BRUSH
);
552 rcRightPanel
.right
- rcRightPanel
.left
,
553 rcRightPanel
.bottom
- rcRightPanel
.top
,
555 SelectObject(hdc
, hOldBrush
);
557 /* Draw dark verical line */
558 hPen
= CreatePen(PS_SOLID
, 0, DARK_BLUE
);
559 hOldPen
= (HPEN
) SelectObject(hdc
, hPen
);
560 MoveToEx(hdc
, rcRightPanel
.left
, rcRightPanel
.top
, NULL
);
561 LineTo(hdc
, rcRightPanel
.left
, rcRightPanel
.bottom
);
562 SelectObject(hdc
, hOldPen
);
565 /* Draw topic bitmap */
566 if ((nTopic
== -1) && (hDefaultTopicBitmap
!= 0))
568 GetObject(hDefaultTopicBitmap
, sizeof(BITMAP
), &bmpInfo
);
569 hOldBitmap
= (HBITMAP
) SelectObject (hdcMem
, hDefaultTopicBitmap
);
571 rcRightPanel
.right
- bmpInfo
.bmWidth
,
572 rcRightPanel
.bottom
- bmpInfo
.bmHeight
,
580 else if ((nTopic
!= -1) && (hTopicBitmap
[nTopic
] != 0))
582 GetObject(hTopicBitmap
[nTopic
], sizeof(BITMAP
), &bmpInfo
);
583 hOldBitmap
= (HBITMAP
) SelectObject (hdcMem
, hTopicBitmap
[nTopic
]);
585 rcRightPanel
.right
- bmpInfo
.bmWidth
,
586 rcRightPanel
.bottom
- bmpInfo
.bmHeight
,
597 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICTITLE
, szTopicTitle
, 80);
601 nLength
= LoadString(hInstance
, IDS_TOPICTITLE0
+ nTopic
, szTopicTitle
, 80);
603 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICTITLE
, szTopicTitle
, 80);
608 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICDESC
, szTopicDesc
, 256);
612 nLength
= LoadString(hInstance
, IDS_TOPICDESC0
+ nTopic
, szTopicDesc
, 256);
614 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICDESC
, szTopicDesc
, 256);
617 SetBkMode(hdc
, TRANSPARENT
);
619 /* Draw version information */
620 wsprintf(version
, TEXT("ReactOS %d.%d.%d"),
621 KERNEL_VERSION_MAJOR
,
622 KERNEL_VERSION_MINOR
,
623 KERNEL_VERSION_PATCH_LEVEL
);
625 rcTitle
.left
= rcLeftPanel
.left
+ 8;
626 rcTitle
.right
= rcLeftPanel
.right
- 5;
627 rcTitle
.top
= rcLeftPanel
.bottom
- 40;
628 rcTitle
.bottom
= rcLeftPanel
.bottom
- 5;
629 hOldFont
= (HFONT
) SelectObject(hdc
, hfontTopicDescription
);
630 DrawText(hdc
, version
, -1, &rcTitle
, DT_BOTTOM
| DT_CALCRECT
| DT_SINGLELINE
);
631 DrawText(hdc
, version
, -1, &rcTitle
, DT_BOTTOM
| DT_SINGLELINE
);
632 SelectObject(hdc
, hOldFont
);
634 /* Draw topic title */
635 rcTitle
.left
= rcRightPanel
.left
+ 12;
636 rcTitle
.right
= rcRightPanel
.right
- 8;
637 rcTitle
.top
= rcRightPanel
.top
+ 8;
638 rcTitle
.bottom
= rcTitle
.top
+ 57;
639 hOldFont
= (HFONT
) SelectObject(hdc
, hfontTopicTitle
);
640 DrawText(hdc
, szTopicTitle
, -1, &rcTitle
, DT_TOP
| DT_CALCRECT
);
642 SetTextColor(hdc
, DARK_BLUE
);
643 DrawText(hdc
, szTopicTitle
, -1, &rcTitle
, DT_TOP
);
645 /* Draw topic description */
646 rcDescription
.left
= rcRightPanel
.left
+ 12;
647 rcDescription
.right
= rcRightPanel
.right
- 8;
648 rcDescription
.top
= rcTitle
.bottom
+ 8;
649 rcDescription
.bottom
= rcRightPanel
.bottom
- 20;
651 SelectObject(hdc
, hfontTopicDescription
);
652 SetTextColor(hdc
, 0x00000000);
653 DrawText(hdc
, szTopicDesc
, -1, &rcDescription
, DT_TOP
| DT_WORDBREAK
);
655 SetBkMode(hdc
, OPAQUE
);
656 SelectObject(hdc
, hOldFont
);
658 SelectObject (hdcMem
, hOldBrush
);
659 SelectObject (hdcMem
, hOldBitmap
);
668 OnDrawItem(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
670 LPDRAWITEMSTRUCT lpDis
= (LPDRAWITEMSTRUCT
)lParam
;
676 UNREFERENCED_PARAMETER(hWnd
);
677 UNREFERENCED_PARAMETER(wParam
);
679 if (lpDis
->hwndItem
== hwndCloseButton
)
681 DrawFrameControl(lpDis
->hDC
,
684 DFCS_BUTTONPUSH
| DFCS_FLAT
);
688 if (lpDis
->CtlID
== (ULONG
)nTopic
)
689 hOldBrush
= (HBRUSH
) SelectObject(lpDis
->hDC
, hbrRightPanel
);
691 hOldBrush
= (HBRUSH
) SelectObject(lpDis
->hDC
, hbrLightBlue
);
697 lpDis
->rcItem
.bottom
,
699 SelectObject(lpDis
->hDC
, hOldBrush
);
701 hPen
= CreatePen(PS_SOLID
, 0, DARK_BLUE
);
702 hOldPen
= (HPEN
) SelectObject(lpDis
->hDC
, hPen
);
703 MoveToEx(lpDis
->hDC
, lpDis
->rcItem
.left
, lpDis
->rcItem
.bottom
-1, NULL
);
704 LineTo(lpDis
->hDC
, lpDis
->rcItem
.right
, lpDis
->rcItem
.bottom
-1);
705 SelectObject(lpDis
->hDC
, hOldPen
);
708 InflateRect(&lpDis
->rcItem
, -10, -4);
709 OffsetRect(&lpDis
->rcItem
, 0, 1);
710 GetWindowText(lpDis
->hwndItem
, szText
, 80);
711 SetTextColor(lpDis
->hDC
, 0x00000000);
712 iBkMode
= SetBkMode(lpDis
->hDC
, TRANSPARENT
);
713 DrawText(lpDis
->hDC
, szText
, -1, &lpDis
->rcItem
, DT_TOP
| DT_LEFT
| DT_WORDBREAK
);
714 SetBkMode(lpDis
->hDC
, iBkMode
);
722 OnMouseMove(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
724 UNREFERENCED_PARAMETER(wParam
);
725 UNREFERENCED_PARAMETER(lParam
);
731 InvalidateRect(hwndMain
, &rcRightPanel
, TRUE
);
739 OnCtlColorStatic(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
741 UNREFERENCED_PARAMETER(hWnd
);
743 if ((HWND
)lParam
== hwndCheckButton
)
745 SetBkColor((HDC
)wParam
, LIGHT_BLUE
);
746 return((LRESULT
)hbrLightBlue
);
754 OnActivate(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
756 UNREFERENCED_PARAMETER(hWnd
);
757 UNREFERENCED_PARAMETER(wParam
);
758 UNREFERENCED_PARAMETER(lParam
);
760 InvalidateRect(hwndMain
, &rcRightPanel
, TRUE
);
767 OnDestroy(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
771 UNREFERENCED_PARAMETER(hWnd
);
772 UNREFERENCED_PARAMETER(wParam
);
773 UNREFERENCED_PARAMETER(lParam
);
777 if (hwndTopicButton
[i
] != 0)
778 DestroyWindow(hwndTopicButton
[i
]);
781 if (hwndCloseButton
!= 0)
782 DestroyWindow(hwndCloseButton
);
784 if (hwndCheckButton
!= 0)
785 DestroyWindow(hwndCheckButton
);
790 DeleteObject(hDefaultTopicBitmap
);
791 DeleteObject(hTitleBitmap
);
794 if (hTopicBitmap
[i
] != 0)
795 DeleteObject(hTopicBitmap
[i
]);
798 DeleteObject(hfontTopicTitle
);
799 DeleteObject(hfontTopicDescription
);
800 DeleteObject(hfontTopicButton
);
802 if (hfontCheckButton
!= 0)
803 DeleteObject(hfontCheckButton
);
805 DeleteObject(hbrLightBlue
);
806 DeleteObject(hbrDarkBlue
);
807 DeleteObject(hbrRightPanel
);
814 MainWndProc(HWND hWnd
,
822 return(OnCreate(hWnd
, wParam
, lParam
));
825 return(OnCommand(hWnd
, wParam
, lParam
));
828 return(OnActivate(hWnd
, wParam
, lParam
));
831 return(OnPaint(hWnd
, wParam
, lParam
));
834 return(OnDrawItem(hWnd
, wParam
, lParam
));
836 case WM_CTLCOLORSTATIC
:
837 return(OnCtlColorStatic(hWnd
, wParam
, lParam
));
840 return(OnMouseMove(hWnd
, wParam
, lParam
));
843 OnDestroy(hWnd
, wParam
, lParam
);
848 return(DefWindowProc(hWnd
, uMsg
, wParam
, lParam
));