Esempio n. 1
0
LOCAL BOOL About_OnInitDialog( HWND hDlg, HWND hWndFocus, LPARAM lParam )
/************************************************************************/
{
STRING szString;

CenterPopup( hDlg );

if (GetDlgItem(hDlg, IDC_SERIALNO))
	{
	GetDefaultString( _T("SN"), _T(""), szString, sizeof(szString) );
	SetDlgItemText( hDlg, IDC_SERIALNO, szString );
	}

GetDefaultString( _T("User"), _T(""), szString, sizeof(szString) );
SetDlgItemText( hDlg, IDC_CUSTOMER, szString );

GetDefaultString( _T("Company"), _T(""), szString, sizeof(szString) );
SetDlgItemText( hDlg, IDC_COMPANY, szString );

GetDefaultString( _T("VersionName"), _T(""), szString, sizeof(szString) );
SetDlgItemText( hDlg, IDC_VERSION_NAME, szString );
lpString = ( LPTSTR )LineBuffer[0];
if ( !TextBlock_GetData( IDC_CASTTEXT, lpString, 16384 ) )
	GetWindowText( hDlg, lpString, 16384 );
blink_readme( GetDlgItem( hDlg, READ_ME ), TRUE );
bScroll = NO;
SetTimer( hDlg, bTrack = TRUE, 2, NULL );
return(TRUE);
}
Esempio n. 2
0
LOCAL BOOL Pos_OnInitDialog(HWND hDlg, HWND hWndFocus, LPARAM lParam)
/************************************************************************/
{
RECT     rSel;
LPIMAGE  lpImage;
LPFRAME	lpFrame;
LFIXED   XPos, YPos;
int 		res;

if(!(lpImage = GetActiveImage()))
	return(FALSE);

lpFrame = ImgGetBaseEditFrame( lpImage );
res = FrameResolution( lpFrame );
ImgGetSelObjectRect(lpImage, &rSel, YES);
XPos = FGET(rSel.left, res); 
YPos = FGET(rSel.top, res); 

CheckComboItem( hDlg, IDC_PREF_UNITS, IDC_PREF_UNITINCHES,
	IDC_PREF_UNITPIXELS,	IDC_PREF_UNITINCHES );

lpPosParms = (LPPOSOBJECTS_PARMS)lParam;

Edit.SaveUnits = Control.Units;

SetUnitResolution( 0 );

InitSpin( hDlg, XPos, YPos,3);

CenterPopup( hDlg );
return(TRUE);
}
Esempio n. 3
0
BOOL CChromaDlg::OnInitDialog()
{
	HWND		hDlg = GetSafeHwnd();
   	int i;
   	FRMTYPEINFO TypeInfo;
   	BOOL        EnableFade;

    PreDoModal(NULL);

	bPreview = bProbePending = NO;
   	ImgGetTypeInfo(GetImage(), &TypeInfo);
   	EnableFade = TypeInfo.DataType != FDT_LINEART && TypeInfo.DataType != FDT_PALETTECOLOR;
    CenterPopup(hDlg);
	lpChromaMask = new CChromaMask(this);
    ControlEnable(hDlg, IDC_DELETEMASK, ImgGetMask(GetImage()) != NULL);
   	iCombo[0] = IDC_CHROMA_NORMAL;
	iCombo[1] = IDC_CHROMA_HSL;
	iCombo[2] = IDC_CHROMA_LUMIN;
   	nCombo    = 3;
	TableCheckComboItem(hDlg, IDC_CHROMASELECT, &iCombo[0], nCombo, lpChromaMask->ChromaColorMode, NO);
   	for (i=0; i < NUM_CHROMAMASKS; i++)
	{
    	InitDlgItemSpin(hDlg, IDC_MASKRANGE1+i, 10, NO, 0, 100);
	   	CheckDlgButton(IDC_MASKACTIVE1+i, FALSE);
	   	SetWindowLong(GetDlgItem(IDC_MASKCOLOR1+i)->GetSafeHwnd(),GWL_ACTIVE, 0);
	}
   	InitDlgItemSpin(hDlg, IDC_CHROMA_FADE, 10, NO, 0, 100);
   	CheckRadioButton(IDC_MASKMODE_REVERSE, IDC_MASKMODE_SUBTRACT, IDC_MASKMODE_ADD);
   	lpChromaMask->SetupChroma();
   	ControlEnable(hDlg, IDC_CHROMA, NO);
   	ControlEnable(hDlg, IDC_RESET, NO);
	ControlEnable( hDlg, IDC_CHROMA_FADE,EnableFade);
return(TRUE);
}
Esempio n. 4
0
BOOL CSizeImageDlg::OnInitDialog()
{
    PreDoModal(NULL);

    CenterPopup( GetSafeHwnd() );
    DoSizeInits( );
    return(TRUE);
}
Esempio n. 5
0
LOCAL BOOL Convert_OnInitDialog(HWND hDlg, HWND hWndFocus, LPARAM lParam)
/************************************************************************/
{
ITEMID id;

CenterPopup( hDlg );
CheckComboItem( hDlg, IDC_MINITYPES, IDC_MINI256, IDC_MINICUSTOM,
	Convert.MiniType );
if (Convert.MiniType == IDC_MINI256)
	Convert.ConvertColors = 256;
else
if (Convert.MiniType == IDC_MINI16)
	Convert.ConvertColors = 16;
else
if (Convert.MiniType == IDC_MINI8)
	Convert.ConvertColors = 8;

InitDlgItemSpin( hDlg, IDC_PALETTECOLORS, Convert.ConvertColors, FALSE,
                 1, 256 );

if ( Convert.ConvertDitherType == DT_PATTERN )
	id = IDC_DITHERPATTERN;
else
if ( Convert.ConvertDitherType == DT_SCATTER )
	id = IDC_DITHERSCATTERED;
else
	id = IDC_DITHERNONE;
CheckComboItem( hDlg, IDC_DITHERTYPES, IDC_DITHERNONE,
	IDC_DITHERSCATTERED, id );
if ( Convert.ConvertType == CT_OPTIMIZED)
	id = IDC_PALETTEOPTIMIZED;
else
if ( Convert.ConvertType == CT_STANDARD)
	id = IDC_PALETTESTANDARD;
else
	id = IDC_PALETTECUSTOM;
CheckComboItem( hDlg, IDC_PALETTETYPES, IDC_PALETTEOPTIMIZED,
	IDC_PALETTECUSTOM, id );
InitExtName( hDlg, IDC_EXTNAMES, IDC_FILENAME, Convert.ConvertPalette, IDN_PALETTE );

Convert_Enable(hDlg);

return(TRUE);
}
Esempio n. 6
0
LOCAL BOOL Align_OnInitDialog(HWND hDlg, HWND hWndFocus, LPARAM lParam)
/************************************************************************/
{
int                  i, nCount;
LPRECT					pRect;
LPOBJECT					lpObject;
LPIMAGE					lpImage;
HWND  					hWnd, hWndChild;
RECT					   gRect;
LPALIGNOBJECTS_PARMS	lpAlignParms;
int                  arObjects[] = { IDC_ALIGN_SQUARE, IDC_ALIGN_TRIANGLE,
                                    IDC_ALIGN_CIRCLE };

lpAlignParms = ( LPALIGNOBJECTS_PARMS )lParam;
lpAlignParms->HorzAlign = HA_NONE;
lpAlignParms->VertAlign = VA_NONE;
lpAlignParms->RectAlign = RA_OBJECT;
lpAlignParms->bPreview  = FALSE;

if( !( lpImage = GetActiveImage() ) )
	return( FALSE );

if( !( ImgGetMask( lpImage ) ) )
	ControlEnable( hDlg, IDC_ALIGN_MASK, NO );
if( !( ImgMultipleObjects( lpImage ) ) )
	ControlEnable( hDlg, IDC_ALIGN_OBJECT, NO );
	
CheckComboItem( hDlg, IDC_ALIGN_COMBO, IDC_ALIGN_IMAGE,	IDC_ALIGN_MASK,
	IDC_ALIGN_IMAGE );

SendDlgItemMessage( hDlg, IDC_ALIGN_COMBO, CB_SETITEMDATA, PARMS_INDEX,
	lParam );

nCount = 0;

if( !( lpObject = ImgGetBase( lpImage ) )	)
	return( FALSE );
while ( lpObject = ImgGetSelObject(lpImage, lpObject) )
	++nCount;
if( !( pRect = lpAlignParms->lpRect = ( LPRECT )Alloc( sizeof( RECT ) * nCount ) ) )
	return( FALSE );
while ( lpObject = ImgGetSelObject(lpImage, lpObject) )
	*(pRect)++ = lpObject->rObject;

hWnd = GetDlgItem( hDlg, IDC_ALIGN_GRID );
GetClientRect( hWnd, &gRect );

for( i = 0; i < ALIGN_NUM_OBJECTS; i++ )
   {
   InitPos[i].x = gRect.left + ( ( gRect.right / ( ALIGN_NUM_OBJECTS + 1 ) ) * ( i + 1 ) ) - 16;
   InitPos[i].y = gRect.top + ( ( gRect.bottom / ( ALIGN_NUM_OBJECTS + 1 ) ) * ( i + 1 ) ) - 16;
   hWndChild = CreateWindowEx( 
       WS_EX_TRANSPARENT, 
       "icon",
	   "", 
       WS_CHILD | WS_VISIBLE | WS_NOSHADOWS | WS_NOTENABLED | WS_NOBGND,
	   InitPos[i].x, 
       InitPos[i].y, 
       32, 
       32,
	   hWnd, 
       ( HMENU )arObjects[i], 
       PictPubApp.GetResourceHandle(),
       NULL );
   ShowWindow( hWndChild, SW_SHOWNORMAL );
   UpdateWindow( hWndChild );
   }

CenterPopup( hDlg );
return(TRUE);
}
Esempio n. 7
0
BOOL WINPROC EXPORT DlgFloppyProc (HWND hWnd, WORD msg, WORD wParam, LONG lParam)
/************************************************************************/
{
    int		iNum;
    WORD	wSel;
    DWORD	dwResult;
    FNAME	szFileName;
    STRING	szExt;
    STRING	szPref;
    STRING	szTitle;
    STRING	szText;
    char	szNum[8];

    switch (msg)
    {
    case WM_INITDIALOG:
        SET_CLASS_HBRBACKGROUND(hWnd, ( HBRUSH )GetStockObject(LTGRAY_BRUSH));
        CenterPopup (hWnd);
        if (bSaving)
        {
            LoadString (hInstAstral, IDS_SAVEFLOPPY, szPref, sizeof(szPref));
            SetWindowText (hWnd, szPref);
            ShowWindow (GetDlgItem(hWnd, IDC_CHOOSEFILE), SW_HIDE);
        }
        else
        {
            LoadString (hInstAstral, IDS_LOADFLOPPY, szPref, sizeof(szPref));
            SetWindowText (hWnd, szPref);
            EnableWindow (GetDlgItem (hWnd, IDOK), FALSE);
        }
        LoadString (hInstAstral, IDS_SELFLOPPY, szPref, sizeof(szPref));
        SetDlgItemText (hWnd, IDC_FLOPPY_TEXT, szPref);

        clr ((LPTR)szFloppies, sizeof(szFloppies));
        if ( (GetFloppyDrives (szFloppies)) <= 1)
        {
            // if only one floppy, hide second button
            ShowWindow (GetDlgItem(hWnd, IDC_FLOPPY2), SW_HIDE);
        }
        else
        {
            SetDlgItemText (hWnd, IDC_FLOPPY2, &szFloppies[3]);
        }
        SetDlgItemText (hWnd, IDC_FLOPPY1, szFloppies);
        iStartDrive = CURRENTDRIVE;
        break;

    case WM_CTLCOLOR:
        return( (BOOL)SetControlColors( (HDC)wParam, hWnd, (HWND)LOWORD(lParam),
                                        HIWORD(lParam) ) );

    case WM_COMMAND:
        switch (wParam)
        {
        case IDC_FLOPPY1:
        case IDC_FLOPPY2:
            iFloppyIndex = wParam - IDC_FLOPPY1;
            if (iFloppyIndex)
                iFloppyIndex += 2;

            // format the search spec.
            lstrcpy (szFileSpec, &szFloppies[iFloppyIndex]);
            lstrcat (szFileSpec, "\\");
            LoadString (hInstAstral, IDS_GALLERY_PREFIX, szPref, sizeof(szPref));
            lstrcat (szFileSpec, szPref);
            LoadString (hInstAstral, IDN_ART, szExt, sizeof(szExt));
            lstrcat (szFileSpec, szExt);

            if (bSaving)
            {
                if (! FloppySpace (iFloppyIndex))
                {
                    LoadString (hInstAstral, IDS_SAVEFLOPPY, szTitle,
                                sizeof(szTitle));
                    LoadString (hInstAstral, IDS_ENOTSPACE, szText,
                                sizeof(szText));
                    MessageBox (hWnd, szText, szTitle,
                                MB_OK | MB_ICONEXCLAMATION);
                    break;
                }
                if (! DlgDirList (hWnd, szFileSpec, IDC_CHOOSEFILE, 0,
                                  DDL_READWRITE))
                {
                    // no files found
                    iNum = 1;
                }
                else
                {
                    // find last picture number used in listbox
                    iNum = FindLastNumber (hWnd);
                    iNum++;
                }
                // format a pathname/filename and save the picture
                wsprintf (szNum, "%d", iNum);
                lstrcpy (szFileSpec, &szFloppies[iFloppyIndex]);
                lstrcat (szFileSpec, "\\");
                lstrcat (szFileSpec, szPref);
                lstrcat (szFileSpec, szNum);
                LoadString (hInstAstral, IDS_GALLERY_EXT, szExt, sizeof(szExt));
                lstrcat (szFileSpec, szExt);
                CHDRIVE (iStartDrive);
                AstralDlgEnd (hWnd, NO|2);
            }
            else
            {
                DlgDirList (hWnd, szFileSpec, IDC_CHOOSEFILE, 0,
                            DDL_READWRITE);
                dwResult = SendDlgItemMessage (hWnd, IDC_CHOOSEFILE,
                                               LB_GETCOUNT, 0, 0L);
                if (dwResult == (DWORD)0)
                {
                    LoadString (hInstAstral, IDS_LOADFLOPPY, szTitle,
                                sizeof(szTitle));
                    LoadString (hInstAstral, IDS_NOPICTURES, szText,
                                sizeof(szText));
                    MessageBox (hWnd, szText, szTitle,
                                MB_OK | MB_ICONEXCLAMATION);
                    break;
                }
                else if (dwResult == (DWORD)1)
                {
                    clr ((LPTR)szFileName, sizeof(FNAME));
                    SendDlgItemMessage (hWnd, IDC_CHOOSEFILE, LB_GETTEXT,
                                        (WPARAM)0, (LPARAM)((LPSTR)szFileName));
                    if (szFileName[0] != 0)
                    {
                        lstrcpy (szFileSpec, &szFloppies[iFloppyIndex]);
                        lstrcat (szFileSpec, "\\");
                        lstrcat (szFileSpec, szFileName);
                    }
                    else
                        clr ((LPTR)szFileSpec, sizeof(STRING));

                    CHDRIVE (iStartDrive);
                    AstralDlgEnd (hWnd, NO|2);
                }
            }
            break;

        case IDOK:
            if ((dwResult = SendDlgItemMessage (hWnd, IDC_CHOOSEFILE,
                                                LB_GETCURSEL, 0, 0L)) != LB_ERR)
            {
                wSel = (WPARAM)dwResult;
                clr ((LPTR)szFileName, sizeof(FNAME));
                SendDlgItemMessage (hWnd, IDC_CHOOSEFILE, LB_GETTEXT,
                                    (WPARAM)wSel, (LPARAM)((LPSTR)szFileName));
                if (szFileName[0] != 0)
                {
                    lstrcpy (szFileSpec, &szFloppies[iFloppyIndex]);
                    lstrcat (szFileSpec, "\\");
                    lstrcat (szFileSpec, szFileName);
                    CHDRIVE (iStartDrive);
                    AstralDlgEnd (hWnd, NO|2);
                }
                else
                    clr ((LPTR)szFileSpec, sizeof(STRING));
            }
            break;

        case IDCANCEL:
            clr ((LPTR)szFileSpec, sizeof(STRING));
            CHDRIVE (iStartDrive);
            AstralDlgEnd (hWnd, NO|2);
            break;

        case IDC_CHOOSEFILE:
            if ( HIWORD(lParam) == LBN_DBLCLK )
                SendMessage (hWnd, WM_COMMAND, IDOK, 1L);
            else if ((SendDlgItemMessage (hWnd, IDC_CHOOSEFILE,
                                          LB_GETCURSEL, 0, 0L)) != LB_ERR)
            {
                EnableWindow (GetDlgItem (hWnd, IDOK), TRUE);
            }
            break;

        default:
            return (FALSE);
        }
        break;

    default:
        return (FALSE);
        break;
    }
    return (TRUE);
}
Esempio n. 8
0
BOOL WINPROC EXPORT DlgRegisterProc(HWND hWnd,UINT wMsg,WPARAM wParam,LPARAM lParam)
/****************************************************************************/
{
    BOOL bHandled = TRUE;
    FNAME szCode;
    FNAME szKey;
    FNAME szTemp;
    BYTE bChecksum = 0;
    bool bGoodCode;
	int  len;
	LICENSEINFO AppLicenseInfo;

    switch (wMsg)
    {
        case WM_COMMAND:
#ifdef WIN32
            switch (LOWORD(wParam))
#else
            switch (wParam)
#endif
            {
        	    case IDOK:
                    szCode[0] = 0;
                    GetDlgItemText(hWnd, IDC_REG_KEY,  szKey,  sizeof(szKey));
                    GetDlgItemText(hWnd, IDC_REG_CODE, szCode, sizeof(szCode));
                    MGXGenerateLicenseKey(szCode, 0, 0, 0, szTemp);
                    bGoodCode = (lstrcmpi(szTemp, szKey) == 0);
                    if (!bGoodCode)
                    {
                        
                        LoadString (hInstAstral,IDS_REG_CODE_MSG,szKey,sizeof(szKey));
                        LoadString (hInstAstral,IDS_REG_CODE_TITLE,szCode,sizeof(szCode));
                        MessageBox(hWnd, szKey, szCode, MB_OK | MB_ICONEXCLAMATION);
                    }
                    else
                    {
                        WriteProfileString(lpCodeSection[iType], lpCodeEntry[iType], szCode);
                        WriteProfileString(lpKeySection[iType],  lpKeyEntry[iType],  szKey);
        		        AstralDlgEnd(hWnd, YES);
                    }
        		break;

        	    case IDCANCEL:
        		    AstralDlgEnd(hWnd, NO);
        		break;
                
                default:
                    bHandled = FALSE;
            } // switch (wParam)
            break;

		case WM_CTLCOLOR:
			return ( (BOOL)SetControlColors ( (HDC)wParam, hWnd,
				(HWND)LOWORD(lParam), HIWORD(lParam) ));

        case WM_INITDIALOG:
			SET_CLASS_HBRBACKGROUND(hWnd, ( HBRUSH )GetStockObject(LTGRAY_BRUSH));
			CenterPopup (hWnd);
     		len = GetProfileString(lpCodeSection[iType], lpCodeEntry[iType], "",  szCode, sizeof(szCode));
			if (!len)
			{
	        	CreateNewLicense(&AppLicenseInfo);
            	LicenseToString(&AppLicenseInfo, szCode);
				WriteProfileString(lpCodeSection[iType], lpCodeEntry[iType], szCode);
			}
            SetDlgItemText(hWnd, IDC_REG_CODE, szCode);
            break;

        case WM_DESTROY:
            break;
            
        default:
            bHandled = FALSE;
    } // switch (wMsg)

    return bHandled;
}
Esempio n. 9
0
BOOL WINPROC EXPORT DlgOpenProc(
/************************************************************************/
HWND 	hDlg,
UINT 	msg,
WPARAM 	wParam,
LPARAM 	lParam)
{
BOOL Bool;
ITEMID id;
WORD wMsg, wIndex;
int i, ii, l, fp, hi, lo;
FNAME szDriveNDir, szFileName, szExtension;
HMENU hMenu;
STRING szString;
char cChar;
BOOL bModifySaveName;
static BOOL bDisableCancel;

switch (msg)
    {
    case WM_INITDIALOG:
	SET_CLASS_HBRBACKGROUND(hDlg, ( HBRUSH )GetStockObject(LTGRAY_BRUSH));
	CenterPopup( hDlg );
	if ( !DlgDirList(hDlg, szFileSpec, IDC_FLIST, IDC_FPATH, wFileAttr) )
		{
		lstrcpy( szFileSpec, lstrchr( szFileSpec, '*' ) );
		DlgDirList(hDlg, szFileSpec, IDC_FLIST, IDC_FPATH, wFileAttr);
		}
	SetFileName(hDlg, IDC_FNAME, szFileSpec, szSaveName, fSaving);
	CheckComboItem( hDlg, IDC_FILETYPES, IDC_ART, IDC_BMP,
		IDC_ART + (idFileType-IDN_ART) );
	SendDlgItemMessage(hDlg, IDC_FNAME, EM_LIMITTEXT, MAX_FNAME_LEN-1, 0L);

	LoadComboWithDrives( hDlg, IDC_DRIVES );
	LoadComboWithDirectories( hDlg, IDC_DIRS, NO );
	CheckDlgButton( hDlg, IDC_SAVEPATH, Save.OKtoSavePath );
	CheckDlgButton( hDlg, IDC_SAVECOMPRESS, Save.Compressed );
	for (i = IDC_ART; bImageOpen && i <= IDC_BMP; ++i)
		{
		ii = i-IDC_ART;
		if (lstrlen(Readers[ii].szDLL))
			{
			lstrcpy(szString, Control.ProgHome);
			lstrcat(szString, Readers[ii].szDLL);
			if (!FileExists(szString))
				{
				if ( GetPrivateProfileString( "Micrografx", "Libraries", "",
					szString, sizeof(STRING), "MGX.INI" ) > 2 )
						FixPath( szString );
				lstrcat(szString, Readers[ii].szDLL);
				if (!FileExists(szString))
					{
					ControlEnable( hDlg, i, NO);
					continue;
					}
				}
			}
		if (fSaving)
			ControlEnable( hDlg, i, lpImage &&
				Readers[ii].bSave[FrameDepth(ImgGetBaseEditFrame(lpImage))] );
		else
			ControlEnable( hDlg, i, Readers[ii].bOpen );
		}
	if ( bImageOpen && lpImage )
		{
		idDataType = lpImage->DataType;
		for (i = IDC_SAVECT; i <= IDC_SAVE24BITCOLOR; ++i)
			ControlEnable( hDlg, i,
			Readers[idFileType-IDN_ART].bTypes[i-IDC_SAVECT]);
		CheckComboItem( hDlg, IDC_DATATYPES, IDC_SAVECT,
			IDC_SAVE24BITCOLOR, idDataType );
		ControlEnable( hDlg, IDC_SAVECOMPRESS,
			Readers[idFileType-IDN_ART].bCompressed );
		}

	SetFocus( GetDlgItem( hDlg, IDC_FNAME ) );
	SendDlgItemMessage(hDlg, IDC_FNAME, EM_SETSEL,
		NULL, MAKELONG(0, 0x7fff));
	bNavigated = NO;
	bDisableCancel = NO;
	return( FALSE );

    case WM_PALETTECHANGED:
	break;

    case WM_MENUSELECT:
	lo = LOWORD(lParam);
	hi = HIWORD(lParam);
	if (hi == 0)
		break;
	if (lo == -1)
		break;
	if (lo & MF_SYSMENU)
		break;
	if (lo & MF_POPUP)
		{
		hMenu = (HMENU)wParam;
		while (GetSubMenu(hMenu, 0))
			hMenu = GetSubMenu(hMenu, 0);
		id = GetMenuItemID(hMenu, 0);
		if (id <= 0)
			break;
		wParam = id - 1;
		}
	HintLine( wParam );
	break;

    case WM_SETCURSOR:
	return( SetupCursor( wParam, lParam, idOpen ) );

    case WM_CLOSE:
	AstralDlgEnd( hDlg, FALSE|2 );
	break;

    case WM_MEASUREITEM:
    case WM_DRAWITEM:
	id = ((LPDRAWITEMSTRUCT)lParam)->CtlID;
	Bool = ( id == IDC_DRIVES || id == IDC_DIRS );
	return( OwnerDraw( hDlg, msg, lParam, Bool ) );
//	break;

    case WM_CTLCOLOR:
	return( (BOOL)SetControlColors( (HDC)wParam, hDlg, (HWND)LOWORD(lParam),
		HIWORD(lParam) ) );

    case WM_COMMAND:
	if (wParam != IDCANCEL)
		bDisableCancel = NO;
	switch(wParam)
	    {
	    case IDC_FILETYPES:
//	    case IDC_ART:
//	    case IDC_TIFF:
//	    case IDC_BMP:
		if ( !(wParam = HandleCombo( hDlg, wParam, lParam )) )
			break;
		idFileType = IDN_ART + (wParam-IDC_ART);
		if (bNavigated)
			{
			LookupExtension( idFileType, szFileSpec );
			}
		else	GetFileLocation( idFileType, szFileSpec );
		for (i = IDC_SAVECT; i <= IDC_SAVE24BITCOLOR; ++i)
			ControlEnable( hDlg, i,
			Readers[idFileType-IDN_ART].bTypes[i-IDC_SAVECT]);
		ControlEnable( hDlg, IDC_SAVECOMPRESS,
			Readers[idFileType-IDN_ART].bCompressed );
		SetFileName(hDlg, IDC_FNAME, szFileSpec, szSaveName, NO );
		SendMessage( hDlg, WM_COMMAND, IDOK, 0L );
		break;

	    case IDC_DATATYPES:
//	    case IDC_SAVECT:
//	    case IDC_SAVELA:
//	    case IDC_SAVESP: // scatterprint
//	    case IDC_SAVE8BITCOLOR:
//	    case IDC_SAVE24BITCOLOR:
		if ( !(wParam = HandleCombo( hDlg, wParam, lParam )) )
			break;
		idDataType = wParam;
		break;

	    case IDC_SAVEPATH:
		Save.OKtoSavePath = (BOOL)SendDlgItemMessage (hDlg, IDC_SAVEPATH,
		  BM_GETCHECK, 0, 0L);
//		Save.OKtoSavePath = !Save.OKtoSavePath;
//		CheckDlgButton( hDlg, IDC_SAVEPATH, Save.OKtoSavePath );
		break;

	    case IDC_SAVECOMPRESS:
		Save.Compressed = (BOOL)SendDlgItemMessage (hDlg, IDC_SAVECOMPRESS,
		  BM_GETCHECK, 0, 0L);
//		Save.Compressed = !Save.Compressed;
//		CheckDlgButton( hDlg, IDC_SAVECOMPRESS, Save.Compressed );
		break;

	    case IDC_DRIVES:
		wMsg = HIWORD(lParam);
		if ( wMsg != CBN_SELCHANGE )
			break;
		wIndex = SendDlgItemMessage( hDlg, wParam, CB_GETCURSEL, 0, 0L);
		SendDlgItemMessage( hDlg, wParam, CB_GETLBTEXT, wIndex,
			(long)(LPSTR)szDriveNDir );
		id = ExtractStringID( szDriveNDir );
		if (CHDRIVE( *szDriveNDir - 'a' ))
			{
			LoadComboWithDrives(hDlg, IDC_DRIVES);
			break;
			}
		if (!CURRENTDIR(szString, sizeof(szString)))
			{
			GetDlgItemText(hDlg, IDC_FPATH, szString,
				 sizeof(szString));
			CHDRIVE(*szString - 'a');
			LoadComboWithDrives(hDlg, IDC_DRIVES);
			}
//12/15		SetFileName(hDlg, IDC_FNAME, szFileSpec, szSaveName, NO);
		DlgDirList( hDlg, szFileSpec, IDC_FLIST, IDC_FPATH, wFileAttr );
		LoadComboWithDirectories( hDlg, IDC_DIRS, YES );
		SetDlgItemText( hDlg, IDC_DISKSPACE,
			DriveSize( *szDriveNDir - 'a', szString ) );
		SetFileName(hDlg, IDC_FNAME, szFileSpec, szSaveName, fSaving );
		bNavigated = YES;
		break;

	    case IDC_DIRS:
		wMsg = HIWORD(lParam);
		if ( wMsg == LBN_DBLCLK )
			{
			SendMessage(hDlg, WM_COMMAND, IDOK, 1L);
			break;
			}
		if ( wMsg != LBN_SELCHANGE )
			break;
		wIndex = SendDlgItemMessage( hDlg, wParam, LB_GETCURSEL, 0, 0L);
		// Figure out how to build the path name based on the selection
		SendDlgItemMessage( hDlg, wParam, LB_GETTEXT, wIndex,
			(long)(LPSTR)szDriveNDir );
		id = ExtractStringID( szDriveNDir );
		if ( id == IDC_PATHICON_OPEN )
			i = 0; // Must start building the path from the root
		else
		if ( id == IDC_PATHICON_ACTIVE )
			i = 9999; // Don't build any path - we're there
		else	i = wIndex; // OK to build a relative path
		szFileName[0] = '\0';
		for ( ; i<=wIndex; i++ )
			{
			SendDlgItemMessage( hDlg, wParam, LB_GETTEXT, i,
				(long)(LPSTR)szDriveNDir );
			id = ExtractStringID( szDriveNDir );
			if ( id == IDC_PATHICON_CLOSED && i != wIndex )
				continue;
			lstrcat( szFileName, SkipSpaces(szDriveNDir) );
			if ( id != IDC_PATHICON_ROOT )
				lstrcat( szFileName, "\\" );
			}
		lstrcat( szFileName, szFileSpec );
		SetFileName(hDlg, IDC_FNAME, szFileName, szSaveName, NO );
		bNavigated = YES;
		break;

	    case IDC_FLIST:
		wMsg = HIWORD(lParam);
		if ( wMsg == LBN_DBLCLK )
			{
			SendMessage(hDlg, WM_COMMAND, IDOK, 1L);
			break;
			}
		if ( wMsg != LBN_SELCHANGE )
			break;
		/* If a directory is selected... */
		if (DlgDirSelectEx(hDlg, szFileName, sizeof(szFileName), wParam))
			lstrcat(szFileName, szFileSpec);
		// 1-2-92 - TMR - always use SetFileName for all FNAME sets
// 		SetDlgItemText(hDlg, IDC_FNAME, szFileName);
		SetFileName(hDlg, IDC_FNAME, szFileName, szSaveName, NO );
		SendDlgItemMessage(hDlg, IDC_FNAME, EM_SETSEL,
			NULL, MAKELONG(0, 0x7fff));
//		SendDlgItemMessage(hDlg, IDC_FNAME, CB_SETEDITSEL,
//			NULL, MAKELONG(0, 0x7fff));
		break;

	    case IDC_FNAME:
		/* If the name is changed, disable OK if its length goes 0 */
		if (HIWORD(lParam) != EN_CHANGE)
//		if (HIWORD(lParam) != CBN_EDITCHANGE)
			break;
		ControlEnable( hDlg, IDOK,
			(BOOL)SendDlgItemMessage( hDlg, wParam,
			WM_GETTEXTLENGTH, 0, 0L));
		
		// 1-2-92 - TMR - make sure Edit Box has focus to make sure
		// that szSaveName only gets overwritten from user input
		// 1-3-92 - TMR - move this after ControlEnable
		if (GetFocus() != GetDlgItem(hDlg, IDC_FNAME))
			break;
		if (fSaving)
			{
			GetDlgItemText(hDlg, IDC_FNAME, szSaveName,
				MAX_FNAME_LEN);
			fUntitled = NO;
			}
		break;

	    case IDC_FPATH:
		wMsg = HIWORD(lParam);
		if ( wMsg == BN_DOUBLECLICKED )
			{
			SendMessage(hDlg, WM_COMMAND, IDOK, 1L);
			break;
			}
		if ( wMsg != BN_CLICKED )
			break;
 		GetDlgItemText(hDlg, wParam, szFileName, sizeof(szFileName));
		if ( !szFileName[0] )
			break;
		FixPath( szFileName );
		lstrcat( szFileName, szFileSpec );
		SetFileName(hDlg, IDC_FNAME, szFileName, szSaveName, NO );
		bNavigated = YES;
		break;

	    case IDOK:
		GetDlgItemText(hDlg, IDC_FNAME, szFileName,sizeof(szFileName));
		bModifySaveName = fSaving && StringsEqual(szFileName,
			szSaveName);
		/* Strip off the drive and directory to make */
		/* a DlgDirlist() call to switch over to them */
		/* Loop backwards over the file name */
		l = lstrlen(szFileName);
		while( --l >= 0 )
		   {
		   cChar = szFileName[l];
		   /* If we find a wildcard, the next DlgDirList() takes */
		   /* care of drive and directory switching; so get out */
		   if ( cChar == '?' || cChar == '*' )
			break;
		   /* If we find a drive or directory, handle it and get out */
		   if ( cChar == '\\' || cChar == ':' )
			{
			lstrcpy(szDriveNDir, szFileName);
			l++;
			szDriveNDir[l] = '\0';
			lstrcat(szDriveNDir, szFileSpec);
			// 1-3-92 - TMR - Handle directory change error
			if (DlgDirList(hDlg, szDriveNDir,
					 IDC_FLIST, IDC_FPATH, wFileAttr))
				lstrcpy( szFileName, &szFileName[l] );
			else
				{
				szDriveNDir[l] = '\0';
				Message(IDS_EDIRECTORYCHANGE,
					 Lowercase(szDriveNDir));
				szFileName[0] = '\0';
				}
			break;
			}
		   }

		// 1-3-92 - TMR add extension if none present
		/* Check to see if the file has an extension... */
		if ( !lstrchr( szFileName, '.' ) ) // if no extension...
		    if ( LookupExtension( idFileType, szExtension ) )
			{
			if (lstrlen(szFileName))
			    lstrcat( szFileName, extension(szExtension) );
			else
			    lstrcat( szFileName, szExtension);
			}
		if (bModifySaveName)
			lstrcpy(szSaveName, szFileName);

		/* Try to display a new list box */
		if ( !szFileName[0] )
			lstrcat(szFileName, szFileSpec);
		if (DlgDirList(hDlg, szFileName, IDC_FLIST, IDC_FPATH,
		    wFileAttr))
			{ /* A wildcard was found and a new list displayed */
			lstrcpy(szFileSpec, szFileName);
			SetFileName(hDlg, IDC_FNAME, szFileSpec, szSaveName,
				fSaving );
			LoadComboWithDrives( hDlg, IDC_DRIVES );
			LoadComboWithDirectories( hDlg, IDC_DIRS, YES );
			
			break;
			}

		// If there is still a path or wildcards in the name, the
		// file specification must be invalid
		if (lstrchr(szFileName, '\\') || lstrchr(szFileName, ':') ||
		    lstrchr(szFileName, '?') || lstrchr(szFileName, '*'))
			{
			lstrcpy(szString, szFileName);
			stripfile(szString);
			Message(IDS_EDIRECTORYCHANGE, Lowercase(szString));
			lstrcpy(szFileSpec, filename(szFileName));
			lstrcpy(szFileName, szFileSpec); // is this needed?
			SetFileName(hDlg, IDC_FNAME, szFileSpec, szSaveName,
				fSaving );
			break;
			}

		/* No wildcards, and the drive and dir have been changed */
		LoadComboWithDrives( hDlg, IDC_DRIVES );
		LoadComboWithDirectories( hDlg, IDC_DIRS, YES );

		/* Check to see if the file has 8 characters or less... */
		if ( fSaving )
			RemoveWhiteSpace( szFileName );
		FixFileName( szFileName );

		/* Check to see if the file has an extension... */
		if ( !lstrchr( szFileName, '.' ) ) // if no extension...
			if ( LookupExtension( idFileType, szExtension ) )
				lstrcat( szFileName, extension(szExtension) );

		// Build the fully qualified path name
		GetDlgItemText( hDlg, IDC_FPATH, szString, sizeof(szString) );
		FixPath( szString );
		lstrcat( szString, szFileName );

		/* Check to see if the file exists... */
		if ( (fp = _lopen( szString, OF_READ ) ) < 0 )
			{ /* The file does not exist */
			if ( !fSaving )
				{
				Message(IDS_EOPEN, Lowercase(szString));
				break;
				}
			}
		else	{
			_lclose( fp );
			if ( fSaving )
				{
				if ( !AstralAffirm( IDS_OVERWRITEIMAGE,
					Lowercase(szString) ) )
					break;
				}
			}

		lstrcpy( szFileSpec, szString );
		AstralDlgEnd(hDlg, TRUE|2);
		break;

	    case IDC_CANCEL:
	    case IDCANCEL:
		if ( bDisableCancel && !LOWORD(lParam) )
			break;
		GetDlgItemText(hDlg, IDC_FPATH, szFileSpec,sizeof(szFileSpec));
		AstralDlgEnd(hDlg, FALSE|2);
		break;

	    default:
		return( FALSE );
	    }
	break;

    default:
	return( FALSE );
    }

return( TRUE );
}