2025-04-27 07:49:33 -04:00

576 lines
10 KiB
C

//============================================================================
// Copyright (c) 1995, Microsoft Corporation
//
// File: status.h
//
// History:
// Abolade Gbadegesin Nov-06-1995 Created.
//
// Declarations for RAS status dialog.
//============================================================================
#ifndef _STATUS_H_
#define _STATUS_H_
#include "status.rch"
//
// Number of pages on the Dial-Up Monitor property sheet
//
#define RASMDPAGE_Count 3
//
// IDs for timers used by Status and Summary pages
//
#define RM_LSTIMERID 1
#define RM_SMTIMERID 2
//
// value used as frequency for updates of dial-in display on Summary page
//
#define RM_SMDIALINFREQUENCY 4
//
// macros used to get icon IDs from array indices and vice-versa
//
#define RM_ICONCOUNT (IID_RM_IconLast - IID_RM_IconBase + 1)
#define RM_ICONID(index) ((index) + IID_RM_IconBase)
#define RM_ICONINDEX(id) ((id) - IID_RM_IconBase)
//
// flags used on the Summary page for efficient list refreshing
//
#define RMFLAG_DELETE 0x80000000
#define RMFLAG_INSERT 0x40000000
#define RMFLAG_MODIFY 0x20000000
//
// error dialog macro used by all Connection Status property pages
//
#define RmErrorDlg(h,o,e,a) \
ErrorDlgUtil(h,o,e,a,g_hinstDll,SID_RM_RasMonitor,SID_FMT_ErrorMsg)
#define RmMsgDlg(h,m,a) \
MsgDlgUtil(h,m,a,g_hinstDll,SID_RM_RasMonitor)
//
// definition for arguments passed to RmPropertySheet
//
#define RMARGS struct tagRMARGS
RMARGS {
BOOL fUserHangUp;
PTSTR pszDeviceName;
RASMONITORDLG *pApiArgs;
};
//
// definition for each entry in the list of devices
// which are displayed on the Line Status property page
//
#define LSDEVICE struct tagLSDEVICE
LSDEVICE {
LIST_ENTRY leDevices;
RASDEV *prasdev;
UINT dwFlags;
};
//
// definition of the header for each item in the treelist
// which is displayed on the Summary property page
//
#define SMENTRYHDR \
DWORD dwType; \
UINT dwFlags; \
DWORD dwDuration; \
HTLITEM hItem; \
LIST_ENTRY leNode
//
// definition of the base-portion of each item in the Summary page treelist
//
#define SMENTRY struct tagSMENTRY
SMENTRY {
SMENTRYHDR;
};
//
// values used in the dwType field for Summary page treelist-entries
//
#define SMTYPE_Network 0
#define SMTYPE_Link 1
#define SMTYPE_Client 2
#define SMTYPE_Port 3
#define SMTYPE_IdleLines 4
#define SMTYPE_IdleDevice 5
//
// definition for each entry in the list of networks
// which is displayed on the Summary property page;
// note that the lhLinks field is in the same position
// as the lhPorts field of the SMCLIENT structure
//
#define SMNETWORK struct tagSMNETWORK
SMNETWORK {
SMENTRYHDR;
LIST_ENTRY lhLinks;
PTSTR pszEntryName;
HRASCONN hrasconn;
};
//
// definition for each entry in a network's list of links,
// displayed for each network on the Summary property page;
// note that the first three fields (apart from the header)
// are in the same order as for the SMPORT structure
//
#define SMLINK struct tagSMLINK
SMLINK {
SMENTRYHDR;
PTSTR pszDeviceName;
DWORD dwIconIndex;
RASDEV *prasdev;
HRASCONN hrasconn;
};
//
// definition for each entry in the list of clients
// which is displayed on the Summary property page;
// note that the lhPorts field is in the same position
// as the lhLinks field of the SMNETWORK structure
//
#define SMCLIENT struct tagSMCLIENT
SMCLIENT {
SMENTRYHDR;
LIST_ENTRY lhPorts;
PTSTR pszClientName;
RASDEV *prasdev;
DWORD dwBundle;
};
//
// definition for each entry in a client's list of links.
// displayed for each client on the Summary property page
// note that the first three fields (apart from the header)
// are in the same order as for the SMLINK structure
//
#define SMPORT struct tagSMPORT
SMPORT {
SMENTRYHDR;
PTSTR pszDeviceName;
DWORD dwIconIndex;
RASDEV *prasdev;
WCHAR wszPortName[MAX_PORT_NAME + 1];
};
//
// definition of data for an instance of the RAS Monitor page;
// This structure is global to all the pages in the property sheet.
// The first page to be displayed is responsible for initializing it
// in the pages WM_INITDIALOG handler.
//
#define RMINFO struct tagRMINFO
RMINFO {
//
// Sheet-wide variables:
//
// arguments passed to RasMonitorDlg
//
RMARGS *pArgs;
//
// flag indicating changes need to be applied
//
BOOL bDirty;
//
// flag indicating one or more devices is configured for dial-in
//
BOOL bDialIn;
//
// id for timer of currently-displayed page
//
UINT uiTimerId;
//
// current user preferences for RASMON
//
RMUSER rbRmUser;
//
// RAS device count and device table
//
DWORD iRmDevCount;
RASDEV *pRmDevTable;
//
// TAPI hlineapp for the property sheet
//
HLINEAPP hRmLineApp;
//
// property sheet and page window handles
//
HWND hwndDlg;
HWND hwndFirstPage;
HWND hwndLs;
HWND hwndSm;
HWND hwndPf;
HWND hwndAv;
//
// sheet-wide imagelist and icon table
//
HIMAGELIST hIconList;
INT pIconTable[RM_ICONCOUNT];
//
// handle to shared-memory containing the HWND for the property sheet
//
HANDLE hmap;
//
// Status page variables:
//
// device combobox window handle,
// list of LSDEVICE structures for installed devices,
// stats for currently selected device,
// and flag indicating first-time refresh
//
HWND hwndLsDevices;
LIST_ENTRY lhLsDevices;
RASDEVSTATS rdsLsStats;
BOOL bLsFirst;
BOOL bLsSetCondition;
//
// Summary page variables:
//
// connection treelist window handle,
// list of SMNETWORK structures for outgoing calls,
// list of SMCLIENT structures for incoming calls,
// flag indicating first-time refresh,
// and DWORD used to see whether or not to refresh the dial-in display
//
HWND hwndSmNetworks;
LIST_ENTRY lhSmNetworks;
LIST_ENTRY lhSmClients;
BOOL bSmFirst;
DWORD dwSmDialInUpdate;
//
// Preferences page variables:
//
// locations combobox window handle,
// locations checkbox listview window handle,
// and flag set when checkbox-listview is initialized.
//
#ifdef BETAHACK
HWND hwndPfLbLocations;
BOOL fPfChecks;
HWND hwndPfLvEnable;
#endif
};
//
// RAS Monitor property sheet function prototypes
//
RMINFO *
RmContext(
HWND hwndPage
);
RMINFO *
RmInit(
HWND hwndFirstPage,
RMARGS *pArgs
);
VOID
RmInitFail(
RMINFO *pInfo,
DWORD dwOp,
DWORD dwErr
);
BOOL
RmApply(
HWND hwndPage
);
VOID
RmExit(
HWND hwndPage,
DWORD dwErr
);
VOID
RmPropertySheet(
RMARGS *pArgs
);
DWORD
RmArgsInit(
PTSTR pszDeviceName,
RASMONITORDLG *pInfo,
RMARGS *pArgs
);
DWORD
RmArgsFree(
RMARGS *pArgs
);
//
// Status property page function prototypes
//
INT_PTR
CALLBACK
LsDlgProc(
HWND hwndPage,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
);
BOOL
LsInit(
HWND hwndPage,
RMARGS *pArgs
);
DWORD
LsLoadDeviceList(
RMINFO *pInfo
);
BOOL
LsCommand(
RMINFO *pInfo,
WORD wNotification,
WORD wCtrlId,
HWND hwndCtrl
);
DWORD
LsRefresh(
RMINFO *pInfo
);
VOID
LsUpdateConnectResponse(
RMINFO* pInfo,
RASDEV* prasdev,
RASDEVSTATS* pstats
);
DWORD
LsUpdateDeviceList(
RMINFO *pInfo
);
LSDEVICE *
LsCreateDevice(
RASDEV *pdev
);
TCHAR*
LsFormatPszFromId(
UINT idsFmt,
TCHAR* pszArg
);
//
// Summary property page function prototypes
//
INT_PTR
CALLBACK
SmDlgProc(
HWND hwndDlg,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
);
BOOL
SmInit(
HWND hwndDlg,
RMARGS *pArgs
);
LRESULT
SmFrameProc(
HWND hwndFrame,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
);
BOOL
SmCommand(
RMINFO *pInfo,
WORD wNotification,
WORD wCtrlId,
HWND hwndCtrl
);
DWORD
SmRefresh(
RMINFO *pInfo
);
DWORD
SmUpdateItemList(
RMINFO *pInfo,
BOOL bDialInUpdate
);
SMENTRY *
SmDisplayItemList(
RMINFO *pInfo,
LIST_ENTRY *phead,
SMENTRY *pprev
);
SMNETWORK *
SmCreateNetwork(
RASCONN *pconn,
RASDEV *prasdev
);
SMCLIENT *
SmCreateClient(
RMINFO *pInfo,
RAS_PORT_0 *prp0,
RASDEV *prasdev
);
SMLINK *
SmCreateLink(
RMINFO *pInfo,
RASCONN *pconn,
RASDEV *prasdev
);
SMPORT *
SmCreatePort(
RMINFO *pInfo,
RAS_PORT_0 *prp0,
RASDEV *prasdev
);
SMLINK *
SmCreateLinkInactive(
RMINFO *pInfo,
RASDEV *prasdev
);
//
// Preferences property page function prototypes
//
INT_PTR
CALLBACK
PfDlgProc(
HWND hwndDlg,
UINT uiMsg,
WPARAM wParam,
LPARAM lParam
);
BOOL
PfInit(
HWND hwndDlg,
RMARGS *pArgs
);
VOID
PfApply(
RMINFO *pInfo
);
DWORD
PfGetFlags(
RMINFO *pInfo
);
BOOL
PfCommand(
RMINFO *pInfo,
WORD wNotification,
WORD wCtrlId,
HWND hwndCtrl
);
VOID
PfUpdateWindowControls(
RMINFO* pInfo
);
#ifdef BETAHACK
LVXDRAWINFO *
PfLvEnableCallback(
HWND hwndLv,
DWORD dwItem
);
DWORD
PfFillLocationList(
RMINFO* pInfo
);
VOID
PfLocationChange(
RMINFO* pInfo
);
VOID
PfEditSelectedLocation(
RMINFO* pInfo
);
#endif // BETAHACK
#endif // _STATUS_H_