Source code of Windows XP (NT5)
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.
 
 
 
 
 
 

323 lines
5.6 KiB

/*++
Copyright (c) 1994-2001 Microsoft Corporation
Module Name :
fmessage.cpp
Abstract:
FTP Messages property page
Author:
Ronald Meijer (ronaldm)
Sergei Antonov (sergeia)
Project:
Internet Services Manager
Revision History:
--*/
//
// Include Files
//
#include "stdafx.h"
#include "common.h"
#include "inetprop.h"
#include "InetMgrApp.h"
#include "shts.h"
#include "ftpsht.h"
#include "fmessage.h"
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
IMPLEMENT_DYNCREATE(CFtpMessagePage, CInetPropertyPage)
CFtpMessagePage::CFtpMessagePage(
IN CInetPropertySheet * pSheet
)
/*++
Routine Description:
Constructor for FTP message property page
Arguments:
CInetPropertySheet * pSheet : Associated property sheet
Return Value:
N/A
--*/
: CInetPropertyPage(CFtpMessagePage::IDD, pSheet)
{
#ifdef _DEBUG
afxMemDF |= checkAlwaysMemDF;
#endif // _DEBUG
#if 0 // Keep class wizard happy
//{{AFX_DATA_INIT(CFtpMessagePage)
m_strExitMessage = _T("");
m_strMaxConMsg = _T("");
m_strWelcome = _T("");
//}}AFX_DATA_INIT
#endif // 0
m_hInstRichEdit = LoadLibrary(_T("RichEd20.dll"));
}
CFtpMessagePage::~CFtpMessagePage()
/*++
Routine Description:
Destructor
Arguments:
N/A
Return Value:
N/A
--*/
{
if (m_hInstRichEdit != NULL)
FreeLibrary(m_hInstRichEdit);
}
void
CFtpMessagePage::DoDataExchange(
IN CDataExchange * pDX
)
/*++
Routine Description:
Initialise/Store control data
Arguments:
CDataExchange * pDX - DDX/DDV control structure
Return Value:
None
--*/
{
CInetPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFtpMessagePage)
DDX_Control(pDX, IDC_EDIT_EXIT, m_edit_Exit);
DDX_Control(pDX, IDC_EDIT_MAX_CONNECTIONS, m_edit_MaxCon);
DDX_Text(pDX, IDC_EDIT_EXIT, m_strExitMessage);
DDX_Text(pDX, IDC_EDIT_MAX_CONNECTIONS, m_strMaxConMsg);
DDX_Text(pDX, IDC_EDIT_WELCOME, m_strWelcome);
DDX_Text(pDX, IDC_EDIT_BANNER, m_strBanner);
//}}AFX_DATA_MAP
}
//
// Message Map
//
BEGIN_MESSAGE_MAP(CFtpMessagePage, CInetPropertyPage)
//{{AFX_MSG_MAP(CFtpMessagePage)
//}}AFX_MSG_MAP
ON_EN_CHANGE(IDC_EDIT_EXIT, OnItemChanged)
ON_EN_CHANGE(IDC_EDIT_MAX_CONNECTIONS, OnItemChanged)
ON_EN_CHANGE(IDC_EDIT_WELCOME, OnItemChanged)
ON_EN_CHANGE(IDC_EDIT_BANNER, OnItemChanged)
END_MESSAGE_MAP()
//
// Message Handlers
//
// <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
BOOL
CFtpMessagePage::OnInitDialog()
/*++
Routine Description:
WM_INITDIALOG handler. Initialize the dialog.
Arguments:
None.
Return Value:
TRUE if no focus is to be set automatically, FALSE if the focus
is already set.
--*/
{
CInetPropertyPage::OnInitDialog();
CHARFORMAT cf;
ZeroMemory(&cf, sizeof(cf));
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_FACE;
cf.bPitchAndFamily = FIXED_PITCH | FF_DONTCARE;
lstrcpyn((LPTSTR)cf.szFaceName, _T("Courier"), LF_FACESIZE);
SendDlgItemMessage(IDC_EDIT_WELCOME, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
SendDlgItemMessage(IDC_EDIT_BANNER, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
DWORD event = (DWORD)SendDlgItemMessage(IDC_EDIT_WELCOME, EM_GETEVENTMASK, 0, 0);
event |= ENM_CHANGE;
SendDlgItemMessage(IDC_EDIT_WELCOME, EM_SETEVENTMASK, 0, (LPARAM)event);
event = (DWORD)SendDlgItemMessage(IDC_EDIT_BANNER, EM_GETEVENTMASK, 0, 0);
event |= ENM_CHANGE;
SendDlgItemMessage(IDC_EDIT_BANNER, EM_SETEVENTMASK, 0, (LPARAM)event);
return TRUE;
}
/* virtual */
HRESULT
CFtpMessagePage::FetchLoadedValues()
/*++
Routine Description:
Move configuration data from sheet to dialog controls
Arguments:
None
Return Value:
HRESULT
--*/
{
CError err;
BEGIN_META_INST_READ(CFtpSheet)
//
// Use m_ notation because the message cracker functions require it.
//
CStringListEx m_strlWelcome, m_strlBanner;
FETCH_INST_DATA_FROM_SHEET(m_strExitMessage);
FETCH_INST_DATA_FROM_SHEET(m_strMaxConMsg);
FETCH_INST_DATA_FROM_SHEET(m_strlWelcome);
FETCH_INST_DATA_FROM_SHEET(m_strlBanner);
//
// Incoming strings contain '\r' at the end of each string.
// Append a '\n' for internal consumption
//
ConvertStringListToSepLine(m_strlWelcome, m_strWelcome, _T("\n"));
ConvertStringListToSepLine(m_strlBanner, m_strBanner, _T("\n"));
END_META_INST_READ(err)
return err;
}
/* virtual */
HRESULT
CFtpMessagePage::SaveInfo()
/*++
Routine Description:
Save the information on this property page
Arguments:
None
Return Value:
Error return code
--*/
{
ASSERT(IsDirty());
TRACEEOLID("Saving FTP message page now...");
CError err;
BeginWaitCursor();
//
// Use m_ notation because the message cracker macros require
// it.
//
CStringListEx m_strlWelcome, m_strlBanner;
ConvertSepLineToStringList(m_strWelcome, m_strlWelcome, _T("\n"));
ConvertSepLineToStringList(m_strBanner, m_strlBanner, _T("\n"));
BEGIN_META_INST_WRITE(CFtpSheet)
STORE_INST_DATA_ON_SHEET(m_strExitMessage)
STORE_INST_DATA_ON_SHEET(m_strMaxConMsg)
STORE_INST_DATA_ON_SHEET(m_strlWelcome)
STORE_INST_DATA_ON_SHEET(m_strlBanner)
END_META_INST_WRITE(err)
EndWaitCursor();
return err;
}
void
CFtpMessagePage::OnItemChanged()
/*++
Routine Description:
Register a change in control value on this page. Mark the page as dirty.
All change messages map to this function
Arguments:
None
Return Value:
None
--*/
{
SetModified(TRUE);
}