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.
179 lines
4.6 KiB
179 lines
4.6 KiB
#include "stdafx.h"
|
|
#include "RoutingMethodProp.h"
|
|
#include "RoutingMethodConfig.h"
|
|
#include <faxutil.h>
|
|
#include <faxreg.h>
|
|
#include <faxres.h>
|
|
#include <EmailConfigPage.h>
|
|
#include <Util.h>
|
|
|
|
HRESULT
|
|
CEmailConfigPage::Init(
|
|
LPCTSTR lpctstrServerName,
|
|
DWORD dwDeviceId
|
|
)
|
|
{
|
|
DEBUG_FUNCTION_NAME(TEXT("CEmailConfigPage::Init"));
|
|
|
|
DWORD ec = ERROR_SUCCESS;
|
|
|
|
m_bstrServerName = lpctstrServerName;
|
|
m_dwDeviceId = dwDeviceId;
|
|
if (!m_bstrServerName)
|
|
{
|
|
DebugPrintEx(
|
|
DEBUG_ERR,
|
|
TEXT("Out of memory while copying server name (ec: %ld)")
|
|
);
|
|
ec = ERROR_NOT_ENOUGH_MEMORY;
|
|
DisplayRpcErrorMessage(ERROR_NOT_ENOUGH_MEMORY, IDS_EMAIL_TITLE, m_hWnd);
|
|
goto exit;
|
|
}
|
|
|
|
if (!FaxConnectFaxServer(lpctstrServerName, &m_hFax))
|
|
{
|
|
ec = GetLastError();
|
|
DebugPrintEx(
|
|
DEBUG_ERR,
|
|
TEXT("FaxConnectFaxServer failed (ec: %ld)"),
|
|
ec);
|
|
DisplayRpcErrorMessage(ec, IDS_EMAIL_TITLE, m_hWnd);
|
|
goto exit;
|
|
}
|
|
//
|
|
// Retrieve the data
|
|
//
|
|
ec = ReadExtStringData (
|
|
m_hFax,
|
|
m_dwDeviceId,
|
|
REGVAL_RM_EMAIL_GUID,
|
|
m_bstrMailTo,
|
|
TEXT(""),
|
|
IDS_EMAIL_TITLE,
|
|
m_hWnd);
|
|
|
|
exit:
|
|
|
|
if ((ERROR_SUCCESS != ec) && m_hFax)
|
|
{
|
|
if (!FaxClose(m_hFax))
|
|
{
|
|
DebugPrintEx(
|
|
DEBUG_ERR,
|
|
TEXT("FaxClose() failed on fax handle (0x%08X : %s). (ec: %ld)"),
|
|
m_hFax,
|
|
m_bstrServerName,
|
|
GetLastError());
|
|
}
|
|
m_hFax = NULL;
|
|
}
|
|
return HRESULT_FROM_WIN32(ec);
|
|
} // CEmailConfigPage::Init
|
|
|
|
LRESULT CEmailConfigPage::OnInitDialog(
|
|
UINT uiMsg,
|
|
WPARAM wParam,
|
|
LPARAM lParam,
|
|
BOOL& fHandled
|
|
)
|
|
{
|
|
DEBUG_FUNCTION_NAME( _T("CEmailConfigPage::OnInitDialog"));
|
|
|
|
//
|
|
// An edit control should be LTR
|
|
//
|
|
SetLTREditDirection (m_hWnd,IDC_EDIT_MAILTO);
|
|
|
|
//
|
|
// Attach and set values to the controls
|
|
//
|
|
m_edtMailTo.Attach (GetDlgItem (IDC_EDIT_MAILTO));
|
|
m_edtMailTo.SetWindowText (m_bstrMailTo);
|
|
|
|
m_fIsDialogInitiated = TRUE;
|
|
|
|
return 1;
|
|
}
|
|
|
|
|
|
BOOL
|
|
CEmailConfigPage::OnApply()
|
|
{
|
|
DEBUG_FUNCTION_NAME(TEXT("CEmailConfigPage::OnApply"));
|
|
|
|
if (!m_fIsDirty)
|
|
{
|
|
return TRUE;
|
|
}
|
|
|
|
//
|
|
// Collect data from the controls
|
|
//
|
|
m_edtMailTo.GetWindowText (m_bstrMailTo.m_str);
|
|
//
|
|
// Check data validity
|
|
//
|
|
if (!m_bstrMailTo.Length())
|
|
{
|
|
DisplayErrorMessage (IDS_EMAIL_TITLE, IDS_EMAIL_ADDR_INVALID, FALSE, m_hWnd);
|
|
return FALSE;
|
|
}
|
|
//
|
|
// Validation passed. Now write the data using RPC
|
|
//
|
|
if (ERROR_SUCCESS != WriteExtData (m_hFax,
|
|
m_dwDeviceId,
|
|
REGVAL_RM_EMAIL_GUID,
|
|
(LPBYTE)(LPCWSTR)m_bstrMailTo,
|
|
sizeof (WCHAR) * (1 + m_bstrMailTo.Length()),
|
|
IDS_EMAIL_TITLE,
|
|
m_hWnd))
|
|
{
|
|
return FALSE;
|
|
}
|
|
|
|
|
|
//Success
|
|
m_fIsDirty = FALSE;
|
|
|
|
return TRUE;
|
|
} // CEmailConfigPage::OnApply
|
|
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
/*++
|
|
|
|
CEmailConfigPage::OnHelpRequest
|
|
|
|
This is called in response to the WM_HELP Notify
|
|
message and to the WM_CONTEXTMENU Notify message.
|
|
|
|
WM_HELP Notify message.
|
|
This message is sent when the user presses F1 or <Shift>-F1
|
|
over an item or when the user clicks on the ? icon and then
|
|
presses the mouse over an item.
|
|
|
|
WM_CONTEXTMENU Notify message.
|
|
This message is sent when the user right clicks over an item
|
|
and then clicks "What's this?"
|
|
|
|
--*/
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
LRESULT
|
|
CEmailConfigPage::OnHelpRequest(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL& /*bHandled*/)
|
|
{
|
|
DEBUG_FUNCTION_NAME(_T("CEmailConfigPage::OnHelpRequest"));
|
|
|
|
switch (uMsg)
|
|
{
|
|
case WM_HELP:
|
|
WinContextHelp(((LPHELPINFO)lParam)->dwContextId, m_hWnd);
|
|
break;
|
|
|
|
case WM_CONTEXTMENU:
|
|
WinContextHelp(::GetWindowContextHelpId((HWND)wParam), m_hWnd);
|
|
break;
|
|
}
|
|
|
|
return TRUE;
|
|
}
|