home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2002 February
/
Chip_2002-02_cd1.bin
/
sharewar
/
apaths
/
APSOURCE.ZIP
/
EditService.c
< prev
next >
Wrap
C/C++ Source or Header
|
2001-03-26
|
4KB
|
159 lines
/* EditService - 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 RunServices registry entry.
**
** Called: w = window handle of the parent.
** srv = a pointer to the SRV data structure.
**
** Returns: TRUE upon success, or FALSE if an error exists,
** or the user pressed the [Cancel] key.
*/
#include "AppPaths.h"
#define MISSING_NAME "Service title missing.\r\r" \
"Service registry values require a startup title.\r" \
"Please specify a title for this registry entry."
#define MISSING_PATH "Program command missing.\r\r" \
"Service registry values require a program command.\r" \
"Please specify a program for this registry entry."
static SRV tmp; // just in case the user cancels.
static BOOL CALLBACK dialog (HWND dlg,UINT msg,WPARAM wp,LPARAM lp);
static BOOL initiate (HWND dlg,LPSRV tmp);
static BOOL verify (HWND dlg,LPSRV tmp);
static BOOL path (HWND dlg,LPSRV tmp);
extern BOOL far EditService (HWND w,LPSRV srv)
{
tmp = *srv;
if (!DialogBoxParam (applet,(LPCSTR) SRV_DLG,w,(DLGPROC) dialog,(LPARAM) &tmp))
return (FALSE);
*srv = 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,(LPSRV) lp));
break;
case WM_HELP :
HelpTip (dlg,((LPHELPINFO) lp)->iCtrlId);
break;
case WM_COMMAND :
switch (item) {
case SRV_PATH_BTN :
path (dlg,&tmp);
break;
case SRV_HELP_BTN :
HelpTopic (dlg,SRV_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,LPSRV tmp)
{
auto HWND ctl = GetDlgItem (dlg,SRV_ICON_PIC);
auto HICON ico = ExtractIcon (applet,tmp->path,NIL);
if ((DWORD) ico < 33)
ico = LoadIcon (applet,(LPCSTR) WINDOWS_ICON);
SetDlgIcon (dlg,APPLICATION_ICON);
Static_SetIcon (ctl,ico);
SetDlgItemSize (dlg,SRV_NAME_TXT,PSTRING);
SetDlgItemText (dlg,SRV_NAME_TXT,tmp->name);
SetDlgItemSize (dlg,SRV_PATH_TXT,RUN_MAX);
SetDlgItemText (dlg,SRV_PATH_TXT,tmp->path);
return (TRUE);
}
static BOOL verify (HWND dlg,LPSRV tmp)
{
GetDlgItemText (dlg,SRV_NAME_TXT,tmp->name,PSTRING);
GetDlgItemText (dlg,SRV_PATH_TXT,tmp->path,RUN_MAX);
if (!*tmp->name) {
Message (dlg,NULL,MISSING_NAME);
return (SetDFocus (dlg,SRV_NAME_TXT));
}
if (!*tmp->path) {
Message (dlg,NULL,MISSING_PATH);
return (SetDFocus (dlg,SRV_PATH_TXT));
}
return (TRUE);
}
static BOOL path (HWND dlg,LPSRV tmp)
{
auto HWND ctl = GetDlgItem (dlg,SRV_ICON_PIC);
auto HICON ico = ExtractIcon (applet,tmp->path,NIL);
GetDlgItemText (dlg,SRV_PATH_TXT,tmp->path,PSTRING);
if (!PickApp (dlg,tmp->path))
return (FALSE);
if (lstrlen (tmp->path) >= SRV_MAX)
tmp->path[RUN_MAX] = EOS;
SetDlgItemText (dlg,SRV_PATH_TXT,tmp->path);
ico = ExtractIcon (applet,tmp->path,NIL);
if ((DWORD) ico < 33)
ico = LoadIcon (applet,(LPCSTR) WINDOWS_ICON);
Static_SetIcon (ctl,ico);
return (TRUE);
}
/* end of EditRun.c - written by Gregory Braun */