197 lines
3.8 KiB
C++
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;
|
||
|
}
|