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.
 
 
 
 
 
 

323 lines
6.5 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)
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()
BOOL
CFtpMessagePage::OnInitDialog()
{
CInetPropertyPage::OnInitDialog();
CHARFORMAT2 cf;
ZeroMemory(&cf, sizeof(cf));
cf.cbSize = sizeof(cf);
cf.dwMask = CFM_FACE | CFM_WEIGHT;
cf.wWeight = FW_REGULAR;
lstrcpyn((LPTSTR)cf.szFaceName, _T("Courier New"), LF_FACESIZE);
DWORD event;
if (GetSheet()->QueryMajorVersion() >= 6)
{
SendDlgItemMessage(IDC_EDIT_BANNER, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
event = (DWORD)SendDlgItemMessage(IDC_EDIT_BANNER, EM_GETEVENTMASK, 0, 0);
event |= ENM_CHANGE;
SendDlgItemMessage(IDC_EDIT_BANNER, EM_SETEVENTMASK, 0, (LPARAM)event);
}
else
{
CRect rcText, rcBanner, rcWelcome;
CWnd * pbt, * pwt, * pbe, * pwe;
pbt = GetDlgItem(IDC_STATIC_BANNER);
pbe = GetDlgItem(IDC_EDIT_BANNER);
pwt = GetDlgItem(IDC_STATIC_WELCOME);
pwe = GetDlgItem(IDC_EDIT_WELCOME);
pbt->GetWindowRect(&rcText);
ScreenToClient(&rcText);
pbe->GetWindowRect(&rcBanner);
ScreenToClient(&rcBanner);
pbt->EnableWindow(FALSE);
pbt->ShowWindow(SW_HIDE);
pbe->EnableWindow(FALSE);
pbe->ShowWindow(SW_HIDE);
pwt->SetWindowPos(NULL, rcText.left, rcText.top, 0, 0,
SWP_NOSIZE | SWP_NOZORDER);
pwe->GetWindowRect(&rcWelcome);
ScreenToClient(&rcWelcome);
pwe->SetWindowPos(NULL, rcBanner.left, rcBanner.top,
rcWelcome.Width(), rcWelcome.bottom - rcBanner.top,
SWP_NOZORDER);
}
SendDlgItemMessage(IDC_EDIT_WELCOME, EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf);
event = (DWORD)SendDlgItemMessage(IDC_EDIT_WELCOME, EM_GETEVENTMASK, 0, 0);
event |= ENM_CHANGE;
SendDlgItemMessage(IDC_EDIT_WELCOME, 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);
}