Leaked source code of windows server 2003
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

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