/*++ Copyright (c) 1996 Microsoft Corporation Module Name: faxext.h Abstract: Fax exchange client extension header file. Author: Wesley Witt (wesw) 13-Aug-1996 Revision History: 20/10/99 -danl- Add GetServerNameFromPrinterInfo. Change GetServerName to GetServerNameFromPrinterName. dd/mm/yy -author- description --*/ #ifndef _FAXEXT_H_ #define _FAXEXT_H_ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "resource.h" #include "faxmapip.h" #include "faxreg.h" #include "faxutil.h" #define FAXUTIL_DEBUG #define FAXUTIL_MEM #define FAXUTIL_STRING #define FAXUTIL_SUITE #define FAXUTIL_REG #include #define MAX_FILENAME_EXT 4 #define SERVER_COVER_PAGE 1 /* - GetServerNameFromPrinterInfo - * Purpose: * Get the Server name, given a PRINTER_INFO_2 structure * * Arguments: * [in] ppi2 - Address of PRINTER_INFO_2 structure * [out] lpptszServerName - Address of string pointer for returned name. * * Returns: * BOOL - TRUE: sucess , FALSE: failure. * * Remarks: * This inline function retrieves the server from a printer info structure * in the appropriate way for win9x and NT. */ _inline BOOL GetServerNameFromPrinterInfo(PPRINTER_INFO_2 ppi2,LPTSTR *lpptszServerName) { if (!ppi2) { return FALSE; } #ifndef WIN95 *lpptszServerName = NULL; if (ppi2->pServerName) { if (!(*lpptszServerName = StringDup(_tcsninc(ppi2->pServerName,2)))) { return FALSE; } } return TRUE; #else //WIN95 // // Formatted: \\Server\port // if (!(ppi2->pPortName)) { return FALSE; } if (!(*lpptszServerName = StringDup(_tcsninc(ppi2->pPortName,2)))) { return FALSE; } _tcstok(*lpptszServerName,TEXT("\\")); #endif //WIN95 return TRUE; } LPVOID MapiMemAlloc( SIZE_T Size ); LPVOID MapiMemReAlloc( LPVOID ptr, SIZE_T Size ); VOID MapiMemFree( LPVOID ptr ); INT_PTR CALLBACK ConfigDlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ); PVOID MyGetPrinter( LPTSTR PrinterName, DWORD level ); BOOL GetServerNameFromPrinterName( LPTSTR PrinterName, LPTSTR *lptszServerName ); void ErrorMsgBox( HINSTANCE hInstance, HWND hWnd, DWORD dwMsgId ); class MyExchExt; class MyExchExtCommands; class MyExchExtUserEvents; extern "C" { LPEXCHEXT CALLBACK ExchEntryPoint(void); } class MyExchExt : public IExchExt { public: MyExchExt (); STDMETHODIMP QueryInterface (REFIID riid, LPVOID * ppvObj); inline STDMETHODIMP_(ULONG) AddRef () { ++m_cRef; return m_cRef; }; inline STDMETHODIMP_(ULONG) Release () { ULONG ulCount = --m_cRef; if (!ulCount) { delete this; } return ulCount;}; STDMETHODIMP Install (LPEXCHEXTCALLBACK pmecb, ULONG mecontext, ULONG ulFlags); BOOL IsValid() { return (m_pExchExtUserEvents && m_pExchExtCommands) ? TRUE : FALSE; } private: ULONG m_cRef; UINT m_context; MyExchExtUserEvents * m_pExchExtUserEvents; MyExchExtCommands * m_pExchExtCommands; }; class MyExchExtCommands : public IExchExtCommands { public: MyExchExtCommands(); ~MyExchExtCommands(); STDMETHODIMP QueryInterface (REFIID riid, LPVOID * ppvObj); inline STDMETHODIMP_(ULONG) AddRef(); inline STDMETHODIMP_(ULONG) Release(); STDMETHODIMP InstallCommands(LPEXCHEXTCALLBACK pmecb, HWND hwnd, HMENU hmenu, UINT FAR * cmdidBase, LPTBENTRY lptbeArray, UINT ctbe, ULONG ulFlags); STDMETHODIMP DoCommand(LPEXCHEXTCALLBACK pmecb, UINT mni); STDMETHODIMP_(VOID) InitMenu(LPEXCHEXTCALLBACK pmecb); STDMETHODIMP Help(LPEXCHEXTCALLBACK pmecb, UINT mni); STDMETHODIMP QueryHelpText(UINT mni, ULONG ulFlags, LPTSTR sz, UINT cch); STDMETHODIMP QueryButtonInfo(ULONG tbid, UINT itbb, LPTBBUTTON ptbb, LPTSTR lpsz, UINT cch, ULONG ulFlags); STDMETHODIMP ResetToolbar(ULONG tbid, ULONG ulFlags); inline VOID SetContext (ULONG eecontext) { m_context = eecontext; }; inline UINT GetCmdID() { return m_cmdid; }; inline HWND GetToolbarHWND() { return m_hwndToolbar; } private: ULONG m_cRef; // ULONG m_context; // UINT m_cmdid; // cmdid for menu extension command UINT m_itbb; // toolbar index HWND m_hwndToolbar; // toolbar window handle UINT m_itbm; // HWND m_hWnd; // FAXXP_CONFIG m_FaxConfig; }; class MyExchExtUserEvents : public IExchExtUserEvents { public: MyExchExtUserEvents() { m_cRef = 0; m_context = 0; m_pExchExt = NULL; }; STDMETHODIMP QueryInterface (REFIID riid, LPVOID * ppvObj); inline STDMETHODIMP_(ULONG) AddRef () { ++m_cRef; return m_cRef; }; inline STDMETHODIMP_(ULONG) Release () { ULONG ulCount = --m_cRef; if (!ulCount) { delete this; } return ulCount;}; STDMETHODIMP_(VOID) OnSelectionChange(LPEXCHEXTCALLBACK pmecb); STDMETHODIMP_(VOID) OnObjectChange(LPEXCHEXTCALLBACK pmecb); inline VOID SetContext (ULONG eecontext) { m_context = eecontext; }; inline VOID SetIExchExt (MyExchExt * pExchExt) { m_pExchExt = pExchExt; }; private: ULONG m_cRef; ULONG m_context; MyExchExt * m_pExchExt; }; #endif // _FAXEXT_H_