Category : Files from Magazines
Archive   : PROGJRNL.ZIP
Filename : WINVUENT.C

 
Output of file : WINVUENT.C contained in archive : PROGJRNL.ZIP
/*
* Winvue initialization module
*
* Written by Bill Hall
* 3665 Benton Street, #66
* Santa Clara, CA 95051
*
*/

#define NOCOMM
#define NOKANJI
#define NOATOM
#define NOBITMAP
#define NOMINMAX
#include
#include
#include
#include
#include "winvue.h"

/* local function declarations */
static BOOL NEAR RegisterWindowClass(HANDLE);
static BOOL NEAR MakeAndShowMainWnd(HANDLE, int);
static int NEAR OpenCmdlineFile(LPSTR lptr);
static void NEAR GetPrevInstanceData(HANDLE);

/* enter here to initialize the program */
BOOL FAR InitProgram(hInstance,hPrevInstance, lpszCmdLine, cmdShow)
HANDLE hInstance, hPrevInstance;
LPSTR lpszCmdLine;
int cmdShow;
{

/* set a pointer to the appropriate message function */
DoMessage = DoGetMessage;

/* if first instance, do these things */
if (hPrevInstance == NULL) {
/* get icon string */
LoadString(hInstance,IDS_ICONSTRING,(LPSTR)szIconTitle,
sizeof(szIconTitle));
/* register window class */
if (!RegisterWindowClass(hInstance))
return FALSE;
/* load the menu accelerators */
hAccel = LoadAccelerators(hInstance, (LPSTR)szAppName);
}

/* otherwise, just load data normally obtained during registration */
else
GetPrevInstanceData(hPrevInstance);

/* create the window */
if (!MakeAndShowMainWnd(hInstance,cmdShow))
return FALSE;

/* see if a file was specified on the command line */
hFile = OpenCmdlineFile(lpszCmdLine);

/* show success */
return TRUE;
}

/* register the windows class */
static BOOL near RegisterWindowClass(hInstance)
HANDLE hInstance;
{

PWNDCLASS pWndClass;
HANDLE hTemp;

/* get the application name from the resources */
LoadString(hInstance,IDS_APPNAME,(LPSTR)szAppName,sizeof(szAppName));

/* make space for the WNDCLASS structure in the heap */
hTemp = LocalAlloc(LPTR,sizeof(WNDCLASS));
pWndClass = (PWNDCLASS)LocalLock(hTemp);

/* enter data */
pWndClass->hCursor = LoadCursor(NULL, IDC_ARROW); /* stock cursor */
pWndClass->hIcon = NULL; /* no icon */
pWndClass->lpszMenuName = (LPSTR)szAppName; /* this menu */
pWndClass->lpszClassName = (LPSTR)szAppName; /* class name */
pWndClass->hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); /* background */
pWndClass->hInstance = hInstance; /* instance */
pWndClass->style = CS_VREDRAW | CS_HREDRAW; /* style */
pWndClass->lpfnWndProc = MainWndProc; /* pointer to wind proc */
pWndClass->cbWndExtra = sizeof(PTTYWND); /* space for ptr to MWnd */

/* if failure, return FALSE */
if (!RegisterClass((LPWNDCLASS)pWndClass))
return FALSE;

/* success, so free up heap data and show ok */
LocalUnlock(hTemp);
LocalFree(hTemp);
return TRUE;
}

/* if we don't need to register the window, we have to load these strings */
static void NEAR GetPrevInstanceData(HANDLE hPrevInstance)
{

GetInstanceData(hPrevInstance, (PSTR)szAppName, sizeof(szAppName));
GetInstanceData(hPrevInstance, (PSTR)szIconTitle, sizeof(szIconTitle));
GetInstanceData(hPrevInstance, (PSTR)&hAccel, sizeof(hAccel));
}

/* create a window of the class registered above */
static BOOL NEAR MakeAndShowMainWnd(hInstance, cmdShow)
HANDLE hInstance;
int cmdShow;
{

/* get the text for the title */
LoadString(hInstance, IDS_WINTITLE, (LPSTR)szWinTitle,sizeof(szWinTitle));

/* create the window */
MWnd.hWnd = CreateWindow((LPSTR)szAppName, /* class */
(LPSTR)szWinTitle, /* title string */
WS_OVERLAPPEDWINDOW, /* style */
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
(HWND)NULL, /* no parent */
(HMENU)NULL, /* class menu */
(HANDLE)hInstance, /* instance */
(LPSTR)&MWnd); /* ptr to window structure */

/* if successful, display the window */
if (MWnd.hWnd && MWnd.hVidBuf) {
ShowWindow(MWnd.hWnd, cmdShow);
UpdateWindow(MWnd.hWnd);
return TRUE;
}
/* return failure */
return FALSE;
}

