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.
227 lines
5.7 KiB
227 lines
5.7 KiB
/****************************************************************************
|
|
*
|
|
* 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
|
|
|