/*++ Copyright (c) 1996 Microsoft Corporation Module Name: dialogs.c Abstract: This file implements the common dialog proc and other common code used by other dialog procs. All global data used by the dialog procs lives here too. Environment: WIN32 User Mode Author: Wesley Witt (wesw) 17-Feb-1996 --*/ #include "wizard.h" #pragma hdrstop LRESULT CommonDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { PWIZPAGE WizPage; WizPage = (PWIZPAGE) GetWindowLong( hwnd, DWL_USER ); switch( msg ) { case WM_INITDIALOG: SetWindowLong( hwnd, DWL_USER, (LONG) ((LPPROPSHEETPAGE) lParam)->lParam ); WizPage = (PWIZPAGE) ((LPPROPSHEETPAGE) lParam)->lParam; SetWizPageTitle( hwnd ); break; case WM_NOTIFY: switch( ((LPNMHDR)lParam)->code ) { case PSN_SETACTIVE: PropSheet_SetWizButtons( GetParent(hwnd), WizPage->ButtonState ); SetWindowLong( hwnd, DWL_MSGRESULT, 0 ); break; case PSN_QUERYCANCEL: { if (!OkToCancel) { DWORD Answer; MessageBeep(0); Answer = PopUpMsg( hwnd, IDS_QUERY_CANCEL, FALSE, MB_YESNO ); if (Answer == IDNO) { SetWindowLong( hwnd, DWL_MSGRESULT, 1 ); return TRUE; } else { InstallThreadError = ERROR_CANCELLED; } } } break; } break; } if (WizPage && WizPage->DlgProc) { return WizPage->DlgProc( hwnd, msg, wParam, lParam ); } return FALSE; } INT BrowseCallbackProc( HWND hwnd, UINT uMsg, LPARAM lParam, LPARAM lpData ) /*++ Routine Description: Callback function for SHBrowseForFolder Arguments: hwnd - Handle to the browse dialog box uMsg - Identifying the reason for the callback lParam - Message parameter lpData - Application-defined value given in BROWSEINFO.lParam Return Value: 0 --*/ { if (uMsg == BFFM_INITIALIZED) { TCHAR buffer[MAX_PATH]; HWND hDlg = (HWND) lpData; if (GetDlgItemText(hDlg, IDC_DEST_DIRPATH, buffer, MAX_PATH)) { SendMessage(hwnd, BFFM_SETSELECTION, TRUE, (LPARAM) buffer); } } return 0; } BOOL DoBrowseDestDir( HWND hDlg ) /*++ Routine Description: Present a browse dialog to let user select a directory for storing inbound fax files Arguments: hDlg - Handle to the "Receive Options" property page Return Value: TRUE if successful, FALSE if user cancelled the dialog --*/ { LPITEMIDLIST pidl; TCHAR buffer[MAX_PATH]; TCHAR title[MAX_TITLE_LEN]; VOID SHFree(LPVOID); BOOL result = FALSE; BROWSEINFO bi = { hDlg, NULL, buffer, title, BIF_RETURNONLYFSDIRS, BrowseCallbackProc, (LPARAM) hDlg, }; _tcsncpy( title, GetString( IDS_INBOUND_DIR ), MAX_TITLE_LEN ); if (pidl = SHBrowseForFolder(&bi)) { if (SHGetPathFromIDList(pidl, buffer)) { SetDlgItemText(hDlg, IDC_DEST_DIRPATH, buffer); result = TRUE; } SHFree(pidl); } return result; }