Leaked source code of windows server 2003
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.
 
 
 
 
 
 

85 lines
2.5 KiB

/****************************** Module Header ******************************\
* Module Name: draw.c
*
* Copyright (c) 1985 - 1999, Microsoft Corporation
*
* This module contains the DrawFrameControl API
*
* History:
* 12-12-93 FritzS Ported from Chicago
\***************************************************************************/
#include "precomp.h"
#pragma hdrstop
/***************************************************************************\
* PaintRect
*
* History:
* 11-15-90 DarrinM Ported from Win 3.0 sources.
* 01-21-91 IanJa Prefix '_' denoting exported function (although not API)
* 12-12-94 JerrySh Copied from server - make sure to keep in sync
\***************************************************************************/
BOOL PaintRect(
HWND hwndBrush,
HWND hwndPaint,
HDC hdc,
HBRUSH hbr,
LPRECT lprc)
{
POINT ptOrg;
PWND pwndBrush;
PWND pwndPaint;
HWND hwndDesktop;
hwndDesktop = GetDesktopWindow();
if (hwndBrush == NULL) {
hwndBrush = hwndDesktop;
}
if (hwndBrush != hwndPaint) {
pwndBrush = ValidateHwnd(hwndBrush);
if (pwndBrush == NULL) {
RIPMSG1(RIP_WARNING, "PaintRect: invalid Brush window %lX", hwndBrush);
return FALSE;
}
pwndPaint = ValidateHwnd(hwndPaint);
if (pwndPaint == NULL) {
RIPMSG1(RIP_WARNING, "PaintRect: invalid Paint window %lX", hwndBrush);
return FALSE;
}
if (hwndBrush != hwndDesktop) {
SetBrushOrgEx(
hdc,
pwndBrush->rcClient.left - pwndPaint->rcClient.left,
pwndBrush->rcClient.top - pwndPaint->rcClient.top,
&ptOrg);
} else {
SetBrushOrgEx(hdc, 0, 0, &ptOrg);
}
}
/*
* If hbr < CTLCOLOR_MAX, it isn't really a brush but is one of our
* special color values. Translate it to the appropriate WM_CTLCOLOR
* message and send it off to get back a real brush. The translation
* process assumes the CTLCOLOR*** and WM_CTLCOLOR*** values map directly.
*/
if (hbr < (HBRUSH)CTLCOLOR_MAX) {
hbr = GetControlColor(hwndBrush, hwndPaint, hdc,
HandleToUlong(hbr) + WM_CTLCOLORMSGBOX);
}
FillRect(hdc, lprc, hbr);
if (hwndBrush != hwndPaint) {
SetBrushOrgEx(hdc, ptOrg.x, ptOrg.y, NULL);
}
return TRUE;
}