/**********************************************************************/ /** 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 #define INCL_BLT_CONTROL #define INCL_BLT_CLIENT #define INCL_BLT_MSGPOPUP #include #include #include #include #include #include #include extern "C" { #include } #include #include #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 ; }