WindowsXP-SP1/admin/snapin/filemgmt/sfmsess.cpp
2020-09-30 16:53:49 +02:00

291 lines
6.7 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corp., 1997 **/
/**********************************************************************/
/*
sfmsess.cpp
Implementation for the sessions property page.
FILE HISTORY:
8/20/97 ericdav Code moved into file managemnet snapin
*/
#include "stdafx.h"
#include "sfmcfg.h"
#include "sfmsess.h"
#include "sfmutil.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CMacFilesSessions property page
IMPLEMENT_DYNCREATE(CMacFilesSessions, CPropertyPage)
CMacFilesSessions::CMacFilesSessions() : CPropertyPage(CMacFilesSessions::IDD)
{
//{{AFX_DATA_INIT(CMacFilesSessions)
//}}AFX_DATA_INIT
}
CMacFilesSessions::~CMacFilesSessions()
{
}
void CMacFilesSessions::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CMacFilesSessions)
DDX_Control(pDX, IDC_EDIT_MESSAGE, m_editMessage);
DDX_Control(pDX, IDC_STATIC_SESSIONS, m_staticSessions);
DDX_Control(pDX, IDC_STATIC_FORKS, m_staticForks);
DDX_Control(pDX, IDC_STATIC_FILE_LOCKS, m_staticFileLocks);
DDX_Control(pDX, IDC_BUTTON_SEND, m_buttonSend);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CMacFilesSessions, CPropertyPage)
//{{AFX_MSG_MAP(CMacFilesSessions)
ON_BN_CLICKED(IDC_BUTTON_SEND, OnButtonSend)
ON_EN_CHANGE(IDC_EDIT_MESSAGE, OnChangeEditMessage)
ON_WM_HELPINFO()
ON_WM_CONTEXTMENU()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CMacFilesSessions message handlers
BOOL CMacFilesSessions::OnApply()
{
// TODO: Add your specialized code here and/or call the base class
return CPropertyPage::OnApply();
}
BOOL CMacFilesSessions::OnKillActive()
{
// TODO: Add your specialized code here and/or call the base class
return CPropertyPage::OnKillActive();
}
void CMacFilesSessions::OnOK()
{
// TODO: Add your specialized code here and/or call the base class
CPropertyPage::OnOK();
}
BOOL CMacFilesSessions::OnSetActive()
{
// TODO: Add your specialized code here and/or call the base class
return CPropertyPage::OnSetActive();
}
void CMacFilesSessions::OnButtonSend()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
AFP_MESSAGE_INFO AfpMsg;
CString strMessage;
DWORD err;
if ( !g_SfmDLL.LoadFunctionPointers() )
return;
//
// Message goes to everybody
//
AfpMsg.afpmsg_session_id = 0;
//
// Attempt to send the message
//
m_editMessage.GetWindowText(strMessage);
//
// Was there any text? -- should never happen
//
if (strMessage.IsEmpty())
{
CString strTemp;
strTemp.LoadString(IDS_NEED_TEXT_TO_SEND);
::AfxMessageBox(IDS_NEED_TEXT_TO_SEND);
m_editMessage.SetFocus();
return;
}
//
// Message too long? -- should never happen
//
if (strMessage.GetLength() > AFP_MESSAGE_LEN)
{
CString strTemp;
strTemp.LoadString(IDS_MESSAGE_TOO_LONG);
::AfxMessageBox(strTemp);
m_editMessage.SetFocus();
m_editMessage.SetSel(0, -1);
return;
}
AfpMsg.afpmsg_text = (LPWSTR) ((LPCTSTR) strMessage);
err = ((MESSAGESENDPROC) g_SfmDLL[AFP_MESSAGE_SEND])(m_pSheet->m_hAfpServer, &AfpMsg);
CString strTemp;
switch( err )
{
case AFPERR_InvalidId:
strTemp.LoadString(IDS_SESSION_DELETED);
::AfxMessageBox(strTemp);
break;
case NO_ERROR:
strTemp.LoadString(IDS_MESSAGE_SENT);
::AfxMessageBox(strTemp, MB_ICONINFORMATION);
break;
case AFPERR_InvalidSessionType:
strTemp.LoadString(IDS_NOT_RECEIVED);
::AfxMessageBox(strTemp);
break;
default:
::SFMMessageBox(err);
break;
}
}
BOOL CMacFilesSessions::OnInitDialog()
{
CPropertyPage::OnInitDialog();
DWORD err;
if ( !g_SfmDLL.LoadFunctionPointers() )
return S_OK;
//
// This string will contain our "??" string.
//
const TCHAR * pszNotAvail = _T("??");
//
// Retrieve the statitistics server info.
//
PAFP_STATISTICS_INFO pAfpStats;
err = ((STATISTICSGETPROC) g_SfmDLL[AFP_STATISTICS_GET])(m_pSheet->m_hAfpServer, (LPBYTE*)&pAfpStats);
if( err == NO_ERROR )
{
CString strTemp;
strTemp.Format(_T("%u"), pAfpStats->stat_CurrentSessions);
m_staticSessions.EnableWindow(TRUE);
m_staticSessions.SetWindowText(strTemp);
strTemp.Format(_T("%u"), pAfpStats->stat_CurrentFilesOpen);
m_staticForks.EnableWindow(TRUE);
m_staticForks.SetWindowText(strTemp);
strTemp.Format(_T("%u"), pAfpStats->stat_CurrentFileLocks);
m_staticFileLocks.EnableWindow(TRUE);
m_staticFileLocks.SetWindowText(strTemp);
((SFMBUFFERFREEPROC) g_SfmDLL[AFP_BUFFER_FREE])(pAfpStats);
}
else
{
m_staticSessions.SetWindowText(pszNotAvail);
m_staticSessions.EnableWindow(FALSE);
m_staticForks.SetWindowText(pszNotAvail);
m_staticForks.EnableWindow(FALSE);
m_staticFileLocks.SetWindowText(pszNotAvail);
m_staticFileLocks.EnableWindow(FALSE);
}
//
// Setup the message edit box
//
m_editMessage.SetLimitText(AFP_MESSAGE_LEN);
m_editMessage.FmtLines(FALSE);
//
// Set the state of the send button
//
OnChangeEditMessage();
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CMacFilesSessions::OnChangeEditMessage()
{
CString strTemp;
m_editMessage.GetWindowText(strTemp);
if (strTemp.IsEmpty())
{
//
// Disable the send button
//
m_buttonSend.EnableWindow(FALSE);
}
else
{
//
// Enable the send button
//
m_buttonSend.EnableWindow(TRUE);
}
}
BOOL CMacFilesSessions::OnHelpInfo(HELPINFO* pHelpInfo)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (pHelpInfo->iContextType == HELPINFO_WINDOW)
{
::WinHelp ((HWND)pHelpInfo->hItemHandle,
m_pSheet->m_strHelpFilePath,
HELP_WM_HELP,
g_aHelpIDs_CONFIGURE_SFM);
}
return TRUE;
}
void CMacFilesSessions::OnContextMenu(CWnd* pWnd, CPoint /*point*/)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
if (this == pWnd)
return;
::WinHelp (pWnd->m_hWnd,
m_pSheet->m_strHelpFilePath,
HELP_CONTEXTMENU,
g_aHelpIDs_CONFIGURE_SFM);
}