|
|
/*
- 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
|