Windows NT 4.0 source code leak
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

#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);
}