/* read the command line and open a file, if any */
static int NEAR OpenCmdlineFile(LPSTR cmdline)
{

char ch;
int i, len;
HANDLE hname;
char *pname;
LPSTR lptr;
int hfile = 0;

lptr = cmdline;
len = 0;

/* isolate first field in command line */
while (ch = *lptr++)
if (ch == ' ')
break;
else
len++;

if (len) {
/* make space for file name in heap */
if (hname = LocalAlloc(LPTR, len + 1)) {
pname = LocalLock(hname);
/* copy the name */
for(i = 0; i < len; i++)
*(pname + i) = *cmdline++;
*(pname + len) = NUL;
/* try opening the file */
hfile = OpenTheFile(pname);
/* discard the heap allocation */
LocalUnlock(hname);
LocalFree(hname);
}
}
return hfile;
}

/* this routine is called upon receipt of the WM_CREATE message */
void WndCreate(hWnd, lParam)
HWND hWnd;
LONG lParam;
{

HDC hDC;
TEXTMETRIC TM;
short width, height, cwidth, cheight;
LPCREATESTRUCT pCS;
PTTYWND pMWnd;
int FontIndex;

/* we are going to create a buffer for a window this large */
width = GetSystemMetrics(SM_CXFULLSCREEN);
height = GetSystemMetrics(SM_CYFULLSCREEN);

/* select the system font index stock object */
FontIndex = SYSTEM_FONT;

/* get the font size */
hDC = GetDC(hWnd);
SelectObject(hDC, GetStockObject(FontIndex));
GetTextMetrics(hDC, &TM);
cwidth = TM.tmAveCharWidth;
cheight = TM.tmHeight + TM.tmExternalLeading;
ReleaseDC(hWnd, hDC);

/* here we retrieve the pointer to our local window stucture */
pCS = (LPCREATESTRUCT)lParam;
pMWnd = (PTTYWND)LOWORD(pCS->lpCreateParams);

/* initialize the extra data to the pointer to the TWnd structure */
SetWindowWord(hWnd,0,(WORD)pMWnd);

/* now create the text buffer and set some defaults */
InitTTYWindow(pMWnd,0,0,width,height,cwidth,cheight,
FALSE,FALSE,TRUE,FontIndex,0xff);
}
/*
* Winvue initialization module
*
* Written by Bill Hall
* 3665 Benton Street, #66
* Santa Clara, CA 95051
*
*/

#define NOCOMM
#define NOKANJI
#define NOATOM
#define NOBITMAP
#define NOMINMAX
#include
#include
#include
#include
#include "winvue.h"

/* local function declarations */
static BOOL NEAR RegisterWindowClass(HANDLE);
static BOOL NEAR MakeAndShowMainWnd(HANDLE, int);
static int NEAR OpenCmdlineFile(LPSTR lptr);
static void NEAR GetPrevInstanceData(HANDLE);

/* enter here to initialize the program */
BOOL FAR InitProgram(hInstance,hPrevInstance, lpszCmdLine, cmdShow)
HANDLE hInstance, hPrevInstance;
LPSTR lpszCmdLine;
int cmdShow;
{

/* set a pointer to the appropriate message function */
DoMessage = DoGetMessage;

/* if first instance, do these things */
if (hPrevInstance == NULL) {
/* get icon string */
LoadString(hInstance,IDS_ICONSTRING,(LPSTR)szIconTitle,
sizeof(szIconTitle));
/* register window class */
if (!RegisterWindowClass(hInstance))
return FALSE;
/* load the menu accelerators */
hAccel = LoadAccelerators(hInstance, (LPSTR)szAppName);
}

/* otherwise, just load data normally obtained during registration */
else
GetPrevInstanceData(hPrevInstance);

/* create the window */
if (!MakeAndShowMainWnd(hInstance,cmdShow))
return FALSE;

/* see if a file was specified on the command line */
hFile = OpenCmdlineFile(lpszCmdLine);

/* show success */
return TRUE;
}

