|
|
#include "precomp.h"
#include "resource.h"
#include "PropWnd2.h"
#include "WndProcs.h"
#include "nmakwiz.h"
#include "nmakreg.h"
#include <algorithm>
const int CPropertyDataWindow2::mcs_iTop = 0; const int CPropertyDataWindow2::mcs_iLeft = 150; const int CPropertyDataWindow2::mcs_iBorder = 15;
/* static */ map< UINT, CPolicyData::eKeyType > CPropertyDataWindow2::ms_ClassMap; /* static */ map< UINT, TCHAR* > CPropertyDataWindow2::ms_KeyMap; /* static */ map< UINT, TCHAR* > CPropertyDataWindow2::ms_ValueMap;
LRESULT CALLBACK DefaultProc( HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam ) { switch( iMsg ) { case WM_VSCROLL: { OnMsg_VScroll( hwnd, wParam ); return 0; break; } case WM_COMMAND: { return 0; } } return( DefWindowProc( hwnd, iMsg, wParam, lParam ) ); }
CPropertyDataWindow2::CPropertyDataWindow2( HWND hwndParent, UINT uIDD, LPTSTR szClassName, UINT PopUpHelpMenuTextId, int iX, int iY, int iWidth, int iHeight, BOOL bScroll ) : m_hwnd( NULL ), m_IDD( uIDD ), m_wndProc( (WNDPROC) DefaultProc), m_bInit( FALSE ), m_hwndParent( hwndParent ) { m_szClassName = new TCHAR[ lstrlen( szClassName ) + 1 ]; lstrcpy( m_szClassName, szClassName ); _InitWindow(); _SizeWindow( iX, iY, iWidth, iHeight ); if( bScroll ) { _PrepScrollBars(); } ShowWindow( FALSE ); }
CPropertyDataWindow2::CPropertyDataWindow2( HWND hwndParent, UINT uIDD, LPTSTR szClassName, WNDPROC wndProc, UINT PopUpHelpMenuTextId, int iX, int iY, int iWidth, int iHeight, BOOL bScroll ) : m_IDD( uIDD ), m_hwnd( NULL ), m_wndProc( wndProc ), m_bInit( FALSE ), m_hwndParent( hwndParent ) { m_szClassName = new TCHAR[ lstrlen( szClassName ) + 1 ]; lstrcpy( m_szClassName, szClassName ); _InitWindow(); _SizeWindow( iX, iY, iWidth, iHeight ); if( bScroll ) { _PrepScrollBars(); } ShowWindow( FALSE ); }
CPropertyDataWindow2::~CPropertyDataWindow2( void ) { delete [] m_szClassName; list< CControlID * >::iterator it; for( it = m_condList.begin(); it != m_condList.end(); it++ ) { delete *it; } for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ ) { delete *it; }
}
void CPropertyDataWindow2::Reset() { list< HWND >::iterator i;
for( i = m_enableList.begin(); i != m_enableList.end(); i++ ) { switch (GetWindowLong(*i, GWL_STYLE) & 0x0F) { case BS_AUTORADIOBUTTON: case BS_RADIOBUTTON: // Do nothing -- we always want default item checked
break;
default: Button_SetCheck(*i, FALSE); break; } }
list< CControlID * >::iterator it; for( it = m_condList.begin(); it != m_condList.end(); it++ ) { (*it)->Reset( m_hwnd ); } for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ ) { (*it)->Reset( m_hwnd ); } }
void CPropertyDataWindow2::SetEnableListID( UINT uCount, ... ) { UINT uID; HWND hwnd; va_list ap; va_start( ap, uCount );
while( uCount ) { uID = va_arg( ap, UINT ); uCount--; if( NULL == ( hwnd = GetDlgItem( m_hwnd, uID ) ) ) { OutputDebugString( TEXT("Enabling Invalid ID\n") ); } else { m_checkIDList.push_front( uID ); m_enableList.push_front( hwnd ); } } va_end( ap ); }
BOOL CPropertyDataWindow2::SetFocus( UINT id ) { return ::SetFocus( GetDlgItem( m_hwnd, id ) ) ? TRUE : FALSE; }
void CPropertyDataWindow2::SetEditData( UINT id, TCHAR* sz ) { Edit_SetText( GetDlgItem( m_hwnd, id ), sz ); }
void CPropertyDataWindow2::GetEditData( UINT id, LPTSTR sz, ULONG cb ) const { Edit_GetText( GetDlgItem( m_hwnd, id ), sz, cb ); }
ULONG CPropertyDataWindow2::GetEditDataLen( UINT id ) const { return Edit_GetTextLength( GetDlgItem( m_hwnd, id ) ); }
BOOL CPropertyDataWindow2::GetCheck( UINT id ) const { return(Button_GetCheck( GetDlgItem( m_hwnd, id ) ) ? TRUE : FALSE); }
void CPropertyDataWindow2::SetCheck( UINT id, BOOL bCheck ) { Button_SetCheck( GetDlgItem( m_hwnd, id ), bCheck ); }
void CPropertyDataWindow2::ShowWindow( BOOL bShowWindow /* = TRUE */ ) { ::ShowWindow( m_hwnd, bShowWindow ? SW_SHOW : SW_HIDE ); }
void CPropertyDataWindow2::EnableWindow( BOOL bEnable /* = TRUE */ ) { list< HWND >::const_iterator it; for (it = m_enableList.begin(); it != m_enableList.end(); ++it) { ::EnableWindow( (HWND)(*it), bEnable ); }
if( m_specialControlList.size() ) { list< CControlID * >::const_iterator iter; for( iter = m_specialControlList.begin(); iter != m_specialControlList.end(); iter++ ) { switch( (*iter)->GetType() ) { case CControlID::CHECK: case CControlID::SLIDER: case CControlID::EDIT: case CControlID::EDIT_NUM: case CControlID::STATIC: case CControlID::COMBO: { HWND hwnd = GetDlgItem( m_hwnd, (*iter)->GetID() ); ::EnableWindow( hwnd, bEnable ); break; } default: OutputDebugString( TEXT("CPropertyDataWindow2::EnableWindow: unknown CControlID::type\n") ); assert( 0 ); break; } } }
if( m_condList.size() ) { list< CControlID * >::const_iterator iter; for( iter = m_condList.begin(); iter != m_condList.end(); iter++ ) { ::EnableWindow( (*iter)->GetCondHwnd(), bEnable ); } } }
BOOL CPropertyDataWindow2::_InitWindow( void ) {
if( FALSE == m_bInit ) { WNDCLASSEX wc; ZeroMemory( &wc, sizeof( WNDCLASSEX ) ); wc . cbSize = sizeof( WNDCLASSEX ); wc . style = 0; wc . cbWndExtra = DLGWINDOWEXTRA; wc . hInstance = g_hInstance; wc . lpfnWndProc = m_wndProc; wc . lpszClassName = m_szClassName; if( 0 == RegisterClassEx( &wc ) ) { return FALSE; } //m_hwnd = CreateDialogParam( g_hInstance, MAKEINTRESOURCE( m_IDD ), m_hwndParent, NULL/*(DLGPROC)m_wndProc*/, 0 );
m_hwnd = CreateDialogParam( g_hInstance, MAKEINTRESOURCE( m_IDD ), m_hwndParent, NULL, 0 ); if( NULL == m_hwnd ) { ErrorMessage( TEXT("CPropertyDataWindow2::_InitWindow"), GetLastError() ); } m_bInit = TRUE; } return TRUE; }
BOOL CPropertyDataWindow2::_SizeWindow( int X, int Y, int Width, int Height ) { GetClientRect( m_hwnd, &m_rect ); return SetWindowPos( m_hwnd, // handle to window
HWND_TOP, // placement-order handle
X, // horizontal position
Y, // vertical position
Width, // width
Height, // height
0 // window-positioning flags
); }
void CPropertyDataWindow2::_PrepScrollBars() { RECT clientRect; GetClientRect( m_hwnd, &clientRect );
int iTotalHeight = (m_rect.bottom - m_rect.top); int iVisible = clientRect.bottom - clientRect.top;
if( iTotalHeight <= iVisible ) { return; }
SCROLLINFO ScrollInfo; ScrollInfo . cbSize = sizeof( SCROLLINFO ); ScrollInfo . fMask = SIF_ALL; ScrollInfo . nMin = 0; ScrollInfo . nMax = iTotalHeight; // Make the scroll bar scroll 4/5th of a screen per page
ScrollInfo . nPage = MulDiv( iVisible, 4, 5 ); ScrollInfo . nPos = 0; SetScrollInfo( m_hwnd, SB_VERT, &ScrollInfo, 0 ); }
void CPropertyDataWindow2::AddControl( CControlID *pControlID ) { m_specialControlList.push_front( pControlID ); }
void CPropertyDataWindow2::ConnectControlsToCheck( UINT idCheck, UINT uCount, ... ) { HWND hwndCheck = GetDlgItem( m_hwnd, idCheck ); PSUBDATA pSubData = new SUBDATA; pSubData -> proc = SubclassWindow( hwndCheck, wndProcForCheckTiedToEdit );
va_list ap; va_start( ap, uCount );
while( uCount ) { uCount--; CControlID *pControlID = va_arg( ap, CControlID * ); m_condList.push_front( pControlID );
switch( pControlID->GetType() ) { case CControlID::STATIC: case CControlID::CHECK: case CControlID::SLIDER: case CControlID::EDIT: case CControlID::EDIT_NUM: case CControlID::COMBO: { HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() ); pSubData->list.push_front( hwnd ); break; } default: OutputDebugString( TEXT("CPropertyDataWindow2::ConnectControlsToCheck: unknown CControlID::type\n") ); break;
} }
SetWindowLong( hwndCheck, GWL_USERDATA, (long)pSubData ); }
BOOL CPropertyDataWindow2::WriteStringValue ( LPCTSTR szKeyName, LPCTSTR szValue ) { TCHAR szFile[MAX_PATH];
//
// We SAVE settings to the file on the finish page.
//
g_pWiz->m_FinishSheet.GetFilePane()->GetPathAndFile(szFile);
return(WritePrivateProfileString(SECTION_SETTINGS, szKeyName, szValue, szFile)); }
BOOL CPropertyDataWindow2::WriteNumberValue ( LPCTSTR szKeyName, int nValue ) { TCHAR szValue[MAX_DIGITS]; TCHAR szFile[MAX_PATH];
//
// We SAVE settings to the file on the finish page.
//
g_pWiz->m_FinishSheet.GetFilePane()->GetPathAndFile(szFile);
wsprintf(szValue, "%d", nValue); return(WritePrivateProfileString(SECTION_SETTINGS, szKeyName, szValue, szFile)); }
void CPropertyDataWindow2::ReadStringValue ( LPCTSTR szKeyName, LPTSTR szValue, UINT cchMax ) { TCHAR szFile[MAX_PATH];
//
// We READ settings from the file on the intro page.
//
g_pWiz->m_IntroSheet.GetFilePane()->GetPathAndFile(szFile);
GetPrivateProfileString(SECTION_SETTINGS, szKeyName, TEXT(""), szValue, cchMax, szFile); }
void CPropertyDataWindow2::ReadNumberValue ( LPCTSTR szKeyName, int * pnValue ) { TCHAR szFile[MAX_PATH];
//
// We READ settings from the file on the intro page.
//
g_pWiz->m_IntroSheet.GetFilePane()->GetPathAndFile(szFile);
*pnValue = GetPrivateProfileInt(SECTION_SETTINGS, szKeyName, 0, szFile); }
void CPropertyDataWindow2::ReadSettings() { list< CControlID *>::const_iterator it;
_ReadCheckSettings();
for( it = m_condList.begin(); it != m_condList.end(); it++ ) { _ReadCheckSetting( (*it)->GetCondID() ); switch( (*it)->GetType() ) { case CControlID::STATIC: break;
case CControlID::EDIT: case CControlID::EDIT_NUM: _ReadEditSetting( (*it)->GetID() ); break; case CControlID::CHECK: _ReadCheckSetting( (*it)->GetID() ); break; case CControlID::COMBO: _ReadComboSetting( (*it)->GetID() ); break; case CControlID::SLIDER: _ReadSliderSetting( (*it) ); break; default: OutputDebugString( TEXT("CPropertyDataWindow2::ReadSettings: unknown CControlID::type\n") ); assert( 0 ); break; } }
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ ) { switch( (*it)->GetType() ) { case CControlID::STATIC: break;
case CControlID::EDIT: case CControlID::EDIT_NUM: _ReadEditSetting( (*it)->GetID() ); break; case CControlID::CHECK: _ReadCheckSetting( (*it)->GetID() ); break; case CControlID::COMBO: _ReadComboSetting( (*it)->GetID() ); break; case CControlID::SLIDER: _ReadSliderSetting( (*it) ); break; default: OutputDebugString( TEXT("CPropertyDataWindow2::ReadSettings: unknown CControlID::type\n") ); assert( 0 ); break; } } }
BOOL CPropertyDataWindow2::WriteSettings() { list< CControlID *>::const_iterator it;
_WriteCheckSettings();
for( it = m_condList.begin(); it != m_condList.end(); it++ ) { _WriteCheckSetting( (*it)->GetCondID() ); switch( (*it)->GetType() ) { case CControlID::EDIT: case CControlID::EDIT_NUM: _WriteEditSetting( (*it)->GetID() ); break; case CControlID::CHECK: _WriteCheckSetting( (*it)->GetID() ); break; case CControlID::COMBO: _WriteComboSetting( (*it)->GetID() ); break; case CControlID::SLIDER: _WriteSliderSetting( (*it)->GetID() ); break; case CControlID::STATIC: break;
default: OutputDebugString( TEXT("CPropertyDataWindow2::WriteSettings: unknown CControlID::type\n") ); assert( 0 ); break; } }
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ ) { switch( (*it)->GetType() ) { case CControlID::EDIT: case CControlID::EDIT_NUM: _WriteEditSetting( (*it)->GetID() ); break; case CControlID::CHECK: _WriteCheckSetting( (*it)->GetID() ); break; case CControlID::COMBO: _WriteComboSetting( (*it)->GetID() ); break; case CControlID::SLIDER: _WriteSliderSetting( (*it)->GetID() ); break; case CControlID::STATIC: break; default: OutputDebugString( TEXT("CPropertyDataWindow2::WriteSettings: unknown CControlID::type\n") ); assert( 0 ); break; } }
return TRUE; }
void CPropertyDataWindow2::_ReadEditSetting( UINT EditID ) { TCHAR szKeyName[8]; TCHAR szSetting[512];
wsprintf( szKeyName, TEXT("%d"), EditID );
ReadStringValue(szKeyName, szSetting, CCHMAX(szSetting)); SetEditData(EditID, szSetting); }
BOOL CPropertyDataWindow2::_WriteEditSetting( UINT EditID ) { BOOL fSuccess; int iLen = GetEditDataLen( EditID ) + 1; LPTSTR szData = new TCHAR[ iLen ]; GetEditData( EditID, szData, iLen );
TCHAR szKeyName[ 8 ]; wsprintf(szKeyName, TEXT("%d"), EditID);
fSuccess = WriteStringValue(szKeyName, szData);
delete [] szData;
return(fSuccess); }
void CPropertyDataWindow2::_ReadIntSetting( UINT ID, int *pData ) { TCHAR szKeyName[ 8 ]; wsprintf( szKeyName, TEXT("%d"), ID );
ReadNumberValue(szKeyName, pData); }
BOOL CPropertyDataWindow2::_WriteIntSetting( UINT ID, int data ) { TCHAR szKeyName[ 8 ];
wsprintf( szKeyName, TEXT("%d"), ID ); return(WriteNumberValue(szKeyName, data)); }
void CPropertyDataWindow2::_ReadSliderSetting( CControlID *pControlID ) { int iPos; UINT ID = pControlID->GetID();
_ReadIntSetting( ID, &iPos);
//
// HACK FOR AV BANDWIDTH -- TrackBars are limited to WORD-sized values
// for range. So the registry has the real value (bits/sec) but we
// represent it in NMRK UI as (kbits/sec).
//
iPos /= 1000;
TrackBar_SetPos( GetDlgItem( m_hwnd, ID ), TRUE, iPos);
TCHAR szPos[ MAX_DIGITS ]; wsprintf( szPos, TEXT("%u"), iPos ); Static_SetText( GetDlgItem( m_hwnd, pControlID->GetStaticID()), szPos ); }
BOOL CPropertyDataWindow2::_WriteSliderSetting( UINT ID ) { int iPos;
//
// HACK FOR AV BANDWIDTH -- TrackBars are limited to WORD-sized values
// for range. So the registry has the real value (bits/sec) but we
// represent it in NMRK UI as (kbits/sec).
//
iPos = TrackBar_GetPos(GetDlgItem(m_hwnd, ID)); iPos *= 1000;
return _WriteIntSetting( ID, iPos); }
void CPropertyDataWindow2::_ReadComboSetting( UINT ID ) { int iSelected;
_ReadIntSetting( ID, &iSelected );
HWND hwndCombo = GetDlgItem( m_hwnd, ID ); ComboBox_SetCurSel( hwndCombo, iSelected ); }
BOOL CPropertyDataWindow2::_WriteComboSetting( UINT ID ) { return _WriteIntSetting( ID, ComboBox_GetCurSel( GetDlgItem( m_hwnd, ID ) ) ); }
void CPropertyDataWindow2::_ReadCheckSetting( UINT ID ) { TCHAR szKeyName[ 8 ]; int nValue;
wsprintf( szKeyName, TEXT("%d"), ID ); ReadNumberValue(szKeyName, &nValue);
CheckDlgButton(m_hwnd, ID, nValue); }
BOOL CPropertyDataWindow2::_WriteCheckSetting( UINT ID ) { TCHAR szKeyName[ MAX_DIGITS ];
wsprintf( szKeyName, TEXT("%d"), ID );
return(WriteNumberValue(szKeyName, IsDlgButtonChecked(m_hwnd, ID))); }
void CPropertyDataWindow2::_ReadCheckSettings() { for( list< UINT >::const_iterator it = m_checkIDList.begin(); it != m_checkIDList.end(); it++ ) { _ReadCheckSetting(*it); } }
BOOL CPropertyDataWindow2::_WriteCheckSettings() { for( list< UINT >::const_iterator it = m_checkIDList.begin(); it != m_checkIDList.end(); it++ ) { if (!_WriteCheckSetting(*it)) { return FALSE; } } return TRUE; }
void CPropertyDataWindow2::MapControlsToRegKeys( void ) { if( 0 != ms_ValueMap.size() ) { return; }
UINT CurrentID; // File Transfer
CurrentID = IDC_PREVENT_THE_USER_FROM_SENDING_FILES; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY;; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_FILETRANSFER_SEND;
CurrentID = IDC_PREVENT_THE_USER_FROM_RECEIVING_FILES; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_FILETRANSFER_RECEIVE;
CurrentID = IDC_EDIT_MAXIMUM_SIZE_OF_SENT_FILES; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_MAX_SENDFILESIZE;
// App Sharing
CurrentID = IDC_DISABLE_ALL_SHARING_FEATURES; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_APP_SHARING;
CurrentID = IDC_DISABLE_WEBDIR; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_WEBDIR;
CurrentID = IDC_DISABLE_WEBDIR_GK; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_WEBDIR;
CurrentID = IDC_PREVENT_SHARING; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_SHARING;
CurrentID = IDC_PREVENT_SHARING_DESKTOP; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_DESKTOP_SHARING;
CurrentID = IDC_PREVENT_SHARING_TRUECOLOR; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_TRUECOLOR_SHARING;
CurrentID = IDC_PREVENT_SHARING_EXPLORER; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_EXPLORER_SHARING;
CurrentID = IDC_PREVENT_SHARING_DOS; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_MSDOS_SHARING;
CurrentID = IDC_PREVENT_SHARING_CONTROL; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_ALLOW_CONTROL;
CurrentID = IDC_DISABLE_RDS_ON_ALL; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_RDS;
CurrentID = IDC_DISABLE_RDS_ON_WIN9X; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_RDS_WIN9X;
// Audio
CurrentID = IDC_CREATE_AN_AUDIO_LOG_FILE; // HKLM
ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE; ms_KeyMap[ CurrentID ] = DEBUG_KEY; ms_ValueMap[ CurrentID ] = REGVAL_RETAIL_LOG;
CurrentID = IDC_CHECK_MUTE_SPEAKER_BY_DEFAULT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_SPKMUTE;
CurrentID = IDC_CHECK_MUTE_MICROPHONE_BY_DEFAULT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_RECMUTE;
CurrentID = IDC_ENABLE_DIRECT_SOUND; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_DIRECTSOUND;
CurrentID = IDC_NOCHANGE_DIRECT_SOUND; ms_ClassMap[CurrentID] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[CurrentID] = POLICIES_KEY; ms_ValueMap[CurrentID] = REGVAL_POL_NOCHANGE_DIRECTSOUND;
CurrentID = IDC_PREVENT_THE_USER_FROM_USING_AUDIO; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_AUDIO;
CurrentID = IDC_DISABLE_FULL_DUPLEX_AUDIO; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_FULLDUPLEX;
// Video
CurrentID = IDC_DISABLE_SENDING_VIDEO; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_VIDEO_SEND;
CurrentID = IDC_DISABLE_RECIEVING_VIDEO; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_VIDEO_RECEIVE;
// Notifications
//
// REMOTE OLDER WARNING is GONE
//
CurrentID = IDC_REQUIRE_COMPLETE_AUTHENTICATION; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_INCOMPLETE_CERTS;
CurrentID = IDC_EDIT_SET_RDN_FOR_REQUIRED_CA; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_LOCAL_MACHINE; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_ISSUER;
// Directory Services
CurrentID = IDC_ALLOW_USER_TO_USE_DIRECTORY_SERVICES; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_DONT_LOGON_ULS;
CurrentID = IDC_PREVENT_THE_USER_FROM_ADDING_NEW_SERVERS; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_ADDING_NEW_ULS;
// Chat
CurrentID = IDC_DISABLE_CHAT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_CHAT;
// Whiteboard
//
// BOGUS BUGBUG LAURABU
// We have OLD and NEW whiteboard
//
CurrentID = IDC_DISABLE_2XWHITEBOARD; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_OLDWHITEBOARD;
CurrentID = IDC_DISABLE_WHITEBOARD; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_NEWWHITEBOARD;
// Online Support
CurrentID = IDC_EDIT_SET_URL_FOR_INTERNAL_SUPPORT_PAGE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_INTRANET_SUPPORT_URL;
CurrentID = IDC_SHOW_THE_ONLINE_SUPPORT_PAGE_THE_FIRST_TIME_NETMEETING_STARTS; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_SHOW_FIRST_TIME_URL;
// Options Dialog
CurrentID = IDC_DISABLE_THE_GENERAL_OPTIONS_PAGE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_GENERALPAGE;
CurrentID = IDC_DISABLE_THE_ADVANCED_CALLING_BUTTON; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_ADVANCEDCALLING;
CurrentID = IDC_DISABLE_THE_SECURITY_OPTIONS_PAGE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_SECURITYPAGE;
CurrentID = IDC_DISABLE_THE_AUDIO_OPTIONS_PAGE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_AUDIOPAGE;
CurrentID = IDC_DISABLE_THE_VIDEO_OPTIONS_PAGE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_VIDEOPAGE;
CurrentID = IDC_DISABLE_AUTOACCEPT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NO_AUTOACCEPTCALLS;
CurrentID = IDC_PERSIST_AUTOACCEPT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_PERSIST_AUTOACCEPTCALLS;
// Security RADIO Options
CurrentID = IDC_RADIO_SECURITY_DEFAULT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_SECURITY;
CurrentID = IDC_RADIO_SECURITY_REQUIRED; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_SECURITY;
CurrentID = IDC_RADIO_SECURITY_DISABLED; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_SECURITY;
// Call mode RADIO options
CurrentID = IDC_RADIO_CALLMODE_DIRECT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_CALLING_MODE;
CurrentID = IDC_RADIO_CALLMODE_GATEKEEPER; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_CALLING_MODE;
// Gateway
CurrentID = IDC_CHECK_GATEWAY; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_USE_H323_GATEWAY;
CurrentID = IDC_EDIT_GATEWAY; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_H323_GATEWAY;
// Gatekeeper addressing RADIO options
CurrentID = IDC_RADIO_GKMODE_ACCOUNT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_GK_METHOD;
CurrentID = IDC_RADIO_GKMODE_PHONE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_GK_METHOD;
CurrentID = IDC_RADIO_GKMODE_BOTH; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_GK_METHOD;
CurrentID = IDC_EDIT_GATEKEEPER; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = CONFERENCING_KEY; ms_ValueMap[ CurrentID ] = REGVAL_GK_SERVER;
CurrentID = IDC_CHECK_NOCHANGECALLMODE; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_NOCHANGECALLMODE;
// AV Throughput
CurrentID = IDC_SLIDE_AV_THROUGHPUT; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_POL_MAX_BANDWIDTH;
// AutoConf
CurrentID = IDC_CHECK_AUTOCONFIG_CLIENTS; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_AUTOCONF_USE;
CurrentID = IDC_AUTOCONF_URL; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = POLICIES_KEY; ms_ValueMap[ CurrentID ] = REGVAL_AUTOCONF_CONFIGFILE; // Network Speed RADIO options
CurrentID = IDC_RADIO_NETSPEED_144; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
CurrentID = IDC_RADIO_NETSPEED_288; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
CurrentID = IDC_RADIO_NETSPEED_ISDN; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
CurrentID = IDC_RADIO_NETSPEED_LAN; ms_ClassMap[ CurrentID ] = CPolicyData::eKeyType_HKEY_CURRENT_USER; ms_KeyMap[ CurrentID ] = AUDIO_KEY; ms_ValueMap[ CurrentID ] = REGVAL_TYPICALBANDWIDTH;
}
BOOL CPropertyDataWindow2::WriteToINF( HANDLE hFile, BOOL bCheckValues ) { list< UINT > condList; list< CControlID *>::const_iterator it;
_WriteChecksToINF( hFile, bCheckValues );
for( it = m_condList.begin(); it != m_condList.end(); it++ ) { if( ms_ValueMap.find( (*it)->GetCondID() ) != ms_ValueMap.end() ) { list< UINT >::const_iterator i; if( (i = find( condList.begin(), condList.end(), (*it)->GetCondID() ) ) == condList.end() ) { condList.push_front( (*it)->GetCondID() ); _WriteCheckToINF( hFile, (*it)->GetCondID(), bCheckValues ); } }
if( bCheckValues) { bCheckValues = Button_GetCheck( (*it)->GetCondHwnd() ); } switch( (*it)->GetType() ) { case CControlID::STATIC: break;
case CControlID::EDIT_NUM: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteEditNumToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::EDIT: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteEditToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::CHECK: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteCheckToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::COMBO: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteComboToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::SLIDER: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteSliderToINF( hFile, (*it)->GetID(), bCheckValues ); } break; default: OutputDebugString( TEXT("CPropertyDataWindow2::WriteToINF: unknown CControlID::type\n") ); assert( 0 ); break; } }
for( it = m_specialControlList.begin(); it != m_specialControlList.end(); it++ ) { switch( (*it)->GetType() ) { case CControlID::STATIC: break;
case CControlID::EDIT_NUM: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteEditNumToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::EDIT: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteEditToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::CHECK: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteCheckToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::COMBO: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteComboToINF( hFile, (*it)->GetID(), bCheckValues ); } break; case CControlID::SLIDER: if( ms_ValueMap.find( (*it)->GetID() ) != ms_ValueMap.end() ) { _WriteSliderToINF( hFile, (*it)->GetID(), bCheckValues ); } break; default: OutputDebugString( TEXT("CPropertyDataWindow2::WriteToINF: unknown CControlID::type\n") ); assert( 0 ); break; } }
return TRUE; }
void CPropertyDataWindow2::_WriteCheckToINF( HANDLE hFile, UINT ID, BOOL bCheckValues ) { HWND hwndButton; BOOL fIsRadioButton; DWORD dwWrite;
hwndButton = GetDlgItem(m_hwnd, ID); switch (GetWindowLong(hwndButton, GWL_STYLE) & 0x0F) { case BS_RADIOBUTTON: case BS_AUTORADIOBUTTON: fIsRadioButton = TRUE; break;
default: fIsRadioButton = FALSE; break; }
if (bCheckValues && Button_GetCheck(hwndButton)) { if (fIsRadioButton) { //
// For radio buttons, real value is in user data
//
dwWrite = GetWindowLong(hwndButton, GWL_USERDATA); } else { dwWrite = TRUE; }
CPolicyData(ms_ClassMap[ID], ms_KeyMap[ID], ms_ValueMap[ID], dwWrite). SaveToINFFile(hFile); } else { //
// If this is a radio button, do not write the unchecked ones out.
//
if (!fIsRadioButton) { dwWrite = FALSE;
CPolicyData(ms_ClassMap[ ID ], ms_KeyMap[ ID ], ms_ValueMap[ ID ], dwWrite).SaveToINFFile( hFile ); } } }
void CPropertyDataWindow2::_WriteChecksToINF( HANDLE hFile, BOOL bCheckValues ) { list< UINT >::const_iterator it;
for (it = m_checkIDList.begin(); it != m_checkIDList.end(); it++) { if (ms_ValueMap.find(*it) != ms_ValueMap.end()) { _WriteCheckToINF(hFile, *it, bCheckValues); } } }
void CPropertyDataWindow2::_WriteEditNumToINF( HANDLE hFile, UINT EditID, BOOL bCheckValues ) { if( bCheckValues ) { CPolicyData( ms_ClassMap[ EditID ], ms_KeyMap[ EditID ], ms_ValueMap[ EditID ], (DWORD) GetDlgItemInt( m_hwnd, EditID, NULL, FALSE ) ).SaveToINFFile( hFile ); } else { _DeleteKey( hFile, EditID ); } }
void CPropertyDataWindow2::_WriteEditToINF( HANDLE hFile, UINT EditID, BOOL bCheckValues ) { if( bCheckValues ) { int iLen = GetEditDataLen( EditID ) + 1; LPTSTR szData = new TCHAR[ iLen ]; GetEditData( EditID, szData, iLen );
CPolicyData( ms_ClassMap[ EditID ], ms_KeyMap[ EditID ], ms_ValueMap[ EditID ], szData ).SaveToINFFile( hFile ); delete [] szData; } else { _DeleteKey( hFile, EditID ); } }
void CPropertyDataWindow2::_WriteSliderToINF( HANDLE hFile, UINT SliderID, BOOL bCheckValues ) { if( bCheckValues ) { int iPos;
iPos = TrackBar_GetPos(GetDlgItem(m_hwnd, SliderID)); iPos *= 1000; CPolicyData( ms_ClassMap[ SliderID ], ms_KeyMap[ SliderID ], ms_ValueMap[ SliderID ], (DWORD)iPos ).SaveToINFFile( hFile ); } else { _DeleteKey( hFile, SliderID ); } }
void CPropertyDataWindow2::_WriteComboToINF( HANDLE hFile, UINT ComboID, BOOL bCheckValues ) { if( bCheckValues ) { HWND hwndCombo = GetDlgItem( m_hwnd, ComboID );
CPolicyData( ms_ClassMap[ ComboID ], ms_KeyMap[ ComboID ], ms_ValueMap[ ComboID ], (DWORD) ComboBox_GetItemData( hwndCombo, ComboBox_GetCurSel( hwndCombo ) ) ).SaveToINFFile( hFile ); } else { _DeleteKey( hFile, ComboID ); } }
void CPropertyDataWindow2::_DeleteKey( HANDLE hFile, UINT ID ) { CPolicyData( ms_ClassMap[ ID ], ms_KeyMap[ ID ], ms_ValueMap[ ID ], CPolicyData::OpDelete() ).SaveToINFFile( hFile );
}
int CPropertyDataWindow2::Spew( HWND hwndList, int iStartLine ) { list< UINT >::const_iterator it; for( it = m_checkIDList.begin(); it != m_checkIDList.end(); it++ ) { if( Button_GetCheck( GetDlgItem( m_hwnd, *it ) ) ) { HWND hwndButton = GetDlgItem( m_hwnd, *it ); // 2 is 1 for '\0' and 1 for '\t'
int iButtonTextLen = Button_GetTextLength( hwndButton ) + 2; LPTSTR szButtonText = new TCHAR[ iButtonTextLen ]; szButtonText[0] = '\t'; Button_GetText( hwndButton, &(szButtonText[1]), iButtonTextLen - 1 ); ListBox_InsertString( hwndList, iStartLine, szButtonText ); iStartLine++; } }
list< CControlID *>::const_iterator i; if( m_condList.size() ) { for( i = m_condList.begin(); i != m_condList.end(); i++ ) { if( Button_GetCheck( (*i)->GetCondHwnd() ) ) { iStartLine = _Spew( hwndList, iStartLine, *i ); } } }
if( m_specialControlList.size() ) { for( i = m_specialControlList.begin(); i != m_specialControlList.end(); i++ ) { iStartLine = _Spew( hwndList, iStartLine, *i ); } }
return iStartLine; }
int CPropertyDataWindow2::_Spew( HWND hwndList, int iStartLine, CControlID *pControlID ) { switch( pControlID->GetType() ) { case CControlID::EDIT_NUM: case CControlID::EDIT: { int iEditLen = GetEditDataLen( pControlID->GetID() ) + 1; if( iEditLen ) { int iLen = Button_GetTextLength( pControlID->GetCondHwnd() ) + 1;
LPTSTR sz = new TCHAR[ iLen]; Button_GetText( pControlID->GetCondHwnd(), sz, iLen );
LPTSTR szData = new TCHAR[ iEditLen]; GetEditData( pControlID->GetID(), szData, iEditLen );
// 2 is: 1 for ' ' and 1 for '\t'
LPTSTR szBuff = new TCHAR[ iLen + iEditLen + 2]; wsprintf( szBuff, TEXT("\t%s %s"), sz, szData ); ListBox_InsertString( hwndList, iStartLine, szBuff ); iStartLine++; delete [] szData; delete [] szBuff; delete [] sz; } break; }
case CControlID::CHECK: { HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() ); if( Button_GetCheck( hwnd ) ) { int iLen = Button_GetTextLength( hwnd ) + 2;
LPTSTR sz = new TCHAR[ iLen]; sz[0] = '\t'; Button_GetText( hwnd, &sz[1], iLen );
ListBox_InsertString( hwndList, iStartLine, sz ); iStartLine++;
delete [] sz; } break; }
case CControlID::COMBO: { HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() ); int iCurSel = ComboBox_GetCurSel( hwnd ); int iLen = ComboBox_GetLBTextLen( hwnd, iCurSel ) + 2; LPTSTR sz = new TCHAR[ iLen ]; sz[0] = '\t'; ComboBox_GetLBText( hwnd, iCurSel, &(sz[1]) ); ListBox_InsertString( hwndList, iStartLine, sz ); iStartLine++;
delete [] sz; break; }
case CControlID::SLIDER: { HWND hwnd = GetDlgItem( m_hwnd, pControlID->GetID() ); TCHAR sz[ MAX_DIGITS ]; wsprintf( sz, TEXT("\t%d kbits/s"), TrackBar_GetPos( hwnd ) ); ListBox_InsertString( hwndList, iStartLine, sz ); iStartLine++;
break; }
case CControlID::STATIC: break;
default: OutputDebugString( TEXT("CPropertyDataWindow2::_Spew: unknown CControlID::type\n") ); assert( 0 ); break; }
return iStartLine; }
|