blob: 42804768205547cefadd50f85eceafea187e7551 [file] [log] [blame]
Alexandre Julliard75a839a1993-07-15 11:13:45 +00001/*
2 * Windows widgets (built-in window classes)
3 *
4 * Copyright 1993 Alexandre Julliard
5 */
6
7static char Copyright[] = "Copyright Alexandre Julliard, 1993";
8
Alexandre Julliardfb9a9191994-03-01 19:48:04 +00009#include "win.h"
Alexandre Julliardaca05781994-10-17 18:12:41 +000010#include "button.h"
11#include "static.h"
Alexandre Julliard8d24ae61994-04-05 21:42:43 +000012#include "desktop.h"
13#include "mdi.h"
14#include "gdi.h"
Alexandre Julliard75a839a1993-07-15 11:13:45 +000015
Alexandre Julliard5f721f81994-01-04 20:14:34 +000016LONG ScrollBarWndProc( HWND hwnd, WORD message, WORD wParam, LONG lParam );
17LONG ListBoxWndProc ( HWND hwnd, WORD message, WORD wParam, LONG lParam );
18LONG ComboBoxWndProc ( HWND hwnd, WORD message, WORD wParam, LONG lParam );
Alexandre Julliard58199531994-04-21 01:20:00 +000019LONG EditWndProc( HWND hwnd, WORD message, WORD wParam, LONG lParam );
Alexandre Julliard5f721f81994-01-04 20:14:34 +000020LONG PopupMenuWndProc ( HWND hwnd, WORD message, WORD wParam, LONG lParam );
Alexandre Julliardfb9a9191994-03-01 19:48:04 +000021LONG DesktopWndProc ( HWND hwnd, WORD message, WORD wParam, LONG lParam );
Alexandre Julliard8d24ae61994-04-05 21:42:43 +000022LONG MDIClientWndProc ( HWND hwnd, WORD message, WORD wParam, LONG lParam );
Alexandre Julliard75a839a1993-07-15 11:13:45 +000023
Alexandre Julliard75a839a1993-07-15 11:13:45 +000024
Alexandre Julliard0e607781993-11-03 19:23:37 +000025static WNDCLASS WIDGETS_BuiltinClasses[] =
Alexandre Julliard75a839a1993-07-15 11:13:45 +000026{
Alexandre Julliardaca05781994-10-17 18:12:41 +000027 { CS_GLOBALCLASS | CS_PARENTDC, ButtonWndProc, 0, sizeof(BUTTONINFO),
Alexandre Julliard5f721f81994-01-04 20:14:34 +000028 0, 0, 0, 0, NULL, "BUTTON" },
Alexandre Julliardaca05781994-10-17 18:12:41 +000029 { CS_GLOBALCLASS | CS_PARENTDC, StaticWndProc, 0, sizeof(STATICINFO),
Alexandre Julliard5f721f81994-01-04 20:14:34 +000030 0, 0, 0, 0, NULL, "STATIC" },
Alexandre Julliardaca05781994-10-17 18:12:41 +000031 { CS_GLOBALCLASS | CS_PARENTDC, ScrollBarWndProc, 0, 8,
Alexandre Julliard5f721f81994-01-04 20:14:34 +000032 0, 0, 0, 0, NULL, "SCROLLBAR" },
Alexandre Julliardaca05781994-10-17 18:12:41 +000033 { CS_GLOBALCLASS | CS_PARENTDC, ListBoxWndProc, 0, 8,
Alexandre Julliard5f721f81994-01-04 20:14:34 +000034 0, 0, 0, 0, NULL, "LISTBOX" },
Alexandre Julliardaca05781994-10-17 18:12:41 +000035 { CS_GLOBALCLASS | CS_PARENTDC, ComboBoxWndProc, 0, 8,
Alexandre Julliard5f721f81994-01-04 20:14:34 +000036 0, 0, 0, 0, NULL, "COMBOBOX" },
Alexandre Julliardaca05781994-10-17 18:12:41 +000037 { CS_GLOBALCLASS | CS_PARENTDC, EditWndProc, 0, 4,
Alexandre Julliard58199531994-04-21 01:20:00 +000038 0, 0, 0, 0, NULL, "EDIT" },
Alexandre Julliardaca05781994-10-17 18:12:41 +000039 { CS_GLOBALCLASS | CS_SAVEBITS, PopupMenuWndProc, 0, 8,
Alexandre Julliardf7207251994-07-23 07:57:48 +000040 0, 0, 0, 0, NULL, POPUPMENU_CLASS_NAME },
Alexandre Julliardaca05781994-10-17 18:12:41 +000041 { CS_GLOBALCLASS, DesktopWndProc, 0, sizeof(DESKTOPINFO),
Alexandre Julliardfb9a9191994-03-01 19:48:04 +000042 0, 0, 0, 0, NULL, DESKTOP_CLASS_NAME },
Alexandre Julliardaca05781994-10-17 18:12:41 +000043 { CS_GLOBALCLASS | CS_SAVEBITS, DefDlgProc, 0, DLGWINDOWEXTRA,
Alexandre Julliard8d24ae61994-04-05 21:42:43 +000044 0, 0, 0, 0, NULL, DIALOG_CLASS_NAME },
Alexandre Julliardaca05781994-10-17 18:12:41 +000045 { CS_GLOBALCLASS, MDIClientWndProc, 0, sizeof(MDICLIENTINFO),
Alexandre Julliard8d24ae61994-04-05 21:42:43 +000046 0, 0, 0, STOCK_LTGRAY_BRUSH, NULL, "MDICLIENT" }
Alexandre Julliard75a839a1993-07-15 11:13:45 +000047};
48
Alexandre Julliard0e607781993-11-03 19:23:37 +000049#define NB_BUILTIN_CLASSES \
50 (sizeof(WIDGETS_BuiltinClasses)/sizeof(WIDGETS_BuiltinClasses[0]))
Alexandre Julliard75a839a1993-07-15 11:13:45 +000051
52
53/***********************************************************************
54 * WIDGETS_Init
55 *
56 * Initialize the built-in window classes.
57 */
Alexandre Julliard8d24ae61994-04-05 21:42:43 +000058BOOL WIDGETS_Init(void)
Alexandre Julliard75a839a1993-07-15 11:13:45 +000059{
60 int i;
Alexandre Julliard940d58c1994-09-16 09:24:37 +000061 WNDCLASS *class = WIDGETS_BuiltinClasses;
62
63 for (i = 0; i < NB_BUILTIN_CLASSES; i++, class++)
Alexandre Julliard75a839a1993-07-15 11:13:45 +000064 {
Alexandre Julliard940d58c1994-09-16 09:24:37 +000065 class->hCursor = LoadCursor( 0, IDC_ARROW );
66 if (!RegisterClass( class )) return FALSE;
Alexandre Julliard75a839a1993-07-15 11:13:45 +000067 }
68 return TRUE;
69}