Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

186 lines
4.0 KiB

//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright (C) Microsoft Corporation, 1992 - 1994.
//
// File: box.cxx
//
// Contents: Color box custom control for use on dialog box.
//
// History: 27-Jan-94 BruceFo Created
//
//--------------------------------------------------------------------------
#include "headers.hxx"
#pragma hdrstop
#include "boxpriv.hxx"
////////////////////////////////////////////////////////////////////////////
#define COLORBOX_CONTROL_WNDEXTRA 4
#define GWL_BOXCTL_COLOR 0
#define ILLEGAL_COLOR ((COLORREF)-1)
////////////////////////////////////////////////////////////////////////////
LRESULT CALLBACK
BoxControlWndProc(
IN HWND hwnd,
IN UINT msg,
IN WPARAM wParam,
IN LPARAM lParam
);
////////////////////////////////////////////////////////////////////////////
//+-------------------------------------------------------------------------
//
// Function: BoxControlWndProc
//
// Synopsis: The color box custom control window procedure
//
// Arguments: standard WndProc
//
// Returns: standard WndProc
//
// History: 27-Jan-94 BruceFo Created
//
//--------------------------------------------------------------------------
LRESULT CALLBACK
BoxControlWndProc(
IN HWND hwnd,
IN UINT msg,
IN WPARAM wParam,
IN LPARAM lParam
)
{
switch (msg)
{
case WM_CREATE:
{
SetWindowLong(hwnd, GWL_BOXCTL_COLOR, (LONG)ILLEGAL_COLOR);
break;
}
case WM_PAINT:
{
PAINTSTRUCT ps;
RECT rc;
BeginPaint(hwnd,&ps);
COLORREF color = (COLORREF)GetWindowLong(hwnd, GWL_BOXCTL_COLOR);
if (color != ILLEGAL_COLOR)
{
HBRUSH BlackBrush = GetStockBrush(BLACK_BRUSH);
HBRUSH ColorBrush = CreateSolidBrush(color);
GetClientRect(hwnd, &rc);
FrameRect(ps.hdc,&rc,BlackBrush);
InflateRect(&rc,-1,-1);
SetBrushOrgEx(ps.hdc,rc.left,rc.top,NULL);
UnrealizeObject(ColorBrush);
FillRect(ps.hdc, &rc, ColorBrush);
DeleteBrush(ColorBrush);
}
EndPaint(hwnd,&ps);
break;
}
case WM_DESTROY:
{
// don't need to destroy color in GWL_BOXCTL_COLOR
break;
}
case BOXCTL_SETCOLOR:
{
// wParam = COLORREF
SetWindowLong(hwnd, GWL_BOXCTL_COLOR, (LONG)wParam);
break;
}
default:
return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 1;
}
//+-------------------------------------------------------------------------
//
// Function: UseColorBoxControl
//
// Synopsis: Initializes the color box custom control. Registers its
// window class.
//
// Arguments: [hInstance] -- instance handle
//
// Returns: 0 on success, else Win32 error
//
// History: 27-Jan-94 BruceFo Created
//
//--------------------------------------------------------------------------
DWORD
UseColorBoxControl(
IN HINSTANCE hInstance
)
{
WNDCLASS wc;
wc.style = 0;
wc.lpfnWndProc = BoxControlWndProc;
wc.cbClsExtra = 0;
wc.cbWndExtra = COLORBOX_CONTROL_WNDEXTRA;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = NULL;
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.lpszClassName = COLORBOX_CONTROL_STRING;
if (0 == RegisterClass(&wc))
{
return GetLastError();
}
return 0L;
}
//+-------------------------------------------------------------------------
//
// Function: ReleaseColorBoxControl
//
// Synopsis:
//
// Arguments: [hInstance] -- instance handle
//
// Returns: 0 on success, else Win32 error
//
// History: 7-Oct-94 BruceFo Created
//
//--------------------------------------------------------------------------
DWORD
ReleaseColorBoxControl(
IN HINSTANCE hInstance
)
{
if (!UnregisterClass(COLORBOX_CONTROL_STRING, hInstance))
{
return GetLastError();
}
return 0L;
}