mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
181 lines
4.7 KiB
181 lines
4.7 KiB
#include <windows.h>
|
|
#include "stdio.h"
|
|
#include "resource.h"
|
|
|
|
#define BUF_SIZE 1000
|
|
|
|
HANDLE hInst;
|
|
LPSTR ApplpszCmdLine;
|
|
int AppnCmdShow;
|
|
|
|
//
|
|
// Center the license dialog
|
|
//
|
|
|
|
VOID CenterDialog ( HWND hdlg )
|
|
{
|
|
HWND hwndPar = GetDesktopWindow();
|
|
RECT rectDlg, rectPar;
|
|
int x, y;
|
|
int dyPar, dyDlg, dyOff;
|
|
POINT pt;
|
|
|
|
GetWindowRect(hdlg, &rectDlg);
|
|
GetClientRect(hwndPar, &rectPar);
|
|
|
|
if ((x = (rectPar.right - rectPar.left) / 2 -
|
|
(rectDlg.right - rectDlg.left) / 2) < 0)
|
|
{
|
|
x = 0;
|
|
}
|
|
dyPar = rectPar.bottom - rectPar.top;
|
|
dyDlg = rectDlg.bottom - rectDlg.top;
|
|
if ((y = dyPar / 2 - dyDlg / 2) < 0)
|
|
{
|
|
y = 0;
|
|
}
|
|
|
|
if (y > 0)
|
|
{
|
|
/* Offset by 1/2 width of title bar and border.
|
|
*/
|
|
pt.x = pt.y = 0;
|
|
ClientToScreen(hwndPar, &pt);
|
|
GetWindowRect(hwndPar, &rectPar);
|
|
dyOff = (pt.y - rectPar.top) / 2;
|
|
|
|
if (y + dyOff + dyDlg < dyPar)
|
|
y += dyOff;
|
|
else
|
|
y = dyPar - dyDlg;
|
|
}
|
|
|
|
SetWindowPos(hdlg, NULL, x, y, 0, 0, (SWP_NOSIZE | SWP_NOZORDER));
|
|
}
|
|
|
|
//
|
|
// Initialize the dialog and create the process
|
|
//
|
|
|
|
long FAR PASCAL WndProc (HWND hWnd, UINT message, UINT wParam, LONG lParam)
|
|
{
|
|
char buf[100];
|
|
|
|
switch (message)
|
|
{
|
|
case WM_CREATE:
|
|
{
|
|
//
|
|
// initialize the license control
|
|
//
|
|
HWND hText;
|
|
char buf[BUF_SIZE];
|
|
FILE *fLicense;
|
|
RECT rect;
|
|
GetClientRect(hWnd, &rect);
|
|
|
|
CenterDialog( hWnd );
|
|
hText = CreateWindow("EDIT","",
|
|
ES_LEFT|ES_READONLY|ES_MULTILINE|
|
|
ES_AUTOVSCROLL|WS_CHILD|WS_VISIBLE|WS_BORDER|WS_TABSTOP|
|
|
WS_VSCROLL, 10,10,rect.right-rect.left-20,320,hWnd,IDC_LICENSE,
|
|
hInst, NULL );
|
|
fLicense = fopen( "license.txt", "r" );
|
|
if ( fLicense != NULL )
|
|
{
|
|
//
|
|
// read the license files
|
|
//
|
|
while ( fgets( buf, BUF_SIZE, fLicense ) != NULL )
|
|
{
|
|
int len;
|
|
int pos;
|
|
len = GetWindowTextLength( hText );
|
|
pos = strlen(buf)-1;
|
|
buf[pos]='\r';
|
|
buf[pos+1]='\n';
|
|
buf[pos+2]='\0';
|
|
SendMessage( hText, EM_SETSEL, (WPARAM)len, (LPARAM)len );
|
|
SendMessage( hText, EM_REPLACESEL, (WPARAM)FALSE, (LPARAM)buf );
|
|
}
|
|
} else
|
|
{
|
|
char strText[BUF_SIZE];
|
|
char strCaption[BUF_SIZE];
|
|
|
|
LoadString( hInst, IDS_CANNOT_CONTINUE, strText, BUF_SIZE );
|
|
LoadString( hInst, IDS_TITLE, strCaption, BUF_SIZE );
|
|
MessageBox( hWnd, strText, strCaption, MB_OK );
|
|
PostQuitMessage(0);
|
|
}
|
|
}
|
|
break;
|
|
case WM_COMMAND:
|
|
switch( wParam )
|
|
{
|
|
case IDOK:
|
|
// start the reset of the command line
|
|
if ( WinExec( "install.exe", AppnCmdShow ) < 32 )
|
|
{
|
|
char strText[BUF_SIZE];
|
|
char strCaption[BUF_SIZE];
|
|
|
|
LoadString( hInst, IDS_CANNOT_CONTINUE, strText, BUF_SIZE );
|
|
LoadString( hInst, IDS_TITLE, strCaption, BUF_SIZE );
|
|
MessageBox( hWnd, strText, strCaption, MB_OK );
|
|
PostQuitMessage(0);
|
|
}
|
|
|
|
// then kill myself
|
|
case IDCANCEL:
|
|
PostQuitMessage(0);
|
|
return 0;
|
|
}
|
|
break;
|
|
}
|
|
return(DefWindowProc(hWnd, message, wParam, lParam ));
|
|
}
|
|
|
|
//
|
|
// main routine
|
|
//
|
|
|
|
int PASCAL WinMain( HANDLE hInstance, HANDLE hPrevInstance,
|
|
LPSTR lpszCmdLine, int nCmdShow )
|
|
{
|
|
static char szAppName[] = "Setup";
|
|
HWND hwnd;
|
|
MSG msg;
|
|
WNDCLASS wndclass;
|
|
|
|
hInst = hInstance;
|
|
ApplpszCmdLine = lpszCmdLine;
|
|
AppnCmdShow = nCmdShow;
|
|
|
|
if (!hPrevInstance)
|
|
{
|
|
wndclass.style = CS_HREDRAW | CS_VREDRAW;
|
|
wndclass.lpfnWndProc = WndProc;
|
|
wndclass.cbClsExtra = 0;
|
|
wndclass.cbWndExtra = DLGWINDOWEXTRA;
|
|
wndclass.hInstance = hInstance;
|
|
wndclass.hIcon = LoadIcon( hInstance, MAKEINTRESOURCE(ICON_SETUP));
|
|
wndclass.hCursor = LoadCursor( NULL, IDC_ARROW );
|
|
wndclass.hbrBackground = COLOR_WINDOW+1;
|
|
wndclass.lpszMenuName = NULL;
|
|
wndclass.lpszClassName = szAppName;
|
|
|
|
RegisterClass( &wndclass );
|
|
}
|
|
|
|
hwnd = CreateDialog( hInstance, MAKEINTRESOURCE(IDD_LICENSE), 0, NULL );
|
|
|
|
ShowWindow( hwnd, nCmdShow );
|
|
while (GetMessage(&msg, NULL, 0, 0))
|
|
{
|
|
TranslateMessage(&msg);
|
|
DispatchMessage( &msg);
|
|
}
|
|
return(msg.wParam);
|
|
}
|
|
|