blob: 3c68d9cc782d19bae2f0fe90523838f2f74486f0 [file] [log] [blame]
/*
* Windows widgets (built-in window classes)
*
* Copyright 1993 Alexandre Julliard
*/
static char Copyright[] = "Copyright Alexandre Julliard, 1993";
#include "windows.h"
#include "win.h"
static LONG WIDGETS_ButtonWndProc( HWND hwnd, WORD message,
WORD wParam, LONG lParam );
static LONG WIDGETS_StaticWndProc( HWND hwnd, WORD message,
WORD wParam, LONG lParam );
#define NB_BUILTIN_CLASSES 2
static WNDCLASS WIDGETS_BuiltinClasses[NB_BUILTIN_CLASSES] =
{
{ 0, WIDGETS_ButtonWndProc, 0, 0, 0, 0, 0, 0, NULL, "BUTTON" },
{ 0, WIDGETS_StaticWndProc, 0, 0, 0, 0, 0, 0, NULL, "STATIC" }
};
static FARPROC WndProc32[NB_BUILTIN_CLASSES];
/***********************************************************************
* WIDGETS_Init
*
* Initialize the built-in window classes.
*/
BOOL WIDGETS_Init()
{
int i;
WNDCLASS * pClass = WIDGETS_BuiltinClasses;
for (i = 0; i < NB_BUILTIN_CLASSES; i++, pClass++)
{
WndProc32[i] = pClass->lpfnWndProc;
pClass->lpfnWndProc = (FARPROC) i+1;
if (!RegisterClass(pClass)) return FALSE;
}
return TRUE;
}
/**********************************************************************
* WIDGETS_Call32WndProc
*
* Call the window procedure of a built-in class.
*/
LONG WIDGETS_Call32WndProc( FARPROC func, HWND hwnd, WORD message,
WORD wParam, LONG lParam )
{
unsigned int i = (unsigned int) func;
if (!i || (i > NB_BUILTIN_CLASSES)) return 0;
return (*WndProc32[i-1])( hwnd, message, wParam, lParam );
}
/***********************************************************************
* WIDGETS_ButtonWndProc
*/
static LONG WIDGETS_ButtonWndProc( HWND hwnd, WORD message,
WORD wParam, LONG lParam )
{
switch(message)
{
case WM_CREATE:
return 0;
case WM_PAINT:
{
PAINTSTRUCT ps;
BeginPaint( hwnd, &ps );
EndPaint( hwnd, &ps );
return 0;
}
case WM_COMMAND:
{
WND *wndParent;
wndParent = WIN_FindWndPtr(hwnd);
CallWindowProc(wndParent->lpfnWndProc, hwnd, message, wParam, lParam);
return 0;
}
default:
return DefWindowProc( hwnd, message, wParam, lParam );
}
}
/***********************************************************************
* WIDGETS_StaticWndProc
*/
static LONG WIDGETS_StaticWndProc( HWND hwnd, WORD message,
WORD wParam, LONG lParam )
{
switch(message)
{
case WM_CREATE:
return 0;
case WM_PAINT:
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
hdc = BeginPaint( hwnd, &ps );
GetClientRect( hwnd, &rect );
DrawText(hdc, "Static", -1, &rect,
DT_SINGLELINE | DT_CENTER | DT_VCENTER );
EndPaint( hwnd, &ps );
return 0;
}
default:
return DefWindowProc( hwnd, message, wParam, lParam );
}
}