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.
278 lines
6.5 KiB
278 lines
6.5 KiB
/*++
|
|
|
|
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 <windows.h>
|
|
#include <winspool.h>
|
|
#include <mapiwin.h>
|
|
#include <mapispi.h>
|
|
#include <mapiutil.h>
|
|
#include <mapicode.h>
|
|
#include <mapival.h>
|
|
#include <mapiwz.h>
|
|
#include <mapix.h>
|
|
#include <mapiutil.h>
|
|
#include <mapiform.h>
|
|
#include <mapiguid.h>
|
|
#include <richedit.h>
|
|
#include <shlobj.h>
|
|
#include <shellapi.h>
|
|
#include <commdlg.h>
|
|
#include <exchext.h>
|
|
#include <tapi.h>
|
|
#include <tchar.h>
|
|
#include <stdio.h>
|
|
#include <fxsapip.h>
|
|
|
|
#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 <faxutil.h>
|
|
|
|
|
|
#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_
|