316 lines
11 KiB
C
316 lines
11 KiB
C
/*
|
|
- uiutil.h
|
|
- common UI stuff
|
|
- will be included by modules that require these UI services
|
|
- services are in: ui\faxcfg\
|
|
- uiutil.c
|
|
- tapi.c
|
|
- comdlg.c
|
|
- registry.c
|
|
- DLL for these services: awfxcg32.dll
|
|
*
|
|
*
|
|
*/
|
|
|
|
#include "phonenum.h"
|
|
|
|
/*
|
|
* complement the macros in winuser.h to extract notification codes
|
|
*/
|
|
|
|
#ifdef WIN16
|
|
#define GET_WM_COMMAND_NOTIFICATION_CODE(wp, lp) HIWORD(lp)
|
|
#define GET_WM_COMMAND_CONTROL_ID(wp, lp) (wp)
|
|
#define GET_WM_COMMAND_CONTROL_HANDLE(wp, lp) (HWND)(LOWORD)(lp)
|
|
#else
|
|
#define GET_WM_COMMAND_NOTIFICATION_CODE(wp, lp) HIWORD(wp)
|
|
#define GET_WM_COMMAND_CONTROL_ID(wp, lp) LOWORD(wp)
|
|
#define GET_WM_COMMAND_CONTROL_HANDLE(wp, lp) (HWND)(lp)
|
|
#endif
|
|
|
|
/***************************
|
|
******** Constants ********
|
|
***************************/
|
|
|
|
#define DDL_HIDEEXT 0x0001
|
|
#define DDL_DONTRESET 0x0002
|
|
#define DDL_FOLLOWLINKS 0x0004
|
|
#define DDL_MAPIDIALOG 0x0008
|
|
// no dirs or temp files allowed!
|
|
#define FILE_ATTRIB_ALL ( FILE_ATTRIBUTE_ARCHIVE |\
|
|
FILE_ATTRIBUTE_HIDDEN |\
|
|
FILE_ATTRIBUTE_READONLY |\
|
|
FILE_ATTRIBUTE_SYSTEM |\
|
|
FILE_ATTRIBUTE_NORMAL )
|
|
|
|
/***************************
|
|
***** Date/time stuff *****
|
|
***************************/
|
|
|
|
// Time Control constants
|
|
#define DATETIME_COMPONENTS 14
|
|
#define HOUR 0 /* index into wDateTime */
|
|
#define MINUTE 1
|
|
#define SECOND 2
|
|
#define MONTH 3
|
|
#define DAY 4
|
|
#define YEAR 5
|
|
#define WEEKDAY 6
|
|
#define AMPM 10
|
|
#define SEPARATOR 11
|
|
#define BORDER 12
|
|
#define ARROW 13
|
|
|
|
/*****************************************************************************
|
|
Dos Date format is:
|
|
bits 0-8 contian the day number within the year.
|
|
bits 9-15 contain the years since 1990. (ie, 1990 = 0)
|
|
Thus, the earliest date is 1/1/1990, which is reprsented by
|
|
the DOSDATE==1.
|
|
*****************************************************************************/
|
|
typedef WORD DOSDATE;
|
|
|
|
// wFormat flags for flags for GetTimeDateStr() wFormat should == FMT_STRxxx
|
|
// flags optionally ored with FMT_NOSECONDS
|
|
|
|
#define FMT_DATE 0x0001
|
|
#define FMT_TIME 0x0002
|
|
#define FMT_STRMASK 0x00F0
|
|
#define FMT_STRDATE 0x0011 // includes FMT_DATE
|
|
#define FMT_STRTIME 0x0022 // includes FMT_TIME
|
|
#define FMT_STRTIMEDATE 0x0033 // includes FMT_DATE and FMT_TIME
|
|
#define FMT_STRDATETIME 0x0043 // includes FMT_DATE and FMT_TIME
|
|
#define FMT_NOSECONDS 0x0100
|
|
|
|
|
|
/***************************
|
|
*** International stuff ***
|
|
***************************/
|
|
|
|
/* Suffix length + NULL terminator */
|
|
#define TIMESUF_LEN 9
|
|
|
|
typedef struct /* International section description */
|
|
{
|
|
char sCountry[24]; /* Country name */
|
|
int iCountry; /* Country code (phone ID) */
|
|
int iDate; /* Date mode (0:MDY, 1:DMY, 2:YMD) */
|
|
int iTime; /* Time mode (0: 12 hour clock, 1: 24 ) */
|
|
int iTLZero; /* Leading zeros for hour (0: no, 1: yes) */
|
|
int iCurFmt; /* Currency mode(0: prefix, no separation
|
|
1: suffix, no separation
|
|
2: prefix, 1 char separation
|
|
3: suffix, 1 char separation) */
|
|
|
|
int iCurDec; /* Currency Decimal Place */
|
|
int iNegCur; /* Negative currency pattern
|
|
($1.23), -$1.23, $-1.23, $1.23-, etc. */
|
|
int iLzero; /* Leading zeros of decimal (0: no, 1: yes) */
|
|
int iDigits; /* Significant decimal digits */
|
|
int iMeasure; /* Metric 0; British 1 */
|
|
char s1159[TIMESUF_LEN]; /* Trailing string from 0:00 to 11:59 */
|
|
char s2359[TIMESUF_LEN]; /* Trailing string from 12:00 to 23:59 */
|
|
char s1159old[TIMESUF_LEN]; /* Old trailing string from 0:00 to 11:59 */
|
|
char s2359old[TIMESUF_LEN]; /* Old trailing string from 12:00 to 23:59 */
|
|
char sCurrency[6]; /* Currency symbol string */
|
|
char sThousand[4]; /* Thousands separator string */
|
|
char sDecimal[4]; /* Decimal separator string */
|
|
char sDateSep[4]; /* Date separator string */
|
|
char sTime[4]; /* Time separator string */
|
|
char sList[4]; /* List separator string */
|
|
char sLongDate[80];
|
|
char sShortDate[80];
|
|
char sLanguage[4];
|
|
short iDayLzero; /* Day Leading zero for Short Time format */
|
|
short iMonLzero; /* Month Leading zero for Short Time format */
|
|
short iCentury; /* Display full century in Short Time format */
|
|
short iLDate; /* Long Date mode (0:MDY, 1:DMY, 2:YMD) */
|
|
} INTLSTRUCT;
|
|
typedef INTLSTRUCT FAR *LPINTL;
|
|
typedef INTLSTRUCT NEAR *PINTL;
|
|
|
|
|
|
/******************************************
|
|
*** Telephone number encoding/decoding ***
|
|
******************************************/
|
|
|
|
#define tapiVersionCur 0x00010004
|
|
|
|
// Sender fax number fields (number, country code, area code) flags
|
|
#define TEL_AREACODEDISABLE 0x00000002
|
|
#define TEL_NOAREACODEDISABLE 0x00000000
|
|
#define TEL_MUSTFAXNUMBER 0x00000004
|
|
#define TEL_NOMUSTFAXNUMBER 0x00000000
|
|
|
|
// per-country area codes support
|
|
#define MANDATORY_AREA_CODES 2
|
|
#define OPTIONAL_AREA_CODES 1
|
|
#define NO_AREA_CODES FALSE
|
|
|
|
/******************************************
|
|
*********** Modem ******
|
|
******************************************/
|
|
|
|
#define DEVICE_NAME_SIZE MAX_PATH/4 // Maximum size for the name of a fax device
|
|
|
|
typedef struct tagPARSEDMODEM
|
|
{
|
|
WORD iModemType; // type of the modem
|
|
DWORD dwModemID; // line ID (or com port) for a local modem
|
|
DWORD dwTAPIPermanentID; // TAPI permanent line ID
|
|
TCHAR szDisplayName[DEVICE_NAME_SIZE]; // modem name for netfax devices
|
|
TCHAR szDeviceTypeName[DEVICE_NAME_SIZE]; // the name for this device type. this
|
|
// connects into the device type structure
|
|
} PARSEDMODEM, *LPPARSEDMODEM;
|
|
|
|
typedef struct tagMODEMPROPS
|
|
{
|
|
ULONG iAnswerMode;
|
|
ULONG iNumRings;
|
|
ULONG iBlindDial;
|
|
ULONG iCommaDelay;
|
|
ULONG iDialToneWait;
|
|
ULONG iHangupDelay;
|
|
ULONG iSpeakerMode;
|
|
ULONG iSpeakerVolume;
|
|
} MODEMPROPS, *LPMODEMPROPS;
|
|
|
|
/***********************************************************
|
|
*** Prototypes for functions exported from awfxcg32.dll ***
|
|
***********************************************************/
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
/*
|
|
* General
|
|
*/
|
|
void StripExtension(LPTSTR lpFileName, LPTSTR lpExt);
|
|
void StripAnyExtension(LPTSTR lpFileName);
|
|
void ReplaceExtension(LPTSTR lpszPath, LPTSTR lpszNewExt);
|
|
void ReplaceSpecificExtension(LPTSTR lpszPath, LPTSTR lpszOldExt, LPTSTR lpszNewExt);
|
|
BOOL TruncateString(LPTSTR lpszString, LONG nBytes);
|
|
LPTSTR FindEndOfString(LPTSTR stringPtr);
|
|
LPTSTR FindLastCharInString(LPTSTR stringPtr);
|
|
BOOL ReplaceChars(LPTSTR lpszString, TCHAR cCharIn, TCHAR cCharOut);
|
|
LPTSTR ReplaceLastOccurence(LPTSTR lpszString, TCHAR cCharIn, TCHAR cCharOut);
|
|
BOOL IsNumberString(LPSTR lpszString, ULONG n);
|
|
BOOL IsTelNumberString(LPSTR lpszString, ULONG n);
|
|
BOOL MySplitPath(LPTSTR lpszFullPath, LPTSTR lpszPath, LPTSTR lpszFileName, LPTSTR lpszExt);
|
|
BOOL IsFullPath(LPSTR lpszString);
|
|
int MakeMessageBox(HINSTANCE, HWND, DWORD, UINT, UINT, ...);
|
|
UINT GetWindowsDirectoryWithSlash(LPSTR lpBuffer, UINT uSize);
|
|
DOSDATE EncodeDosDate(WORD wMonth, WORD wDay, WORD wYear);
|
|
DOSDATE EncodeLocalDosDate(BOOL fToday);
|
|
void DecodeDosDate(DOSDATE dosdate, WORD *pwMonth, WORD *pwDay, WORD *pwYear);
|
|
int GetTimeDateStr(WORD wHour, WORD wMinute, WORD wSecond, WORD wMilliseconds,
|
|
DOSDATE wDosDate, LPTSTR pBuf, int iSizeBuf, WORD wFormat);
|
|
int CountFiles(LPTSTR lpOrigPathSpec, ULONG ulFlags);
|
|
|
|
/*
|
|
* localization-related
|
|
*/
|
|
BOOL IsDBCSTrailByte(LPTSTR stringPtr, LPTSTR bytePtr);
|
|
|
|
/*
|
|
* common dialogs
|
|
*/
|
|
int WINAPI DDirList(HWND hDlg, LPTSTR lpPathSpec, int nIDListBox, UINT uFileType, UINT uFlags);
|
|
BOOL WINAPI DDirSelect(HWND hDlg, LPTSTR lpString, int nCount, int nIDListBox, LPTSTR lpExt);
|
|
BOOL GetSelectedCoverPage(HWND hDlg, LPTSTR lpszString, int nCount, int nIDListBox, LPTSTR lpszExt);
|
|
BOOL GetCoverPageDisplayName(HWND hDlg, int nCPListCID, LPTSTR lpszFile, ULONG ulFlags,
|
|
LPTSTR lpszDisplayName);
|
|
|
|
/*
|
|
* time handling
|
|
*/
|
|
void InitTimeInfo();
|
|
void InitTimeControl(HWND, const int[], short int []);
|
|
BOOL HandleTimeControl(HWND, UINT, short, short int[], const int[], WPARAM, LPARAM, ULONG);
|
|
void EnableTimeControls(HWND hDlg, const int wCtrlIDs[], BOOL flag);
|
|
|
|
/*
|
|
* telephone number-related
|
|
*/
|
|
// BOOL EncodeFaxAddress(LPTSTR lpszFaxAddr, LPPARSEDTELNUMBER lpParsedFaxAddr);
|
|
// BOOL DecodeFaxAddress(LPTSTR lpszFaxAddr, LPPARSEDTELNUMBER lpParsedFaxAddr);
|
|
BOOL GetCountry(DWORD dwReqCountryID, LPLINECOUNTRYLIST *lppLineCountryList);
|
|
BOOL GetCountryCode(DWORD dwReqCountryID, DWORD *lpdwCountryCode);
|
|
BOOL GetCountryID(DWORD dwCountryCode, DWORD *lpdwCountryID);
|
|
BOOL InitCountryCodesLB(HWND hLBControl, HWND hAreaCodeControl,DWORD dwCurCountryID,
|
|
HINSTANCE hInst, ULONG ulFlags);
|
|
void HandleCountryCodesLB(HWND hCBControl, HWND hAreaCodeControl, WPARAM wParam, LPARAM lParam);
|
|
|
|
/*
|
|
* modem-related
|
|
*/
|
|
BOOL EncodeModemName(LPTSTR lpszModemName, LPPARSEDMODEM lpParsedModem);
|
|
BOOL DecodeModemName(LPTSTR lpszModemName, LPPARSEDMODEM lpParsedModem);
|
|
BOOL GetModemProperties(HWND hDlg, LPTSTR lpszModemName, LPMODEMPROPS lpsModemProps);
|
|
BOOL SetModemProperties(HWND hDlg, LPTSTR lpszModemName, LPMODEMPROPS lpsModemProps);
|
|
|
|
/*
|
|
* TAPI-related
|
|
*/
|
|
DWORD TAPIBasicInit(HINSTANCE hInst, HWND hWnd, LPSTR lpszAppName);
|
|
DWORD InitTAPI(HINSTANCE hInst, HWND hWnd, LPSTR lpszAppName);
|
|
BOOL DeinitTAPI();
|
|
WORD TAPIGetLines(WORD index);
|
|
LONG CallConfigDlg(HWND, LPCSTR);
|
|
LONG SetCurrentLocation(DWORD);
|
|
LONG GetCurrentLocationID( DWORD *lpdwLocation);
|
|
LPTSTR GetCurrentLocationName(void);
|
|
DWORD HowManyLocations(DWORD *lpdwNumLocations);
|
|
DWORD InitLocationParams(HWND hWnd);
|
|
LPTSTR GetCurrentCallingCardName(void);
|
|
BOOL SetCurrentCallingCardName(LPTSTR szCard);
|
|
BOOL GetAreaCode(DWORD dwCountryID, LPTSTR lpszAreaCode);
|
|
LPTSTR GetCurrentLocationAreaCode(void);
|
|
DWORD GetCurrentLocationCountryID(void);
|
|
DWORD GetCurrentLocationCountryCode(void);
|
|
DWORD GetTranslateCaps(LPLINETRANSLATECAPS *lpTransCaps);
|
|
DWORD GetTranslateOutput(LPCSTR lpszAddress, LPLINETRANSLATEOUTPUT *lpTransOutput);
|
|
BOOL ChangeTollList(LPCSTR lpszAddress, DWORD dwWhat);
|
|
BOOL SetTollList(LPCSTR lpszAddress, DWORD dwWhat);
|
|
BOOL AreTollPrefixesSupported(void);
|
|
BOOL IsInTollList(LPCSTR lpszAddress);
|
|
ULONG GetTollList(HWND hWnd, DWORD dwLocID, LPTSTR lpszBuf, DWORD * lpdwBufSize);
|
|
ULONG EditTollListDialog(HWND hWnd);
|
|
|
|
/*
|
|
* Registry access functions prototypes
|
|
*/
|
|
UINT GetInitializerInt(
|
|
HKEY hPDKey,
|
|
LPCTSTR lpszSection,
|
|
LPCTSTR lpszKey,
|
|
INT dwDefault,
|
|
LPCTSTR lpszFile);
|
|
|
|
DWORD GetInitializerString(
|
|
HKEY hPDKey,
|
|
LPCTSTR lpszSection,
|
|
LPCTSTR lpszKey,
|
|
LPCTSTR lpszDefault,
|
|
LPTSTR lpszReturnBuffer,
|
|
DWORD cchReturnBuffer,
|
|
LPCTSTR lpszFile);
|
|
|
|
BOOL WriteInitializerString(
|
|
HKEY hPDKey,
|
|
LPCTSTR lpszSection,
|
|
LPCTSTR lpszKey,
|
|
LPCTSTR lpszString,
|
|
LPCTSTR lpszFile);
|
|
|
|
BOOL WriteInitializerInt(
|
|
HKEY hPDKey,
|
|
LPCTSTR lpszSection,
|
|
LPCTSTR lpszKey,
|
|
DWORD i,
|
|
LPCTSTR lpszFile);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|