Windows2003-3790/inetcore/connectionwizard/icwphbk/bmp.c
2020-09-30 16:53:55 +02:00

228 lines
5.7 KiB
C

/****************************************************************************
*
* Bmp.C
*
* Microsoft Confidential
* Copyright (c) Microsoft Corporation 1992-1993
* All rights reserved
*
* Deals with painting bitmaps on the wizard pages
* FelixA 1994.
***************************************************************************/
#include <windows.h>
#include "bmp.h"
//***************************************************************************
//
// BMP_RegisterClass()
// Registers the bitmap control class
//
// ENTRY:
// hInstance
//
// EXIT:
// NONE currently.
//
//***************************************************************************
BOOL FAR PASCAL BMP_RegisterClass(HINSTANCE hInstance)
{
WNDCLASS wc;
if (!GetClassInfo(hInstance, SU_BMP_CLASS, &wc)) {
wc.lpszClassName = SU_BMP_CLASS;
wc.style = 0;
wc.lpfnWndProc = BMP_WndProc;
wc.hInstance = hInstance;
wc.hIcon = NULL;
wc.hCursor = LoadCursor(NULL, IDC_ARROW);
wc.hbrBackground = NULL;
wc.lpszMenuName = NULL;
wc.cbClsExtra = 0;
wc.cbWndExtra = 5*sizeof(WORD);
if (!RegisterClass(&wc))
return FALSE;
}
return TRUE;
}
//***************************************************************************
//
// BMP_DestroyClass()
// Draws the bitmap control.
//
// ENTRY:
// hInstance
//
// EXIT:
// NONE currently.
//
//***************************************************************************
void FAR PASCAL BMP_DestroyClass( HINSTANCE hInst )
{
WNDCLASS wndClass;
if( GetClassInfo(hInst, SU_BMP_CLASS, &wndClass) )
if( !FindWindow( SU_BMP_CLASS, NULL ) )
UnregisterClass(SU_BMP_CLASS, hInst);
}
//***************************************************************************
//
// BMP_Draw()
// Draws the bitmap control.
//
// ENTRY:
// NONE
//
// EXIT:
// NONE currently.
//
//***************************************************************************
void FAR PASCAL BMP_Paint(HWND hwnd)
{
PAINTSTRUCT ps;
HDC hdc, hdcMem;
int idBmp;
HBITMAP hbm, hbmOld;
HBRUSH hbrOld;
HINSTANCE hInst;
int iDeleteBmp=TRUE;
BITMAP bm;
// For independence.
idBmp = GetDlgCtrlID( hwnd );
hInst = (HINSTANCE)GetWindowWord( hwnd, GWW_HINSTANCE );
// Paint.
hdc = BeginPaint(hwnd,&ps);
hbm = LoadBitmap(hInst, MAKEINTRESOURCE(idBmp));
if (hbm)
{
GetObject(hbm, sizeof(bm), &bm);
hdcMem = CreateCompatibleDC(hdc);
hbmOld = SelectObject(hdcMem, hbm);
// Draw the bitmap
BitBlt(hdc, 0, 0, bm.bmWidth , bm.bmHeight, hdcMem, 0, 0, SRCCOPY);
// Draw a frame around it.
hbrOld = SelectObject(hdc, GetStockObject(HOLLOW_BRUSH));
Rectangle( hdc, 0, 0, bm.bmWidth, bm.bmHeight );
SelectObject(hdc, hbrOld);
SelectObject(hdcMem, hbmOld);
DeleteObject(hbm);
DeleteDC(hdcMem);
}
EndPaint(hwnd,(LPPAINTSTRUCT)&ps);
}
// ****************************************************************************
//
// BMP_WndProc()
// This routine handles all the message for the bitmap control.
//
// ENTRY:
// hWnd - Progress window handle.
// wMsg - Message.
// wParam - Message wParam data.
// lParam - Message lParam data.
//
// EXIT:
// Returns depends on message being processed.
//
// NOTES:
// None.
//
// ***************************************************************************/
LRESULT CALLBACK BMP_WndProc( HWND hWnd, UINT wMsg, WORD wParam, LONG lParam )
{
switch (wMsg)
{
// case WM_NCCREATE:
// dw = GetWindowLong( hWnd,GWL_STYLE );
// SetWindowLong( hWnd, GWL_STYLE, dw | WS_BORDER );
// return TRUE;
case WM_PAINT:
BMP_Paint( hWnd );
return 0L;
}
return DefWindowProc( hWnd, wMsg, wParam, lParam );
}
#if 0
// Cached?
//***************************************************************************
//
// zzzBMP_CacheBitmaps()
// Loads and caches the bitmaps for setup
//
// NOTES:
// You must free the bitmaps using zzzBMP_FreeBitmaps
//
//***************************************************************************
typedef struct tag_Bitmap
{
int iBmp;
HBITMAP hBmp;
} BMPCACHE;
static BMPCACHE BmpCache[] = { {IDB_WIZARD_NET, 0},
{IDB_WIZARD_SETUP, 0},
{0,0} };
VOID FAR PASCAL zzzBMP_CacheBitmaps( )
{
int i=0;
while( BmpCache[i].iBmp )
BmpCache[i++].hBmp = LoadBitmap(hinstExe, MAKEINTRESOURCE(BmpCache[i].iBmp));
}
//***************************************************************************
//
// zzzBMP_FreeBitmapCache()
// Frees the cache of the bitmaps
//
// NOTES:
// Uses IDS_MB to actually format this string.
//
//***************************************************************************
VOID FAR PASCAL zzzBMP_FreeBitmapCache( )
{
int i=0;
while( BmpCache[i].iBmp )
{
if( BmpCache[i].hBmp && DeleteObject(BmpCache[i].hBmp) )
BmpCache[i].hBmp = 0;
i++;
}
}
//***************************************************************************
//
// zzzBMP_LoadCachedBitmaps()
// Returns the HBMP for the iBitmap you wanted.
//
// NOTES:
// Uses IDS_MB to actually format this string.
//
//***************************************************************************
HBITMAP FAR PASCAL zzzBMP_LoadCachedBitmaps(int iBitmap)
{
int i=0;
while( BmpCache[i].iBmp )
{
if( BmpCache[i].iBmp == iBitmap )
return BmpCache[i].hBmp;
i++;
}
SU_TRAP
return 0;
}
#endif