#include "testbed.h"
#include "test.h"
#include <windows.h>
#include <string.h>

#define SZPROFILE 20

int mf;		/* public vars */
int cf;
BOOL abort_search;

BOOL FAR PASCAL ProgressWndProc( HWND hWnd, unsigned message, WORD wParam, LONG lParam)
{
	static HWND sbCtl;
	static HBRUSH hBrush, hOldBrush;	
	static int r, g, b;

	HDC hBarDC;
	char string[80], rgbstring[SZPROFILE];	
	RECT rect;
		
	switch (message) {

		case WM_COMMAND:
			abort_search = TRUE;
			break;

		case WM_INITDIALOG:
		
			/* Get Scroll Bar Color */
			
			GetProfileString( (LPSTR) "colors",
					  (LPSTR) "Scrollbar",
					  (LPSTR) "255 0 0",
					  rgbstring, SZPROFILE); 	

			r = atoi(strtok(rgbstring, " "));
			g = atoi(strtok(NULL, " "));
			b = atoi(strtok(NULL, " "));
			
			/* Initialize Textual Family Count */
		
			sprintf(string, "Family # %i of %i", 0, mf);
			SetDlgItemText(hWnd, CURRENT, (LPSTR) string);
			
			/* Initialize Thermometer Bar */
		
			sbCtl = GetDlgItem(hWnd, PROGBAR);
			hBrush = CreateSolidBrush(RGB(r,g,b));
			break;
			
		case WM_PROGRESS:
		
			/* Update Family Count */
			
			sprintf(string, "Family # %i of %i", cf, mf);
			SetDlgItemText(hWnd, CURRENT, (LPSTR) string);
		
			/* Update Thermometer Bar */
			hBarDC = GetDC(sbCtl);
			GetClientRect(sbCtl, (LPRECT) &rect);
			SetMapMode(hBarDC, MM_ANISOTROPIC);
			SetWindowOrg(hBarDC, 0, 0);
			SetWindowExt(hBarDC, mf, 20);
			SetViewportOrg(hBarDC, 0, 0);
			SetViewportExt(hBarDC, rect.right - rect.left,
					rect.bottom - rect.top);	
			hOldBrush = SelectObject(hBarDC, hBrush);
			Rectangle(hBarDC, 0, 0, cf, 20);
			SelectObject(hBarDC, hOldBrush);			
			ReleaseDC(sbCtl, hBarDC);
			break;
			
		default:
			return(FALSE);
			break;
			}
	return(TRUE);
}

                                                                
