/*++ 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 "faxocm.h" #pragma hdrstop static WNDPROC OldEditProc; LRESULT CALLBACK EulaEditSubProc( IN HWND hwnd, IN UINT msg, IN WPARAM wParam, IN LPARAM lParam ) /*++ Routine Description: Edit control subclass routine, to avoid highlighting text when user tabs to the edit control. Arguments: Standard window proc arguments. Returns: Message-dependent value. --*/ { // // For setsel messages, make start and end the same. // if ((msg == EM_SETSEL) && ((LPARAM)wParam != lParam)) { lParam = wParam; } return CallWindowProc( OldEditProc, hwnd, msg, wParam, lParam ); } BOOL DisplayEula( HWND hwnd ) { HGLOBAL hResource; LPSTR lpResource; LPSTR p; BOOL rVal = FALSE; DWORD FileSize; PWSTR EulaText = NULL; hResource = LoadResource( hInstance, FindResource( hInstance, MAKEINTRESOURCE(FAX_EULA), MAKEINTRESOURCE(BINARY) ) ); if (!hResource) { return FALSE; } lpResource = (LPSTR) LockResource( hResource ); if (!lpResource) { FreeResource( hResource ); return FALSE; } p = strchr( lpResource, '^' ); if (!p) { // // the eula text file is corrupt // return FALSE; } FileSize = (DWORD)(p - lpResource); EulaText = (PWSTR) MemAlloc( (FileSize+1) * sizeof(WCHAR) ); if (EulaText == NULL) { goto exit; } MultiByteToWideChar ( CP_ACP, 0, lpResource, FileSize, EulaText, (FileSize+1) * sizeof(WCHAR) ); EulaText[FileSize] = 0; OldEditProc = (WNDPROC) GetWindowLongPtr( hwnd, GWLP_WNDPROC ); SetWindowLongPtr( hwnd, GWLP_WNDPROC, (ULONG_PTR)EulaEditSubProc ); SetWindowText( hwnd, EulaText ); rVal = TRUE; exit: MemFree (EulaText); if (lpResource) { FreeResource( lpResource ); } return rVal; } INT_PTR EulaDlgProc( HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam ) { switch( msg ) { case WM_INITDIALOG: DisplayEula( GetDlgItem( hwnd, IDC_LICENSE_AGREEMENT ) ); break; case WM_COMMAND: if (HIWORD(wParam) == BN_CLICKED) { switch (LOWORD(wParam)) { case IDC_ACCEPT: PropSheet_SetWizButtons( GetParent(hwnd), PSWIZB_NEXT ); break; case IDC_DECLINE: PropSheet_SetWizButtons( GetParent(hwnd), 0 ); break; } } break; case WM_NOTIFY: switch( ((LPNMHDR)lParam)->code ) { case PSN_SETACTIVE: if (IsDlgButtonChecked( hwnd, IDC_ACCEPT ) == BST_CHECKED) { PropSheet_SetWizButtons( GetParent(hwnd), PSWIZB_NEXT ); } else { PropSheet_SetWizButtons( GetParent(hwnd), 0 ); } if (Upgrade) { PropSheet_SetWizButtons( GetParent(hwnd), PSWIZB_NEXT ); SetWindowLongPtr(hwnd, DWLP_MSGRESULT ,-1); return TRUE; } break; default: break; } break; default: break; } return FALSE; }