home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2004 March
/
CMCD0304.ISO
/
Software
/
Freeware
/
Programare
/
nullsoft
/
nsis20.exe
/
Source
/
exehead
/
bgbg.c
< prev
next >
Wrap
C/C++ Source or Header
|
2004-01-30
|
3KB
|
98 lines
#include "../Platform.h"
#include "resource.h"
#include "config.h"
#include "fileform.h"
#include "state.h"
#include "ui.h"
#include "util.h"
#ifdef NSIS_SUPPORT_BGBG
#define c1 header->bg_color1
#define c2 header->bg_color2
LRESULT CALLBACK BG_WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
case WM_WINDOWPOSCHANGING:
{
LPWINDOWPOS wp = (LPWINDOWPOS) lParam;
wp->flags |= SWP_NOACTIVATE;
wp->hwndInsertAfter = g_hwnd;
break;
}
case WM_PAINT:
{
header *header = g_header;
PAINTSTRUCT ps;
HDC hdc=BeginPaint(hwnd,&ps);
RECT r;
LOGBRUSH lh;
int ry;
lh.lbStyle = BS_SOLID;
GetClientRect(hwnd,&r);
// this portion by Drew Davidson, drewdavidson@mindspring.com
ry=r.bottom;
// JF: made slower, reduced to 4 pixels high, because I like how it looks better/
while (r.top < ry)
{
int rv,gv,bv;
HBRUSH brush;
rv = (GetRValue(c2) * r.top + GetRValue(c1) * (ry-r.top)) / ry;
gv = (GetGValue(c2) * r.top + GetGValue(c1) * (ry-r.top)) / ry;
bv = (GetBValue(c2) * r.top + GetBValue(c1) * (ry-r.top)) / ry;
lh.lbColor = RGB(rv,gv,bv);
brush = CreateBrushIndirect(&lh);
// note that we don't need to do "SelectObject(hdc, brush)"
// because FillRect lets us specify the brush as a parameter.
FillRect(hdc, &r, brush);
DeleteObject(brush);
r.top+=4;
r.bottom+=4;
}
if (header->bg_textcolor != -1)
{
HFONT oldFont;
HFONT newFont = CreateFont(
40,
0,
0,
0,
FW_BOLD,
TRUE,
FALSE,
FALSE,
DEFAULT_CHARSET,
OUT_DEFAULT_PRECIS,
CLIP_DEFAULT_PRECIS,
DEFAULT_QUALITY,
DEFAULT_PITCH,
"Garamond"
);
if (newFont)
{
r.left=16;
r.top=8;
SetBkMode(hdc,TRANSPARENT);
SetTextColor(hdc,header->bg_textcolor);
oldFont = SelectObject(hdc,newFont);
DrawText(hdc,g_caption,-1,&r,DT_TOP|DT_LEFT|DT_SINGLELINE|DT_NOPREFIX);
SelectObject(hdc,oldFont);
DeleteObject(newFont);
}
}
EndPaint(hwnd,&ps);
}
return 0;
}
return DefWindowProc(hwnd,uMsg,wParam,lParam);
}
#endif //NSIS_SUPPORT_BGBG