windows-nt/Source/XPSP1/NT/printscan/fax/setup/ocm/dlgeula.cpp
2020-09-26 16:20:57 +08:00

197 lines
3.8 KiB
C++

/*++
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;
}