windows-nt/Source/XPSP1/NT/enduser/netmeeting/nmrk/dslist.cpp
2020-09-26 16:20:57 +08:00

199 lines
5.1 KiB
C++

#include "precomp.h"
#include "resource.h"
#include <algorithm>
#include "global.h"
#include "PropPg.h"
#include "DSList.h"
#include "NmAkWiz.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
// Static member vars
CCallModeSheet* CCallModeSheet::ms_pCallModeSheet = NULL;
////////////////////////////////////////////////////////////////////////////////////////////////////
// Static member fns
BOOL APIENTRY CCallModeSheet::DlgProc( HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam ) {
TCHAR sz[ MAX_PATH ];
switch( message )
{
case WM_INITDIALOG:
ms_pCallModeSheet->_InitDialog(hDlg);
ms_pCallModeSheet->_CreatePropWnd(hDlg);
return TRUE;
case WM_COMMAND:
{
if (ms_pCallModeSheet)
{
if (ms_pCallModeSheet->m_fGkActive)
{
if (ms_pCallModeSheet->m_pGkPropWnd)
return(ms_pCallModeSheet->m_pGkPropWnd->DoCommand(wParam, lParam));
}
else
{
if (ms_pCallModeSheet->m_pDsPropWnd)
return(ms_pCallModeSheet->m_pDsPropWnd->DoCommand(wParam, lParam));
}
}
break;
}
case WM_NOTIFY:
switch( reinterpret_cast< NMHDR FAR* >( lParam )->code ) {
case PSN_QUERYCANCEL:
SetWindowLong( hDlg, DWL_MSGRESULT, !VerifyExitMessageBox());
return TRUE;
case PSN_SETACTIVE:
g_hwndActive = hDlg;
ms_pCallModeSheet->m_fGkActive = g_pWiz->m_SettingsSheet.IsGateKeeperModeSelected();
if (ms_pCallModeSheet->m_fGkActive)
{
if (ms_pCallModeSheet->m_pDsPropWnd)
ms_pCallModeSheet->m_pDsPropWnd->ShowWindow( FALSE );
if (ms_pCallModeSheet->m_pGkPropWnd)
ms_pCallModeSheet->m_pGkPropWnd->ShowWindow( TRUE );
}
else
{
if (ms_pCallModeSheet->m_pGkPropWnd)
ms_pCallModeSheet->m_pGkPropWnd->ShowWindow( FALSE );
if (ms_pCallModeSheet->m_pDsPropWnd)
ms_pCallModeSheet->m_pDsPropWnd->ShowWindow( TRUE );
}
PropSheet_SetWizButtons( GetParent( hDlg ), PSWIZB_NEXT | PSWIZB_BACK );
return TRUE;
case PSN_WIZNEXT:
if (ms_pCallModeSheet->m_fGkActive)
{
if (ms_pCallModeSheet->m_pGkPropWnd)
ms_pCallModeSheet->m_pGkPropWnd->QueryWizNext();
}
else
{
if (ms_pCallModeSheet->m_pDsPropWnd)
ms_pCallModeSheet->m_pDsPropWnd->QueryWizNext();
}
return TRUE;
}
default:
break;
}
return FALSE;
}
////////////////////////////////////////////////////////////////////////////////////////////////////
// Member fns
CCallModeSheet::CCallModeSheet( void )
: m_PropertySheetPage( MAKEINTRESOURCE( IDD_PROPPAGE_DEFAULT ),
( DLGPROC ) CCallModeSheet::DlgProc /*,
PSP_HASHELP */
),
m_pDsPropWnd( NULL ),
m_pGkPropWnd( NULL ),
m_fGkActive( FALSE )
{
assert(ms_pCallModeSheet == NULL);
ms_pCallModeSheet = this;
}
void CCallModeSheet::_CreatePropWnd(HWND hDlg)
{
RECT rect;
GetClientRect(hDlg, &rect );
int iHeight = rect.bottom;
int iWidth = rect.right - CPropertyDataWindow2::mcs_iLeft;
m_pDsPropWnd = new CDsPropWnd2(hDlg, CPropertyDataWindow2::mcs_iLeft,
CPropertyDataWindow2::mcs_iTop, iWidth, iHeight );
m_pGkPropWnd = new CGkPropWnd2(hDlg, CPropertyDataWindow2::mcs_iLeft,
CPropertyDataWindow2::mcs_iTop, iWidth, iHeight );
}
CCallModeSheet::~CCallModeSheet( void )
{
delete m_pDsPropWnd;
m_pDsPropWnd = NULL;
delete m_pGkPropWnd;
m_pGkPropWnd = NULL;
ms_pCallModeSheet = NULL;
}
void CCallModeSheet::_InitDialog(HWND hDlg)
{
// Set the buttons
PropSheet_SetWizButtons( GetParent(hDlg ), PSWIZB_NEXT | PSWIZB_BACK );
}
int CCallModeSheet::SpewToListBox(HWND hwndList, int iStartLine )
{
if (m_fGkActive)
{
if (m_pGkPropWnd)
iStartLine = m_pGkPropWnd->SpewToListBox(hwndList, iStartLine);
}
else
{
if (m_pDsPropWnd)
iStartLine = m_pDsPropWnd->SpewToListBox(hwndList, iStartLine);
}
return(iStartLine);
}
void CCallModeSheet::PrepSettings(void)
{
if (m_pDsPropWnd)
m_pDsPropWnd->PrepSettings(m_fGkActive);
if (m_pGkPropWnd)
m_pGkPropWnd->PrepSettings(m_fGkActive);
}
void CCallModeSheet::WriteSettings(void)
{
if (m_pDsPropWnd)
m_pDsPropWnd->WriteSettings(m_fGkActive);
if (m_pGkPropWnd)
m_pGkPropWnd->WriteSettings(m_fGkActive);
}
BOOL CCallModeSheet::WriteToINF(HANDLE hFile)
{
if (m_pDsPropWnd)
m_pDsPropWnd->WriteToINF(m_fGkActive, hFile);
if (m_pGkPropWnd)
m_pGkPropWnd->WriteToINF(m_fGkActive, hFile);
return TRUE;
}