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.
20 * COPYRIGHT: See COPYING in the top level directory
21 * PROJECT: ReactOS welcome/autorun application
22 * FILE: subsys/system/welcome/welcome.c
23 * PROGRAMMERS: Eric Kohl
24 * Casper S. Hornstrup (chorns@users.sourceforge.net)
27 * This utility can be customized by modifying the resources.
28 * Please do NOT change the source code in order to customize this
29 * utility but change the resources!
37 #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
);
120 switch (GetUserDefaultUILanguage())
122 case MAKELANGID(LANG_HEBREW
, SUBLANG_DEFAULT
):
123 SetProcessDefaultLayout(LAYOUT_RTL
);
133 hMainIcon
= LoadIcon (hInstance
, MAKEINTRESOURCE(IDI_MAIN
));
135 /* Register the window class */
136 wndclass
.style
= CS_HREDRAW
| CS_VREDRAW
;
137 wndclass
.lpfnWndProc
= (WNDPROC
)MainWndProc
;
138 wndclass
.cbClsExtra
= 0;
139 wndclass
.cbWndExtra
= 0;
140 wndclass
.hInstance
= hInstance
;
141 wndclass
.hIcon
= hMainIcon
;
142 wndclass
.hCursor
= LoadCursor (NULL
, IDC_ARROW
);
143 wndclass
.hbrBackground
= 0;
144 wndclass
.lpszMenuName
= NULL
;
145 wndclass
.lpszClassName
= szFrameClass
;
147 wndclass
.cbSize
= sizeof(WNDCLASSEX
);
148 wndclass
.hIconSm
= 0;
150 RegisterClassEx(&wndclass
);
152 hTitleBitmap
= LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_TITLEBITMAP
));
153 if (hTitleBitmap
!= NULL
)
155 GetObject(hTitleBitmap
, sizeof(BITMAP
), &BitmapInfo
);
156 ulInnerWidth
= BitmapInfo
.bmWidth
;
157 ulInnerHeight
= (ulInnerWidth
* 3) / 4;
158 ulTitleHeight
= BitmapInfo
.bmHeight
+ 3;
159 DeleteObject(hTitleBitmap
);
161 ulInnerHeight
-= GetSystemMetrics(SM_CYCAPTION
);
164 rcWindow
.bottom
= ulInnerHeight
- 1;
166 rcWindow
.right
= ulInnerWidth
- 1;
168 AdjustWindowRect(&rcWindow
,
171 xWidth
= rcWindow
.right
- rcWindow
.left
;
172 yHeight
= rcWindow
.bottom
- rcWindow
.top
;
174 xPos
= (GetSystemMetrics(SM_CXSCREEN
) - xWidth
) / 2;
175 yPos
= (GetSystemMetrics(SM_CYSCREEN
) - yHeight
) / 2;
177 rcTitlePanel
.top
= 0;
178 rcTitlePanel
.bottom
= ulTitleHeight
;
179 rcTitlePanel
.left
= 0;
180 rcTitlePanel
.right
= ulInnerWidth
- 1;
182 rcLeftPanel
.top
= rcTitlePanel
.bottom
;
183 rcLeftPanel
.bottom
= ulInnerHeight
- 1;
184 rcLeftPanel
.left
= 0;
185 rcLeftPanel
.right
= ulInnerWidth
/ 3;
187 rcRightPanel
.top
= rcLeftPanel
.top
;
188 rcRightPanel
.bottom
= rcLeftPanel
.bottom
;
189 rcRightPanel
.left
= rcLeftPanel
.right
;
190 rcRightPanel
.right
= ulInnerWidth
- 1;
192 if (!LoadString(hInstance
, (UINT_PTR
)MAKEINTRESOURCE(IDS_APPTITLE
), szAppTitle
, 80))
193 _tcscpy(szAppTitle
, TEXT("ReactOS Welcome"));
195 /* Create main window */
196 hwndMain
= CreateWindow(szFrameClass
,
208 hSystemMenu
= GetSystemMenu(hwndMain
, FALSE
);
211 RemoveMenu(hSystemMenu
, SC_SIZE
, MF_BYCOMMAND
);
212 RemoveMenu(hSystemMenu
, SC_MAXIMIZE
, MF_BYCOMMAND
);
215 ShowWindow(hwndMain
, nCmdShow
);
216 UpdateWindow(hwndMain
);
218 while (GetMessage(&msg
, NULL
, 0, 0) != FALSE
)
220 TranslateMessage(&msg
);
221 DispatchMessage(&msg
);
229 ButtonSubclassWndProc (HWND hWnd
, UINT uMsg
, WPARAM wParam
, LPARAM lParam
)
233 if (uMsg
== WM_MOUSEMOVE
)
235 i
= GetWindowLongPtr(hWnd
, GWL_ID
);
240 InvalidateRect(hwndMain
, &rcRightPanel
, TRUE
);
244 return(CallWindowProc(fnOldBtn
, hWnd
, uMsg
, wParam
, lParam
));
249 RunApplication(int nTopic
)
251 PROCESS_INFORMATION ProcessInfo
;
252 STARTUPINFO StartupInfo
;
254 TCHAR CurrentDir
[256];
257 InvalidateRect(hwndMain
, NULL
, TRUE
);
259 GetCurrentDirectory(256, CurrentDir
);
261 nLength
= LoadString(hInstance
, IDS_TOPICACTION0
+ nTopic
, AppName
, 256);
265 if (!_tcsicmp(AppName
, TEXT("<exit>")))
268 if (_tcsicmp(AppName
, TEXT("explorer.exe")) == 0)
270 _tcscat(AppName
, TEXT(" "));
271 _tcscat(AppName
, CurrentDir
);
274 ZeroMemory(&StartupInfo
, sizeof(StartupInfo
));
275 StartupInfo
.cb
= sizeof(StartupInfo
);
276 StartupInfo
.lpTitle
= TEXT("Test");
277 StartupInfo
.dwFlags
= STARTF_USESHOWWINDOW
;
278 StartupInfo
.wShowWindow
= SW_SHOWNORMAL
;
280 CreateProcess(NULL
, AppName
, NULL
, NULL
, FALSE
, CREATE_NEW_CONSOLE
,NULL
,
285 CloseHandle(ProcessInfo
.hProcess
);
286 CloseHandle(ProcessInfo
.hThread
);
293 SubclassButton(HWND hWnd
)
295 fnOldBtn
= (WNDPROC
)SetWindowLongPtr(hWnd
, GWL_WNDPROC
, (DWORD_PTR
)ButtonSubclassWndProc
);
300 GetButtonHeight(HDC hDC
,
309 rect
.right
= dwWidth
- 20;
313 hOldFont
= (HFONT
) SelectObject(hDC
, hFont
);
314 DrawText(hDC
, szText
, -1, &rect
, DT_TOP
| DT_CALCRECT
| DT_WORDBREAK
);
315 SelectObject(hDC
, hOldFont
);
317 return(rect
.bottom
-rect
.top
+ 14);
322 OnCreate(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
330 UNREFERENCED_PARAMETER(wParam
);
331 UNREFERENCED_PARAMETER(lParam
);
333 hbrLightBlue
= CreateSolidBrush(LIGHT_BLUE
);
334 hbrDarkBlue
= CreateSolidBrush(DARK_BLUE
);
335 hbrRightPanel
= CreateSolidBrush(0x00FFFFFF);
337 /* Topic title font */
338 hfontTopicTitle
= CreateFont(-18,0,0,0,FW_NORMAL
,
339 FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
346 /* Topic description font */
347 hfontTopicDescription
= CreateFont(-11,0,0,0,FW_THIN
,
348 FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
355 /* Topic button font */
356 hfontTopicButton
= CreateFont(-11,0,0,0,FW_BOLD
,
357 FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
364 /* Load title bitmap */
365 if (hTitleBitmap
!= 0)
366 hTitleBitmap
= LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_TITLEBITMAP
));
368 /* Load topic bitmaps */
369 hDefaultTopicBitmap
= LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_DEFAULTTOPICBITMAP
));
370 for (i
=0;i
< 10; i
++)
372 hTopicBitmap
[i
] = LoadBitmap (hInstance
, MAKEINTRESOURCE(IDB_TOPICBITMAP0
+i
));
375 ScreenDC
= GetWindowDC(hWnd
);
376 hdcMem
= CreateCompatibleDC (ScreenDC
);
377 ReleaseDC(hWnd
, ScreenDC
);
379 /* load and create buttons */
380 dwTop
= rcLeftPanel
.top
;
381 for (i
= 0; i
< 10; i
++)
383 nLength
= LoadString(hInstance
, IDS_TOPICBUTTON0
+ i
, szText
, 80);
386 dwHeight
= GetButtonHeight(hdcMem
,
389 rcLeftPanel
.right
- rcLeftPanel
.left
);
391 hwndTopicButton
[i
] = CreateWindow(TEXT("BUTTON"),
393 WS_CHILDWINDOW
| WS_VISIBLE
| WS_TABSTOP
| BS_MULTILINE
| BS_OWNERDRAW
,
396 rcLeftPanel
.right
- rcLeftPanel
.left
,
402 hwndDefaultTopic
= hwndTopicButton
[i
];
404 SubclassButton(hwndTopicButton
[i
]);
405 SendMessage(hwndTopicButton
[i
], WM_SETFONT
, (WPARAM
)hfontTopicButton
, MAKELPARAM(TRUE
,0));
409 hwndTopicButton
[i
] = 0;
415 /* Create exit button */
416 nLength
= LoadString(hInstance
, IDS_CLOSETEXT
, szText
, 80);
419 hwndCloseButton
= CreateWindow(TEXT("BUTTON"),
421 WS_VISIBLE
| WS_CHILD
| BS_FLAT
,
422 rcRightPanel
.right
- 10 - 57,
423 rcRightPanel
.bottom
- 10 - 21,
427 (HMENU
)IDC_CLOSEBUTTON
,
430 hwndDefaultTopic
= 0;
432 SendMessage(hwndCloseButton
, WM_SETFONT
, (WPARAM
)hfontTopicButton
, MAKELPARAM(TRUE
,0));
439 /* Create checkbox */
440 nLength
= LoadString(hInstance
, IDS_CHECKTEXT
,szText
,80);
443 hfontCheckButton
= CreateFont(-10,0,0,0,FW_THIN
,FALSE
,FALSE
,FALSE
,ANSI_CHARSET
,
450 hwndCheckButton
= CreateWindow(TEXT("BUTTON"),
452 WS_VISIBLE
| WS_CHILD
| BS_AUTOCHECKBOX
,
453 rcLeftPanel
.left
+ 8,
454 rcLeftPanel
.bottom
- 8 - 13,
455 rcLeftPanel
.right
- rcLeftPanel
.left
- 16,
458 (HMENU
)IDC_CHECKBUTTON
,
461 SendMessage(hwndCheckButton
, WM_SETFONT
, (WPARAM
)hfontCheckButton
, MAKELPARAM(TRUE
,0));
466 hfontCheckButton
= 0;
474 OnCommand(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
476 UNREFERENCED_PARAMETER(lParam
);
478 if (LOWORD(wParam
) == IDC_CLOSEBUTTON
)
482 else if ((LOWORD(wParam
) < 10))
484 if (RunApplication(LOWORD(wParam
)) == FALSE
)
494 PaintBanner(HDC hdc
, LPRECT rcPanel
)
500 hOldBitmap
= (HBITMAP
) SelectObject(hdcMem
, hTitleBitmap
);
504 rcPanel
->right
- rcPanel
->left
,
506 hdcMem
, 0, 0, SRCCOPY
);
507 SelectObject(hdcMem
, hOldBitmap
);
510 hOldBrush
= (HBRUSH
) SelectObject(hdc
, hbrDarkBlue
);
514 rcPanel
->right
- rcPanel
->left
,
518 SelectObject(hdc
, hOldBrush
);
523 OnPaint(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
529 HBITMAP hOldBitmap
= 0;
532 RECT rcTitle
, rcDescription
;
533 TCHAR szTopicTitle
[80];
534 TCHAR szTopicDesc
[256];
539 UNREFERENCED_PARAMETER(wParam
);
540 UNREFERENCED_PARAMETER(lParam
);
542 hdc
= BeginPaint(hWnd
, &ps
);
545 PaintBanner(hdc
, &rcTitlePanel
);
548 hOldBrush
= (HBRUSH
) SelectObject (hdc
, hbrLightBlue
);
552 rcLeftPanel
.right
- rcLeftPanel
.left
,
553 rcLeftPanel
.bottom
- rcLeftPanel
.top
,
555 SelectObject(hdc
, hOldBrush
);
558 hOldBrush
= (HBRUSH
) SelectObject (hdc
, WHITE_BRUSH
);
562 rcRightPanel
.right
- rcRightPanel
.left
,
563 rcRightPanel
.bottom
- rcRightPanel
.top
,
565 SelectObject(hdc
, hOldBrush
);
567 /* Draw dark verical line */
568 hPen
= CreatePen(PS_SOLID
, 0, DARK_BLUE
);
569 hOldPen
= (HPEN
) SelectObject(hdc
, hPen
);
570 MoveToEx(hdc
, rcRightPanel
.left
, rcRightPanel
.top
, NULL
);
571 LineTo(hdc
, rcRightPanel
.left
, rcRightPanel
.bottom
);
572 SelectObject(hdc
, hOldPen
);
575 /* Draw topic bitmap */
576 if ((nTopic
== -1) && (hDefaultTopicBitmap
!= 0))
578 GetObject(hDefaultTopicBitmap
, sizeof(BITMAP
), &bmpInfo
);
579 hOldBitmap
= (HBITMAP
) SelectObject (hdcMem
, hDefaultTopicBitmap
);
581 rcRightPanel
.right
- bmpInfo
.bmWidth
,
582 rcRightPanel
.bottom
- bmpInfo
.bmHeight
,
590 else if ((nTopic
!= -1) && (hTopicBitmap
[nTopic
] != 0))
592 GetObject(hTopicBitmap
[nTopic
], sizeof(BITMAP
), &bmpInfo
);
593 hOldBitmap
= (HBITMAP
) SelectObject (hdcMem
, hTopicBitmap
[nTopic
]);
595 rcRightPanel
.right
- bmpInfo
.bmWidth
,
596 rcRightPanel
.bottom
- bmpInfo
.bmHeight
,
607 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICTITLE
, szTopicTitle
, 80);
611 nLength
= LoadString(hInstance
, IDS_TOPICTITLE0
+ nTopic
, szTopicTitle
, 80);
613 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICTITLE
, szTopicTitle
, 80);
618 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICDESC
, szTopicDesc
, 256);
622 nLength
= LoadString(hInstance
, IDS_TOPICDESC0
+ nTopic
, szTopicDesc
, 256);
624 nLength
= LoadString(hInstance
, IDS_DEFAULTTOPICDESC
, szTopicDesc
, 256);
627 SetBkMode(hdc
, TRANSPARENT
);
629 /* Draw version information */
630 wsprintf(version
, TEXT("ReactOS %d.%d.%d"),
631 KERNEL_VERSION_MAJOR
,
632 KERNEL_VERSION_MINOR
,
633 KERNEL_VERSION_PATCH_LEVEL
);
635 rcTitle
.left
= rcLeftPanel
.left
+ 8;
636 rcTitle
.right
= rcLeftPanel
.right
- 5;
637 rcTitle
.top
= rcLeftPanel
.bottom
- 40;
638 rcTitle
.bottom
= rcLeftPanel
.bottom
- 5;
639 hOldFont
= (HFONT
) SelectObject(hdc
, hfontTopicDescription
);
640 DrawText(hdc
, version
, -1, &rcTitle
, DT_BOTTOM
| DT_CALCRECT
| DT_SINGLELINE
);
641 DrawText(hdc
, version
, -1, &rcTitle
, DT_BOTTOM
| DT_SINGLELINE
);
642 SelectObject(hdc
, hOldFont
);
644 /* Draw topic title */
645 rcTitle
.left
= rcRightPanel
.left
+ 12;
646 rcTitle
.right
= rcRightPanel
.right
- 8;
647 rcTitle
.top
= rcRightPanel
.top
+ 8;
648 rcTitle
.bottom
= rcTitle
.top
+ 57;
649 hOldFont
= (HFONT
) SelectObject(hdc
, hfontTopicTitle
);
650 DrawText(hdc
, szTopicTitle
, -1, &rcTitle
, DT_TOP
| DT_CALCRECT
);
652 SetTextColor(hdc
, DARK_BLUE
);
653 DrawText(hdc
, szTopicTitle
, -1, &rcTitle
, DT_TOP
);
655 /* Draw topic description */
656 rcDescription
.left
= rcRightPanel
.left
+ 12;
657 rcDescription
.right
= rcRightPanel
.right
- 8;
658 rcDescription
.top
= rcTitle
.bottom
+ 8;
659 rcDescription
.bottom
= rcRightPanel
.bottom
- 20;
661 SelectObject(hdc
, hfontTopicDescription
);
662 SetTextColor(hdc
, 0x00000000);
663 DrawText(hdc
, szTopicDesc
, -1, &rcDescription
, DT_TOP
| DT_WORDBREAK
);
665 SetBkMode(hdc
, OPAQUE
);
666 SelectObject(hdc
, hOldFont
);
668 SelectObject (hdcMem
, hOldBrush
);
669 SelectObject (hdcMem
, hOldBitmap
);
678 OnDrawItem(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
680 LPDRAWITEMSTRUCT lpDis
= (LPDRAWITEMSTRUCT
)lParam
;
686 UNREFERENCED_PARAMETER(hWnd
);
687 UNREFERENCED_PARAMETER(wParam
);
689 if (lpDis
->hwndItem
== hwndCloseButton
)
691 DrawFrameControl(lpDis
->hDC
,
694 DFCS_BUTTONPUSH
| DFCS_FLAT
);
698 if (lpDis
->CtlID
== (ULONG
)nTopic
)
699 hOldBrush
= (HBRUSH
) SelectObject(lpDis
->hDC
, hbrRightPanel
);
701 hOldBrush
= (HBRUSH
) SelectObject(lpDis
->hDC
, hbrLightBlue
);
707 lpDis
->rcItem
.bottom
,
709 SelectObject(lpDis
->hDC
, hOldBrush
);
711 hPen
= CreatePen(PS_SOLID
, 0, DARK_BLUE
);
712 hOldPen
= (HPEN
) SelectObject(lpDis
->hDC
, hPen
);
713 MoveToEx(lpDis
->hDC
, lpDis
->rcItem
.left
, lpDis
->rcItem
.bottom
-1, NULL
);
714 LineTo(lpDis
->hDC
, lpDis
->rcItem
.right
, lpDis
->rcItem
.bottom
-1);
715 SelectObject(lpDis
->hDC
, hOldPen
);
718 InflateRect(&lpDis
->rcItem
, -10, -4);
719 OffsetRect(&lpDis
->rcItem
, 0, 1);
720 GetWindowText(lpDis
->hwndItem
, szText
, 80);
721 SetTextColor(lpDis
->hDC
, 0x00000000);
722 iBkMode
= SetBkMode(lpDis
->hDC
, TRANSPARENT
);
723 DrawText(lpDis
->hDC
, szText
, -1, &lpDis
->rcItem
, DT_TOP
| DT_LEFT
| DT_WORDBREAK
);
724 SetBkMode(lpDis
->hDC
, iBkMode
);
732 OnMouseMove(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
734 UNREFERENCED_PARAMETER(wParam
);
735 UNREFERENCED_PARAMETER(lParam
);
741 InvalidateRect(hwndMain
, &rcRightPanel
, TRUE
);
749 OnCtlColorStatic(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
751 UNREFERENCED_PARAMETER(hWnd
);
753 if ((HWND
)lParam
== hwndCheckButton
)
755 SetBkColor((HDC
)wParam
, LIGHT_BLUE
);
756 return((LRESULT
)hbrLightBlue
);
764 OnActivate(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
766 UNREFERENCED_PARAMETER(hWnd
);
767 UNREFERENCED_PARAMETER(wParam
);
768 UNREFERENCED_PARAMETER(lParam
);
770 InvalidateRect(hwndMain
, &rcRightPanel
, TRUE
);
777 OnDestroy(HWND hWnd
, WPARAM wParam
, LPARAM lParam
)
781 UNREFERENCED_PARAMETER(hWnd
);
782 UNREFERENCED_PARAMETER(wParam
);
783 UNREFERENCED_PARAMETER(lParam
);
787 if (hwndTopicButton
[i
] != 0)
788 DestroyWindow(hwndTopicButton
[i
]);
791 if (hwndCloseButton
!= 0)
792 DestroyWindow(hwndCloseButton
);
794 if (hwndCheckButton
!= 0)
795 DestroyWindow(hwndCheckButton
);
800 DeleteObject(hDefaultTopicBitmap
);
801 DeleteObject(hTitleBitmap
);
804 if (hTopicBitmap
[i
] != 0)
805 DeleteObject(hTopicBitmap
[i
]);
808 DeleteObject(hfontTopicTitle
);
809 DeleteObject(hfontTopicDescription
);
810 DeleteObject(hfontTopicButton
);
812 if (hfontCheckButton
!= 0)
813 DeleteObject(hfontCheckButton
);
815 DeleteObject(hbrLightBlue
);
816 DeleteObject(hbrDarkBlue
);
817 DeleteObject(hbrRightPanel
);
824 MainWndProc(HWND hWnd
,
832 return(OnCreate(hWnd
, wParam
, lParam
));
835 return(OnCommand(hWnd
, wParam
, lParam
));
838 return(OnActivate(hWnd
, wParam
, lParam
));
841 return(OnPaint(hWnd
, wParam
, lParam
));
844 return(OnDrawItem(hWnd
, wParam
, lParam
));
846 case WM_CTLCOLORSTATIC
:
847 return(OnCtlColorStatic(hWnd
, wParam
, lParam
));
850 return(OnMouseMove(hWnd
, wParam
, lParam
));
853 OnDestroy(hWnd
, wParam
, lParam
);
858 return(DefWindowProc(hWnd
, uMsg
, wParam
, lParam
));