|
|
/**********************************************************************/ /** Microsoft Windows NT **/ /** Copyright(c) Microsoft Corp., 1991 **/ /**********************************************************************/
/*
dlg.cxx It contains the WNetConnectionDialog source.
FILE HISTORY: kevinl 31-Dec-91 Created terryk 03-Jan-92 capitalize the manifest Johnl 10-Jan-1992 Cleaned up BruceFo 23-May-1995 Add WNetConnectionDialog1 support
*/
#define INCL_NETCONS
#define INCL_NETCONFIG
#define INCL_NETSERVICE
#define INCL_NETLIB
#define INCL_WINDOWS
#define INCL_NETERRORS
#define INCL_DOSERRORS
#include <lmui.hxx>
#define INCL_BLT_CONTROL
#define INCL_BLT_CLIENT
#define INCL_BLT_MSGPOPUP
#include <blt.hxx>
#include <dbgstr.hxx>
#include <mprconn.h>
#include <mprmisc.hxx>
#include <mprbrows.hxx>
#include <shellapi.h>
#include <shlapip.h>
extern "C" { #include <uigenhlp.h>
} #include <wfext.h>
#include <fmx.hxx>
#define THIS_DLL_NAME SZ("mprui.dll")
APIERR InitBrowsing( VOID );
/*******************************************************************
NAME: InitBrowsing
SYNOPSIS: Internal API for initializing browsing
ENTRY:
EXIT:
RETURNS:
NOTES: The MprBrowseDialog and MprConnectionDialog has a second worker thread. In order to prevent the dll from unloading itself while the worker thread is still active, we need to do a loadlibrary on the current dll.
HISTORY: YiHsins 21-Mar-1993 Created
********************************************************************/
APIERR InitBrowsing( VOID ) { static BOOL fLoadedCurrentDll = FALSE; if ( !fLoadedCurrentDll ) { HANDLE handle = ::LoadLibraryEx( THIS_DLL_NAME, NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); if ( handle == NULL ) return ::GetLastError(); fLoadedCurrentDll = TRUE; }
return NERR_Success; }
/*******************************************************************
NAME: MPRUI_WNetDisconnectDialog
SYNOPSIS: Private API for the file manager disconnect dialog
ENTRY: hwnd - Parent window handle suitable for hosting a dialog dwType - one of RESOURCETYPE_DISK or RESOURCETYPE_PRINT lpHelpFile - helpfile to use on Help Button nHelpContext - to pass to WinHelp on Help button
EXIT:
RETURNS:
NOTES:
HISTORY: Johnl 22-Jan-1992 Commented, fixed beng 31-Mar-1992 Unicode mumble
********************************************************************/
DWORD MPRUI_WNetDisconnectDialog( HWND hwnd, DWORD dwType ) { AUTO_CURSOR cursHourGlass ; DEVICE_TYPE devType ; switch ( dwType ) { case RESOURCETYPE_DISK: devType = DEV_TYPE_DISK ; break ;
// Allow Disk only
case RESOURCETYPE_PRINT: default: return WN_BAD_VALUE ; }
//
// Call into netplwiz for the real dialog
//
return SHDisconnectNetDrives(hwnd); }
/*******************************************************************
NAME: WNetBrowsePrinterDialog
SYNOPSIS:
ENTRY: hwnd - Parent window handle suitable for hosting a dialog lpszName - place to store the name chosen nNameLength - number of characters in the buffer lpszName lpszHelpFile - helpfile to use on Help Button nHelpContext - to pass to WinHelp on Help button pfuncValidation - callback function to validate the name chosen by the user
EXIT:
RETURNS:
NOTES:
HISTORY: Yi-HsinS 12-Nov-1992 Created
********************************************************************/
DWORD WNetBrowsePrinterDialog( HWND hwnd, WCHAR *lpszName, DWORD nNameLength, WCHAR *lpszHelpFile, DWORD nHelpContext, PFUNC_VALIDATION_CALLBACK pfuncValidation ) { return WNetBrowseDialog( hwnd, RESOURCETYPE_PRINT, lpszName, nNameLength, lpszHelpFile, nHelpContext, pfuncValidation ); }
/*******************************************************************
NAME: WNetBrowseDialog
SYNOPSIS:
ENTRY: hwnd - Parent window handle suitable for hosting a dialog dwType - one of RESOURCETYPE_DISK or RESOURCETYPE_PRINT lpszName - place to store the name chosen nNameLength - number of characters in the buffer lpszName lpszHelpFile - helpfile to use on Help Button nHelpContext - to pass to WinHelp on Help button pfuncValidation - callback function to validate the name chosen by the user
EXIT:
RETURNS:
NOTES:
HISTORY: Yi-HsinS 12-Nov-1992 Created
********************************************************************/
DWORD WNetBrowseDialog( HWND hwnd, DWORD dwType, WCHAR *lpszName, DWORD nNameLength, WCHAR *lpszHelpFile, DWORD nHelpContext, PFUNC_VALIDATION_CALLBACK pfuncValidation ) { if ( lpszName == NULL || lpszHelpFile == NULL || nNameLength <= 0 ) return WN_BAD_VALUE;
*lpszName = 0; *(lpszName + (nNameLength - 1)) = 0;
AUTO_CURSOR cursHourGlass ; DEVICE_TYPE devType ; switch ( dwType ) { case RESOURCETYPE_DISK: devType = DEV_TYPE_DISK; break ;
case RESOURCETYPE_PRINT: devType = DEV_TYPE_PRINT; break;
default: return WN_BAD_VALUE ; }
NLS_STR nlsName; APIERR err = nlsName.QueryError(); if ( err != NERR_Success ) return err;
err = InitBrowsing(); if ( err != NERR_Success ) return err;
MPR_BROWSE_DIALOG * pbrowsedlg = new MPR_BROWSE_DIALOG( hwnd, devType, lpszHelpFile, nHelpContext, &nlsName, pfuncValidation ) ;
BOOL fOK ; err = (pbrowsedlg==NULL) ? WN_OUT_OF_MEMORY : pbrowsedlg->Process( &fOK ) ;
if ( err ) { DBGEOL( "WNetBrowseDialog - Error code " << (ULONG) err << " returned from process." ) ;
switch ( err ) { case WN_EXTENDED_ERROR: MsgExtendedError( hwnd ) ; break ;
default: MsgPopup( hwnd, (MSGID) err ) ; break ; } }
delete pbrowsedlg;
if ( nlsName.QueryTextLength() + 1 > nNameLength ) err = ERROR_INSUFFICIENT_BUFFER; else ::strcpyf( lpszName, nlsName );
return err ? err : ( !fOK ? 0xffffffff : WN_SUCCESS ); }
#define DEFAULT_NETWORK_HELP_FILE SZ("network.hlp")
BOOL DummyIsValidFunction (LPWSTR psz) ;
/*******************************************************************
NAME: BrowseDialogA0
SYNOPSIS: a special browse dialog for WFW to thunk to
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY: chuckc 26-Mar-1993 created
********************************************************************/ DWORD BrowseDialogA0( HWND hwnd, DWORD nType, CHAR *pszName, DWORD cchBufSize) { APIERR err ; NLS_STR nlsPath ; TCHAR szPath[MAX_PATH] ;
::memsetf(pszName,0,cchBufSize) ;
if ( (err = nlsPath.QueryError()) != NERR_Success) return err ;
err = WNetBrowseDialog( hwnd, nType, szPath, MAX_PATH, DEFAULT_NETWORK_HELP_FILE, HC_GENHELP_BROWSE, DummyIsValidFunction ) ;
if (err) return err ;
//
// make use of NLS_STR's handy U to A conversion rotines
//
err = nlsPath.CopyFrom(szPath) ; if (!err) err = nlsPath.MapCopyTo(pszName,cchBufSize) ;
return err ; }
/*******************************************************************
NAME: DummyIsValidFunction
SYNOPSIS: no validation for WFW, always return TRUE
ENTRY:
EXIT:
RETURNS:
NOTES:
HISTORY: chuckc 26-Mar-1993 created
********************************************************************/ BOOL DummyIsValidFunction (LPWSTR psz) { UNREFERENCED(psz) ; return TRUE ; }
|