/**********************************************************************/ /** 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); }