home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware 1 2 the Maxx
/
sw_1.zip
/
sw_1
/
WINDOWS
/
UTILS
/
WZUN11SR.ZIP
/
FILEDLG.C
< prev
next >
Wrap
C/C++ Source or Header
|
1992-01-16
|
6KB
|
132 lines
#include <windows.h>
#include <assert.h>
#include <string.h>
#include <io.h>
#include <stdio.h>
#include "filedlg.h"
#include "helpids.h"
#define FILES 39
#define PATH -16368
#define MAX_FILENAME_LEN 80
char
szIFileName[MAX_FILENAME_LEN+1] = ""; /* Input File Name */
extern char szAppName[]; /* application name */
extern char szFileName[]; /* current file name */
extern char szHelpFileName[]; /* help file name */
BOOL FAR PASCAL FileDlgProc (HWND hDlg, WORD message, WORD wParam, LONG lParam)
{
char
cLastChar = 0x00; // chr 0 (last char of string)
short nEditLen = 0x00; // Length of Edit Field
OFSTRUCT OfStruct; /* local open file structure */
static char szFileSpec[12]; /* Initial File Specification */
char scratch[80]; // Scratch buffer
switch (message)
{
case WM_INITDIALOG:
strcpy(szFileSpec, "*.ZIP"); /* initialize file spec */
SendDlgItemMessage (hDlg, IDD_IFNAME, EM_LIMITTEXT, MAX_FILENAME_LEN, 0L);
DlgDirList (hDlg, szFileSpec, IDD_FLIST, NULL, FILES);
DlgDirList (hDlg, szFileSpec, IDD_DLIST, IDD_FPATH, PATH);
SetDlgItemText (hDlg, IDD_IFNAME, szFileSpec);
InvalidateRect (hDlg, NULL, TRUE);
SendMessage (hDlg, WM_COMMAND, DLG_OK, 0L);
return TRUE;
case WM_COMMAND:
switch (wParam)
{
case IDD_FLIST:
switch (HIWORD (lParam))
{
case LBN_SELCHANGE:
DlgDirSelect (hDlg, szIFileName, IDD_FLIST);
SetDlgItemText (hDlg, IDD_IFNAME, szIFileName);
return TRUE;
case LBN_DBLCLK:
DlgDirSelect (hDlg, szIFileName, IDD_FLIST);
SetDlgItemText (hDlg, IDD_IFNAME, szIFileName);
SendMessage (hDlg, WM_COMMAND, DLG_OK, 0L);
return TRUE;
}
break;
case IDD_DLIST:
switch (HIWORD (lParam))
{
case LBN_SELCHANGE:
DlgDirSelect (hDlg, szIFileName, IDD_DLIST);
lstrcat (szIFileName, szFileSpec);
SetDlgItemText (hDlg, IDD_IFNAME, szIFileName);
return TRUE;
case LBN_DBLCLK:
DlgDirSelect (hDlg, szIFileName, IDD_DLIST);
lstrcat (szIFileName, szFileSpec);
DlgDirList (hDlg, szFileSpec, IDD_FLIST, NULL, FILES);
DlgDirList (hDlg, szFileSpec, IDD_DLIST, IDD_FPATH, PATH);
SetDlgItemText (hDlg, IDD_IFNAME, szIFileName);
SendMessage (hDlg, WM_COMMAND, DLG_OK, 0L);
return TRUE;
}
break;
case DLG_OK:
GetDlgItemText (hDlg, IDD_IFNAME, szIFileName,
(sizeof(szIFileName)-1));
nEditLen = lstrlen (szIFileName);
cLastChar = *AnsiPrev (szIFileName, szIFileName + nEditLen);
if (cLastChar == '\\' || cLastChar == ':')
lstrcat (szIFileName, szFileSpec);
if (strchr (szIFileName, '*') || strchr (szIFileName, '?'))
{
DlgDirList (hDlg, szIFileName, IDD_FLIST, NULL, FILES);
if (DlgDirList (hDlg, szIFileName, IDD_DLIST, IDD_FPATH, PATH))
{
lstrcpy (szFileSpec, szIFileName);
SetDlgItemText (hDlg, IDD_IFNAME, szFileSpec);
}
else
MessageBeep (0);
return TRUE;
}
lstrcat (lstrcat (szIFileName,"\\"), szFileSpec);
DlgDirList (hDlg, szIFileName, IDD_FLIST, NULL, FILES);
if (DlgDirList (hDlg, szIFileName, IDD_DLIST, IDD_FPATH, PATH))
{
lstrcpy (szFileSpec, szIFileName);
SetDlgItemText (hDlg, IDD_IFNAME, szFileSpec);
return TRUE;
}
szIFileName [nEditLen] = '\0';
if (OpenFile(szIFileName, &OfStruct, OF_EXIST) < 0)
{
wsprintf (scratch, "Cannot open %s", (LPSTR)szIFileName);
MessageBox (hDlg, scratch, szAppName, MB_ICONINFORMATION | MB_OK);
return TRUE;
}
strcpy(szFileName, OfStruct.szPathName); /* use valid OEM filename */
EndDialog (hDlg, TRUE);
return TRUE;
case IDCANCEL: /* ESC key */
case DLG_CAN:
szIFileName [0] = 0x00;
EndDialog (hDlg, FALSE);
return TRUE;
case IDD_HELP:
WinHelp(hDlg,szHelpFileName,HELP_CONTEXT, (DWORD)(HELPID_OPEN));
return TRUE;
}
}
return FALSE;
}