289 lines
8.3 KiB
C++
289 lines
8.3 KiB
C++
|
/*++
|
||
|
|
||
|
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;
|
||
|
|
||
|
}
|
||
|
|