home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 February
/
Chip_2002-02_cd1.bin
/
sharewar
/
apaths
/
APSOURCE.ZIP
/
EditPath.c
< prev
next >
Wrap
C/C++ Source or Header
|
2001-03-26
|
5KB
|
178 lines
/* EditPath - March 26th, 2001
**
** Copyright (c) 1997-2001 by Gregory Braun. All rights reserved.
**
** This function opens and displays a dialog box allowing the user
** to edit a specific AppPath registry entry.
**
** Called: w = window handle of the parent.
** path = a pointer to the PATH data structure.
**
** Returns: TRUE upon success, or FALSE if an error exists,
** or the user pressed the [Cancel] key.
*/
#include "AppPaths.h"
#define PATH_MSG "Select an optional path for this application"
#define MISSING_NAME "Application file name missing.\r\r" \
"AppPath registry keys require a program file name.\r" \
"Please specify a program name for this registry entry."
#define MISSING_APPLICATION "Application Location missing.\r\r" \
"AppPath registry keys require a full file name.\r" \
"Please specify a program and path for this registry entry."
static PATH tmp; // just in case the user cancels.
static BOOL CALLBACK dialog (HWND dlg,UINT msg,WPARAM wp,LPARAM lp);
static BOOL initiate (HWND dlg,LPPATH tmp);
static BOOL verify (HWND dlg,LPPATH tmp);
static BOOL location (HWND dlg,LPPATH tmp);
static BOOL folder (HWND dlg,LPPATH tmp);
extern BOOL far EditPath (HWND w,LPPATH path)
{
tmp = *path;
if (!DialogBoxParam (applet,(LPCSTR) PATH_DLG,w,(DLGPROC) dialog,(LPARAM) &tmp))
return (FALSE);
*path = tmp;
return (TRUE);
}
static BOOL CALLBACK dialog (HWND dlg,UINT msg,WPARAM wp,LPARAM lp)
{
auto int item = LOWORD (wp);
switch (msg) {
case WM_INITDIALOG :
return (initiate (dlg,(LPPATH) lp));
break;
case WM_HELP :
HelpTip (dlg,((LPHELPINFO) lp)->iCtrlId);
break;
case WM_COMMAND :
switch (item) {
case PATH_APPLICATION_BTN :
location (dlg,&tmp);
break;
case PATH_PATH_BTN :
folder (dlg,&tmp);
break;
case PATH_HELP_BTN :
HelpTopic (dlg,PATH_DLG);
break;
case IDOK :
if (verify (dlg,&tmp))
EndDialog (dlg,TRUE);
return (TRUE);
break;
case IDCANCEL :
EndDialog (dlg,FALSE);
return (TRUE);
break;
}
break;
}
return (FALSE);
}
static BOOL initiate (HWND dlg,LPPATH tmp)
{
auto HWND ctl = GetDlgItem (dlg,PATH_ICON_PIC);
auto HICON ico = ExtractIcon (applet,tmp->application,NIL);
if ((DWORD) ico < 33)
ico = LoadIcon (applet,(LPCSTR) APPLICATION_ICON);
SetDlgIcon (dlg,APPLICATION_ICON);
Static_SetIcon (ctl,ico);
SetDlgItemSize (dlg,PATH_NAME_TXT,PSTRING);
SetDlgItemText (dlg,PATH_NAME_TXT,tmp->name);
SetDlgItemSize (dlg,PATH_APPLICATION_TXT,PSTRING);
SetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application);
SetDlgItemSize (dlg,PATH_PATH_TXT,KSTRING);
SetDlgItemText (dlg,PATH_PATH_TXT,tmp->path);
return (TRUE);
}
static BOOL verify (HWND dlg,LPPATH tmp)
{
GetDlgItemText (dlg,PATH_NAME_TXT,tmp->name,PSTRING);
GetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application,PSTRING);
GetDlgItemText (dlg,PATH_PATH_TXT,tmp->path,PSTRING);
if (!*tmp->name) {
Message (dlg,NULL,MISSING_NAME);
return (SetDFocus (dlg,PATH_NAME_TXT));
}
if (!*tmp->application) {
Message (dlg,NULL,MISSING_APPLICATION);
return (SetDFocus (dlg,PATH_APPLICATION_TXT));
}
return (TRUE);
}
static BOOL location (HWND dlg,LPPATH tmp)
{
auto HWND ctl = GetDlgItem (dlg,PATH_ICON_PIC);
auto HICON ico = ExtractIcon (applet,tmp->application,NIL);
GetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application,PSTRING);
if (!PickApp (dlg,tmp->application))
return (FALSE);
SetDlgItemText (dlg,PATH_APPLICATION_TXT,tmp->application);
ico = ExtractIcon (applet,tmp->application,NIL);
if ((DWORD) ico < 33)
ico = LoadIcon (applet,(LPCSTR) APPLICATION_ICON);
Static_SetIcon (ctl,ico);
return (TRUE);
}
static BOOL folder (HWND dlg,LPPATH tmp)
{
GetDlgItemText (dlg,PATH_PATH_TXT,tmp->path,PSTRING);
if (!PickPath (dlg,PATH_MSG,tmp->path))
return (FALSE);
SetDlgItemText (dlg,PATH_PATH_TXT,tmp->path);
return (TRUE);
}
/* end of EditPath.c - written by Gregory Braun */