windows-nt/Source/XPSP1/NT/printscan/fax/admin/faxadmin/dcomputer.cpp
2020-09-26 16:20:57 +08:00

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;
}