/* register the windows class */
static BOOL near RegisterWindowClass(hInstance)
HANDLE hInstance;
{

PWNDCLASS pWndClass;
HANDLE hTemp;

/* get the application name from the resources */
LoadString(hInstance,IDS_APPNAME,(LPSTR)szAppName,sizeof(szAppName));

/* make space for the WNDCLASS structure in the heap */
hTemp = LocalAlloc(LPTR,sizeof(WNDCLASS));
pWndClass = (PWNDCLASS)LocalLock(hTemp);

/* enter data */
pWndClass->hCursor = LoadCursor(NULL, IDC_ARROW); /* stock cursor */
pWndClass->hIcon = NULL; /* no icon */
pWndClass->lpszMenuName = (LPSTR)szAppName; /* this menu */
pWndClass->lpszClassName = (LPSTR)szAppName; /* class name */
pWndClass->hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); /* background */
pWndClass->hInstance = hInstance; /* instance */
pWndClass->style = CS_VREDRAW | CS_HREDRAW; /* style */
pWndClass->lpfnWndProc = MainWndProc; /* pointer to wind proc */
pWndClass->cbWndExtra = sizeof(PTTYWND); /* space for ptr to MWnd */

/* if failure, return FALSE */
if (!RegisterClass((LPWNDCLASS)pWndClass))
return FALSE;

/* success, so free up heap data and show ok */
LocalUnlock(hTemp);
LocalFree(hTemp);
return TRUE;
}

/* if we don't need to register the window, we have to load these strings */
static void NEAR GetPrevInstanceData(HANDLE hPrevInstance)
{

GetInstanceData(hPrevInstance, (PSTR)szAppName, sizeof(szAppName));
GetInstanceData(hPrevInstance, (PSTR)szIconTitle, sizeof(szIconTitle));
GetInstanceData(hPrevInstance, (PSTR)&hAccel, sizeof(hAccel));
}

/* create a window of the class registered above */
static BOOL NEAR MakeAndShowMainWnd(hInstance, cmdShow)
HANDLE hInstance;
int cmdShow;
{

/* get the text for the title */
LoadString(hInstance, IDS_WINTITLE, (LPSTR)szWinTitle,sizeof(szWinTitle));

/* create the window */
MWnd.hWnd = CreateWindow((LPSTR)szAppName, /* class */
(LPSTR)szWinTitle, /* title string */
WS_OVERLAPPEDWINDOW, /* style */
CW_USEDEFAULT,0,
CW_USEDEFAULT,0,
(HWND)NULL, /* no parent */
(HMENU)NULL, /* class menu */
(HANDLE)hInstance, /* instance */
(LPSTR)&MWnd); /* ptr to window structure */

/* if successful, display the window */
if (MWnd.hWnd && MWnd.hVidBuf) {
ShowWindow(MWnd.hWnd, cmdShow);
UpdateWindow(MWnd.hWnd);
return TRUE;
}
/* return failure */
return FALSE;
}

/* read the command line and open a file, if any */
static int NEAR OpenCmdlineFile(LPSTR cmdline)
{

char ch;
int i, len;
HANDLE hname;
char *pname;
LPSTR lptr;
int hfile = 0;

lptr = cmdline;
len = 0;

/* isolate first field in command line */
while (ch = *lptr++)
if (ch == ' ')
break;
else
len++;

if (len) {
/* make space for file name in heap */
if (hname = LocalAlloc(LPTR, len + 1)) {
pname = LocalLock(hname);
/* copy the name */
for(i = 0; i < len; i++)
*(pname + i) = *cmdline++;
*(pname + len) = NUL;
/* try opening the file */
hfile = OpenTheFile(pname);
/* discard the heap allocation */
LocalUnlock(hname);
LocalFree(hname);
}
}
return hfile;
}

/* this routine is called upon receipt of the WM_CREATE message */
void WndCreate(hWnd, lParam)
HWND hWnd;
LONG lParam;
{

HDC hDC;
TEXTMETRIC TM;
short width, height, cwidth, cheight;
LPCREATESTRUCT pCS;
PTTYWND pMWnd;

/* we are going to create a buffer for a window this large */
width = GetSystemMetrics(SM_CXFULLSCREEN);
height = GetSystemMetrics(SM_CYFULLSCREEN);

/* get the font size */
hDC = GetDC(hWnd);
GetTextMetrics(hDC, &TM);
cwidth = TM.tmAveCharWidth;
cheight = TM.tmHeight + TM.tmExternalLeading;
ReleaseDC(hWnd, hDC);

/* here we retrieve the pointer to our local window stucture */
pCS = (LPCREATESTRUCT)lParam;
pMWnd = (PTTYWND)LOWORD(pCS->lpCreateParams);

/* initialize the extra data to the pointer to the TWnd structure */
SetWindowWord(hWnd,0,(WORD)pMWnd);

/* now create the text buffer and set some defaults */
InitTTYWindow(pMWnd,0,0,width,height,cwidth,cheight,
FALSE,FALSE,TRUE,0,0xff);
}


  3 Responses to “Category : Files from Magazines
Archive   : PROGJRNL.ZIP
Filename : WINVUENT.C

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/