|
|
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
dcomputer.cpp
Abstract:
This file contains implementation of the computer selection dialog.
Environment:
WIN32 User Mode
Author:
Darwin Ouyang (t-darouy) 30-Sept-1997
--*/
#include "stdafx.h"
#include "dcomputer.h"
#include "iroot.h"
#pragma hdrstop
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// Constructor and destructor
//
//
CFaxSelectComputerPropSheet::CFaxSelectComputerPropSheet( IN HINSTANCE hInstance, IN LONG_PTR hMmcNotify, IN CInternalRoot * glob )
: _fFirstActive( TRUE ), _hMmcNotify( hMmcNotify ), _globalRoot( glob ) /*++
Routine Description:
Constructor
Arguments:
hInstance - the instance pointer hMmcNotify - the MMC notify handle glob - a pointer to the owning node
Return Value:
None.
--*/ { DebugPrint(( TEXT("CFaxSelectComputerPropSheet Created") )); _PropSheet.dwSize = sizeof( *this ); _PropSheet.dwFlags = PSP_USETITLE; _PropSheet.hInstance = hInstance; _PropSheet.pszTemplate = MAKEINTRESOURCE(IDP_IS_PAGE0); _PropSheet.pszTitle = MAKEINTRESOURCE(IDP_IS_PAGE0_TITLE); _PropSheet.pfnDlgProc = CFaxSelectComputerPropSheet::DlgProc; _PropSheet.lParam = (LONG_PTR)this;
_hPropSheet = NULL; _hPropSheet = CreatePropertySheetPage( &_PropSheet );
assert(_hPropSheet != NULL );
}
CFaxSelectComputerPropSheet::~CFaxSelectComputerPropSheet() /*++
Routine Description:
Destructor
Arguments:
None.
Return Value:
None.
--*/ { DebugPrint(( TEXT("CFaxSelectComputerPropSheet Destroyed") )); }
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////
//
//
// Dialog Proc
//
//
INT_PTR APIENTRY CFaxSelectComputerPropSheet::DlgProc( IN HWND hwndDlg, IN UINT message, IN WPARAM wParam, IN LPARAM lParam ) /*++
Routine Description:
Dialog Procedure
Arguments:
hwndDlg - the hwnd of the dialog message - the message wParam, lParam - the window message parameters
Return Value:
BOOL
--*/ { // DebugPrint(( TEXT("Trace: CFaxSelectComputerPropSheet::DlgProc") ));
BOOL fRet = FALSE;
switch( message ) { case WM_INITDIALOG: { DebugPrint(( TEXT("CFaxSelectComputerPropSheet::DlgProc -- WM_INITDIALOG\n") ));
LPARAM lthis = ((CFaxSelectComputerPropSheet *)lParam)->_PropSheet.lParam; CFaxSelectComputerPropSheet * pthis = (CFaxSelectComputerPropSheet *)lthis;
SetWindowLongPtr( hwndDlg, DWLP_USER, lthis );
//
// Default to local machine.
//
CheckRadioButton( hwndDlg, IDDI_LOCAL_COMPUTER, IDDI_REMOTE_COMPUTER, IDDI_LOCAL_COMPUTER );
EnableWindow( GetDlgItem( hwndDlg, IDDI_COMPNAME ), FALSE );
fRet = TRUE; break; }
case WM_COMMAND: { DebugPrint(( TEXT("CFaxSelectComputerPropSheet::DlgProc -- WM_COMMAND\n") ));
switch( LOWORD( wParam ) ) { case IDDI_LOCAL_COMPUTER: { if( BN_CLICKED == HIWORD(wParam) ) { EnableWindow( GetDlgItem( hwndDlg, IDDI_COMPNAME ), FALSE ); fRet = TRUE; } break; }
case IDDI_REMOTE_COMPUTER: { if( BN_CLICKED == HIWORD(wParam) ) { EnableWindow( GetDlgItem( hwndDlg, IDDI_COMPNAME ), TRUE ); fRet = TRUE; } break; } } // switch
break; }
case WM_NOTIFY: { DebugPrint(( TEXT("CFaxSelectComputerPropSheet::DlgProc -- WM_NOTIFY\n") )); CFaxSelectComputerPropSheet * pthis = (CFaxSelectComputerPropSheet *)GetWindowLongPtr( hwndDlg, DWLP_USER );
switch( ((LPNMHDR) lParam)->code ) { case PSN_KILLACTIVE: { // Allow loss of activation
SetWindowLongPtr( hwndDlg, DWLP_MSGRESULT, FALSE );
fRet = TRUE; break; }
case PSN_SETACTIVE: { if( pthis->_fFirstActive ) { PropSheet_SetWizButtons( GetParent(hwndDlg), PSWIZB_FINISH );
pthis->_fFirstActive = FALSE; } else { // Go to next page
SetWindowLongPtr( hwndDlg, DWLP_MSGRESULT, -1 ); }
fRet = TRUE; break; }
case PSN_WIZBACK: { // Allow previous page
SetWindowLongPtr( hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR );
fRet = TRUE; break; }
case PSN_WIZNEXT: { // Allow next page
SetWindowLongPtr( hwndDlg, DWLP_MSGRESULT, PSNRET_NOERROR );
fRet = TRUE; break; }
case PSN_WIZFINISH: { TCHAR wcCompName[MAX_COMPUTERNAME_LENGTH+1];
if( IsDlgButtonChecked( hwndDlg, IDDI_LOCAL_COMPUTER ) ) { pthis->_globalRoot->SetMachine( NULL ); } else { if( GetDlgItemText( hwndDlg, IDDI_COMPNAME, wcCompName, MAX_COMPUTERNAME_LENGTH ) ) { pthis->_globalRoot->SetMachine( (TCHAR *)&wcCompName ); } }
MMCPropertyChangeNotify( pthis->_hMmcNotify, 0 );
fRet = TRUE;
break; }
} // switch
break; }
case WM_DESTROY: { DebugPrint(( TEXT("CFaxSelectComputerPropSheet::DlgProc -- WM_DESTROY\n") )); CFaxSelectComputerPropSheet * pthis = (CFaxSelectComputerPropSheet *)GetWindowLongPtr( hwndDlg, DWLP_USER );
MMCFreeNotifyHandle( pthis->_hMmcNotify );
delete pthis;
fRet = TRUE; break; } } // switch
return fRet;
}
|