You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
178 lines
8.2 KiB
178 lines
8.2 KiB
// =================================================================================
|
|
// Common IMailXP macros and stuff
|
|
// Written by: Steven J. Bailey on 1/21/96
|
|
// =================================================================================
|
|
#ifndef __XPCOMM_H
|
|
#define __XPCOMM_H
|
|
|
|
// ------------------------------------------------------------------------------------
|
|
// INETMAILERROR
|
|
// ------------------------------------------------------------------------------------
|
|
typedef struct tagINETMAILERROR {
|
|
DWORD dwErrorNumber; // Error Number
|
|
HRESULT hrError; // HRESULT of error
|
|
LPTSTR pszServer; // Server
|
|
LPTSTR pszAccount; // Account
|
|
LPTSTR pszMessage; // Actual error message
|
|
LPTSTR pszUserName; // User Name
|
|
LPTSTR pszProtocol; // protocol smtp or pop3
|
|
LPTSTR pszDetails; // Details message
|
|
DWORD dwPort; // Port
|
|
BOOL fSecure; // Secure ssl conneciton
|
|
} INETMAILERROR, *LPINETMAILERROR;
|
|
|
|
INT_PTR CALLBACK InetMailErrorDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
|
|
// =================================================================================
|
|
// Defines
|
|
// =================================================================================
|
|
#define SECONDS_INA_MINUTE (ULONG)60 // Easy
|
|
#define SECONDS_INA_HOUR (ULONG)3600 // 60 * 60
|
|
#define SECONDS_INA_DAY (ULONG)86400 // 3600 * 24
|
|
|
|
#define IS_EXTENDED(ch) ((ch > 126 || ch < 32) && ch != '\t' && ch != '\n' && ch != '\r')
|
|
|
|
// ============================================================================================
|
|
// Returns 0 if string is NULL, lstrlen + 1 otherwise
|
|
// ============================================================================================
|
|
#define SafeStrlen(_psz) (_psz ? lstrlen (_psz) + 1 : 0)
|
|
|
|
// =================================================================================
|
|
// CProgress
|
|
// =================================================================================
|
|
class CProgress : public IDatabaseProgress, public IStoreCallback
|
|
{
|
|
public:
|
|
//----------------------------------------------------------------------
|
|
// Construction
|
|
//----------------------------------------------------------------------
|
|
CProgress(void);
|
|
~CProgress(void);
|
|
|
|
//----------------------------------------------------------------------
|
|
// IUnknown Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP QueryInterface(REFIID riid, LPVOID *ppv) { return E_NOTIMPL; }
|
|
STDMETHODIMP_(ULONG) AddRef(void);
|
|
STDMETHODIMP_(ULONG) Release(void);
|
|
|
|
//----------------------------------------------------------------------
|
|
// IStoreCallback Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP OnBegin(STOREOPERATIONTYPE tyOperation, STOREOPERATIONINFO *pOpInfo, IOperationCancel *pCancel) { return(E_NOTIMPL); }
|
|
STDMETHODIMP OnTimeout(LPINETSERVER pServer, LPDWORD pdwTimeout, IXPTYPE ixpServerType) { return(E_NOTIMPL); }
|
|
STDMETHODIMP CanConnect(LPCSTR pszAccountId, DWORD dwFlags) { return(E_NOTIMPL); }
|
|
STDMETHODIMP OnLogonPrompt(LPINETSERVER pServer, IXPTYPE ixpServerType) { return(E_NOTIMPL); }
|
|
STDMETHODIMP OnComplete(STOREOPERATIONTYPE tyOperation, HRESULT hrComplete, LPSTOREOPERATIONINFO pOpInfo, LPSTOREERROR pErrorInfo) { return(E_NOTIMPL); }
|
|
STDMETHODIMP OnPrompt(HRESULT hrError, LPCTSTR pszText, LPCTSTR pszCaption, UINT uType, INT *piUserResponse) { return(E_NOTIMPL); }
|
|
STDMETHODIMP GetParentWindow(DWORD dwReserved, HWND *phwndParent) { return(E_NOTIMPL); }
|
|
|
|
STDMETHODIMP OnProgress(STOREOPERATIONTYPE tyOperation, DWORD dwCurrent, DWORD dwMax, LPCSTR pszStatus)
|
|
{
|
|
if (0 == m_cMax)
|
|
AdjustMax(dwMax);
|
|
ULONG cIncrement = (dwCurrent - m_cLast);
|
|
HRESULT hr = HrUpdate(cIncrement);
|
|
m_cLast = dwCurrent;
|
|
return(hr);
|
|
}
|
|
|
|
//----------------------------------------------------------------------
|
|
// IDatabaseProgress Members
|
|
//----------------------------------------------------------------------
|
|
STDMETHODIMP Update(DWORD cCount) { return HrUpdate(1); }
|
|
|
|
//----------------------------------------------------------------------
|
|
// CProgress Members
|
|
//----------------------------------------------------------------------
|
|
void SetMsg(LPTSTR lpszMsg);
|
|
void SetTitle(LPTSTR lpszTitle);
|
|
void Show(DWORD dwDelaySeconds=0);
|
|
void Hide(void);
|
|
void Close(void);
|
|
void AdjustMax(ULONG cNewMax);
|
|
void Reset(void);
|
|
HWND GetHwnd(void) { return (m_hwndDlg); }
|
|
HRESULT HrUpdate (ULONG cInc);
|
|
static INT_PTR CALLBACK ProgressDlgProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
|
|
void Init(HWND hwndParent, LPTSTR lpszTitle, LPTSTR lpszMsg, ULONG cMax, UINT idani, BOOL fCanCancel, BOOL fBacktrackParent=TRUE);
|
|
|
|
private:
|
|
//----------------------------------------------------------------------
|
|
// Private Data
|
|
//----------------------------------------------------------------------
|
|
ULONG m_cRef;
|
|
ULONG m_cLast;
|
|
ULONG m_cMax;
|
|
ULONG m_cCur;
|
|
ULONG m_cPerCur;
|
|
HWND m_hwndProgress;
|
|
HWND m_hwndDlg;
|
|
HWND m_hwndOwner;
|
|
HWND m_hwndDisable;
|
|
BOOL m_fCanCancel;
|
|
BOOL m_fHasCancel;
|
|
};
|
|
|
|
// =================================================================================
|
|
// Max Message String
|
|
// =================================================================================
|
|
#define MAX_MESSAGE_STRING 255
|
|
#define MAX_RESOURCE_STRING 255
|
|
#define MAX_REG_VALUE_STR 1024
|
|
#define MAX_TEXT_STM_BUFFER_STR 4096
|
|
|
|
// =================================================================================
|
|
// Detailed Error Struct
|
|
// =================================================================================
|
|
typedef struct tagDETERR {
|
|
LPTSTR lpszMessage;
|
|
LPTSTR lpszDetails;
|
|
UINT idsTitle;
|
|
RECT rc;
|
|
BOOL fHideDetails;
|
|
} DETERR, *LPDETERR;
|
|
|
|
// Blob parsing
|
|
HRESULT HrBlobReadData (LPBYTE lpBlob, ULONG cbBlob, ULONG *pib, LPBYTE lpbData, ULONG cbData);
|
|
HRESULT HrBlobWriteData (LPBYTE lpBlob, ULONG cbBlob, ULONG *pib, LPBYTE lpbData, ULONG cbData);
|
|
|
|
// String Parsing Functions
|
|
VOID StripSpaces(LPTSTR psz);
|
|
LPTSTR SzGetSearchTokens(LPTSTR pszCriteria);;
|
|
HRESULT HrCopyAlloc (LPBYTE *lppbDest, LPBYTE lpbSrc, ULONG cb);
|
|
LPTSTR StringDup (LPCTSTR lpcsz);
|
|
BOOL FIsStringEmpty (LPTSTR lpszString);
|
|
BOOL FIsStringEmptyW(LPWSTR lpwszString);
|
|
void SkipWhitespace (LPCTSTR lpcsz, ULONG *pi);
|
|
BOOL FStringTok (LPCTSTR lpcszString, ULONG *piString, LPTSTR lpcszTokens, TCHAR *chToken, LPTSTR lpszValue, ULONG cbValueMax, BOOL fStripTrailingWhitespace);
|
|
#ifdef DEAD
|
|
ULONG UlDBCSStripWhitespace (LPSTR lpsz, BOOL fLeading, BOOL fTrailing, ULONG *pcb);
|
|
#endif // DEAD
|
|
LPTSTR SzNormalizeSubject (LPTSTR lpszSubject);
|
|
LPTSTR SzFindChar (LPCTSTR lpcsz, TCHAR ch);
|
|
WORD NFromSz (LPCTSTR lpcsz);
|
|
UINT AthUFromSz(LPCTSTR lpcsz);
|
|
VOID ProcessNlsError (VOID);
|
|
|
|
// Networking Functions
|
|
LPSTR SzGetLocalHostName (VOID);
|
|
LPTSTR SzGetLocalPackedIP (VOID);
|
|
LPSTR SzGetLocalHostNameForID (VOID);
|
|
HRESULT HrFixupHostString (LPTSTR lpszHost);
|
|
HRESULT HrFixupAccountString (LPTSTR lpszAccount);
|
|
LPTSTR SzStrAlloc (ULONG cch);
|
|
|
|
// Whatever
|
|
HFONT HGetMenuFont (void);
|
|
VOID DetailedError (HWND hwndParent, LPDETERR lpDetErr);
|
|
ULONG UlDateDiff (LPFILETIME lpft1, LPFILETIME lpft2);
|
|
BOOL FIsLeapYear (INT nYear);
|
|
VOID ResizeDialogComboEx (HWND hwndDlg, HWND hwndCombo, UINT idcBase, HIMAGELIST himl);
|
|
VOID StripIllegalHostChars(LPSTR pszSrc, LPTSTR pszDst);
|
|
|
|
#ifdef DEBUG
|
|
VOID TestDateDiff (VOID);
|
|
#endif
|
|
|
|
#endif // _COMMON_HPP
|