|
|
///////////////////////////////////////////////////////////////////////////////
//
// Copyright (c) 2001, Microsoft Corporation All rights reserved.
//
// Module Name:
//
// welcome.c
//
// Abstract:
//
// This file contains dialog to show the EULA agreement dialog of the
// euroconv.exe utility.
//
// Revision History:
//
// 2001-07-30 lguindon Created.
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//
// Includes Files.
//
///////////////////////////////////////////////////////////////////////////////
#include "euroconv.h"
#include "welcome.h"
///////////////////////////////////////////////////////////////////////////////
//
// Globals.
//
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
//
// WelcomeDialogProc
//
// Message handler function for the EULA.
//
///////////////////////////////////////////////////////////////////////////////
INT_PTR CALLBACK WelcomeDialogProc(HWND hWndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { HANDLE hFile; DWORD dwFileSize; DWORD dwActual; LPVOID pFileBuffer; CHAR szEulaPath[MAX_PATH]; CHAR szEulaFile[MAX_PATH] = {0};
switch ( uMsg ) { case WM_INITDIALOG: { //
// Load EULA file from the path where euroconv was launched
//
GetModuleFileName( NULL, szEulaPath, MAX_PATH);
//
// Get EULA file name.
//
LoadString(ghInstance, IDS_EULA, szEulaFile, MAX_PATH); //
// Generate a valid path
//
//lstrcpy(strrchr(szEulaPath, '\\')+1, szEulaFile);
StringCbCopy(strrchr(szEulaPath, '\\')+1, MAX_PATH, szEulaFile);
//
// Open the file
//
if (((hFile = CreateFile( szEulaPath, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL)) != INVALID_HANDLE_VALUE) && ((dwFileSize = GetFileSize( hFile, NULL )) != -1) && (pFileBuffer = LocalAlloc(LPTR, dwFileSize + 1))) { //
// Read the file.
//
if (ReadFile( hFile, pFileBuffer, dwFileSize, &dwActual, NULL )) { //
// Make sure to NULL terminate the string
//
*((PCHAR)((PCHAR)pFileBuffer + dwFileSize)) = 0x00;
//
// Use ANSI text
//
SetDlgItemText( hWndDlg, IDC_EDIT_LICENSE, (LPCSTR)pFileBuffer ); } //
// Free used memory
//
LocalFree( pFileBuffer ); }
//
// Change focus.
//
SetFocus( GetDlgItem( hWndDlg, IDC_CHECK_LICENSE )); return 0; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDOK: { if (IsDlgButtonChecked(hWndDlg, IDC_CHECK_LICENSE) == BST_CHECKED) { EndDialog(hWndDlg, ERROR_SUCCESS); } else { EndDialog(hWndDlg, ERROR_CANCELLED); } return (1); } case IDCANCEL: { EndDialog(hWndDlg, ERROR_CANCELLED); return (1); } case IDC_README: { //
// invoke notepad.exe open readme.txt
//
CHAR szReadMePath[MAX_PATH]; CHAR szReadMeFile[MAX_PATH] = {0}; SHELLEXECUTEINFO ExecInfo = {0}; //
// Load README file from the path where euroconv was launched
//
GetModuleFileName(NULL, szReadMePath, sizeof(szReadMePath)/sizeof(CHAR)); //
// Get README file name.
//
LoadString(ghInstance, IDS_README, szReadMeFile, MAX_PATH); //
// Generate a valid path
//
//lstrcpy(strrchr(szReadMePath, '\\')+1, szReadMeFile);
StringCbCopy(strrchr(szReadMePath, '\\')+1, MAX_PATH, szReadMeFile); ExecInfo.lpParameters = szReadMePath; ExecInfo.lpFile = "NOTEPAD.EXE"; ExecInfo.nShow = SW_SHOWNORMAL; ExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShellExecuteEx(&ExecInfo); return 1; } case IDC_CHECK_LICENSE: { EnableWindow(GetDlgItem(hWndDlg, IDOK), IsDlgButtonChecked(hWndDlg, IDC_CHECK_LICENSE) == BST_CHECKED); return 1; }
} break; } case WM_CLOSE: { EndDialog(hWndDlg, ERROR_CANCELLED); return 1; } }
return 0; }
///////////////////////////////////////////////////////////////////////////////
//
// WelcomeDialog
//
// Display the EULA dialog.
//
///////////////////////////////////////////////////////////////////////////////
BOOL WelcomeDialog() { INT_PTR Status;
Status = DialogBox( NULL, MAKEINTRESOURCE(IDD_EULA), 0, WelcomeDialogProc);
return (Status == ERROR_SUCCESS); }
|