home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
windows
/
winbeg.zip
/
WINBEGIN.DAT
< prev
next >
Wrap
Text File
|
1987-12-06
|
8KB
|
384 lines
%source
#include "windows.h"
#include "%l.h"
long FAR PASCAL %cWndProc(HWND, unsigned, WORD, LONG);
BOOL FAR PASCAL TextEnterBoxFunc(HWND, unsigned, WORD, LONG);
static HBRUSH hbrBlack;
static HANDLE hAccelTable;
static HANDLE hInst;
HWND hWindow;
char %ltext[LINESIZE];
/*
Standard Windows feature. About box tells you something about the
application
*/
BOOL FAR PASCAL About( hDlg, message, wParam, lParam )
HWND hDlg;
unsigned message;
WORD wParam;
LONG lParam;
{
if (message == WM_COMMAND) {
EndDialog( hDlg, TRUE );
return TRUE;
}
else if (message == WM_INITDIALOG)
return TRUE;
else return FALSE;
}
%cPaint(hDC)
HDC hDC;
{
TextOut(hDC,0,0,%ltext,strlen(%ltext));
}
%cCommand(hWnd, id)
HWND hWnd;
int id;
{
HDC hDC;
FARPROC lpprocAbout;
char wbuffer[80];
switch (id) {
case ID_EXIT:
exit(id);
break;
case ID_ABOUT:
lpprocAbout = MakeProcInstance ((FARPROC)About, hInst);
DialogBox(hInst, (LPSTR)"About", hWnd, lpprocAbout);
FreeProcInstance((FARPROC)lpprocAbout);
break;
case ID_%u:
GetText(hWnd);
break;
default:
break;
}
}
/* Procedure called every time a new instance of the application
** is created */
long FAR PASCAL WinMain(hInstance, hPrevInstance, lpszCmdLine, cmdShow)
HANDLE hInstance, hPrevInstance;
LPSTR lpszCmdLine;
int cmdShow;
{
MSG msg;
HWND hWnd;
HMENU hMenu;
int i;
if (!hPrevInstance) {
if (!%cInit(hInstance))
return FALSE;
}
else {
GetInstanceData(hPrevInstance, (PSTR)&hbrBlack, sizeof(hbrBlack));
GetInstanceData(hPrevInstance, (PSTR)&hAccelTable, sizeof(hAccelTable));
}
hWnd = CreateWindow((LPSTR) "%c",
(LPSTR) "%c",
WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
CW_USEDEFAULT,
(HWND)NULL,
(HMENU)NULL,
(HANDLE)hInstance,
(LPSTR)NULL);
/* initialize various things */
hWindow = hWnd;
hInst = hInstance;
/*
Code to append About box to system menu removed here
The About box is now the user's responsibility
*/
ShowWindow(hWnd, cmdShow);
UpdateWindow(hWnd);
/*
This is the classic loop
*/
while (GetMessage((LPMSG)&msg, NULL, 0, 0)) {
if (TranslateAccelerator(hWnd, hAccelTable, (LPMSG)&msg) == 0) {
TranslateMessage((LPMSG)&msg);
DispatchMessage((LPMSG)&msg);
}
}
exit(msg.wParam);
}
int %cInit(hInstance)
HANDLE hInstance;
{
PWNDCLASS p%cClass;
/* set up some default brushes */
hbrBlack = GetStockObject(BLACK_BRUSH);
p%cClass = (PWNDCLASS)LocalAlloc(LPTR, sizeof(WNDCLASS));
p%cClass->hCursor = LoadCursor(NULL, IDC_ARROW);
p%cClass->hIcon = LoadIcon(hInstance, (LPSTR)"%c");
p%cClass->lpszMenuName = (LPSTR)"MainMenu";
p%cClass->lpszClassName = (LPSTR)"%c";
p%cClass->hbrBackground = NULL;
p%cClass->hInstance = hInstance;
p%cClass->style = CS_VREDRAW | CS_HREDRAW;
p%cClass->lpfnWndProc = %cWndProc;
if (!RegisterClass((LPWNDCLASS)p%cClass))
return FALSE;
LocalFree((HANDLE)p%cClass);
hAccelTable = LoadAccelerators(hInstance, (LPSTR)"%caccel");
return TRUE;
}
/* Procedures which make up the window class. */
long FAR PASCAL %cWndProc(hWnd, message, wParam, lParam)
HWND hWnd;
unsigned message;
WORD wParam;
LONG lParam;
{
PAINTSTRUCT ps;
RECT rect;
HBRUSH hbr, hbrOld;
POINT pt;
pt = MAKEPOINT(lParam);
switch (message)
{
case WM_SYSCOMMAND:
switch (wParam) {
default:
return(DefWindowProc(hWnd, message, wParam, lParam));
break;
}
break;
case WM_CREATE:
break;
case WM_LBUTTONDOWN:
case WM_RBUTTONDOWN:
case WM_LBUTTONDBLCLK:
case WM_RBUTTONDBLCLK:
break;
case WM_MOUSEMOVE:
break;
case WM_LBUTTONUP:
case WM_RBUTTONUP:
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_COMMAND:
%cCommand(hWnd, wParam);
break;
case WM_PAINT:
BeginPaint(hWnd, (LPPAINTSTRUCT)&ps);
%cPaint(ps.hdc);
EndPaint(hWnd, (LPPAINTSTRUCT)&ps);
break;
case WM_ERASEBKGND:
GetClientRect(hWnd, (LPRECT)&rect);
hbr = CreateSolidBrush(GetSysColor(COLOR_WINDOW));
hbrOld = SelectObject((HDC)wParam, hbr);
FillRect((HDC)wParam, (LPRECT)&rect, hbr);
SelectObject((HDC)wParam, hbrOld);
DeleteObject(hbr);
break;
default:
return(DefWindowProc(hWnd, message, wParam, lParam));
break;
}
return(0L);
}
GetText(hWnd)
HWND hWnd;
{
FARPROC lpprocTextEnterBoxFunc;
BOOL i;
lpprocTextEnterBoxFunc = MakeProcInstance ((FARPROC)TextEnterBoxFunc, hInst);
i = DialogBox(hInst, (LPSTR)"TextEnterBox", hWnd, lpprocTextEnterBoxFunc);
FreeProcInstance((FARPROC)lpprocTextEnterBoxFunc);
if (i == TRUE) {
InvalidateRect (hWnd, (LPRECT) NULL, (BOOL) TRUE);
}
}
BOOL FAR PASCAL TextEnterBoxFunc(hDlg, message, wParam, lParam)
HWND hDlg;
unsigned message;
WORD wParam;
LONG lParam;
{
switch(message)
{
case WM_INITDIALOG:
SetFocus(GetDlgItem(hDlg, ID_TEXT));
return(FALSE);
break;
case WM_COMMAND:
switch(wParam)
{
case ID_OK:
GrabText(hDlg,%ltext,ID_TEXT,LINESIZE);
EndDialog(hDlg, TRUE);
return(TRUE);
break;
case ID_CANCEL:
EndDialog(hDlg,FALSE);
return(FALSE);
default:
return(FALSE);
}
break;
default:
return(FALSE);
break;
}
}
GrabText(hDlg,name,id,size)
HWND hDlg;
char name[];
short id;
short size;
{
short i;
strcpy(name,"");
i = GetDlgItemText(hDlg,id,(LPSTR)name, size);
name[i] = 0;
}
%end
%include
#define LINESIZE 80
/* Menu choice to display the About dialog box */
#define ID_ABOUT 0x100
/* Menu choice to display the text */
#define ID_%u 0x200
/* Menu choice to exit the application */
#define ID_EXIT 0x300
/* Dialog box control identifiers */
#define ID_ETEXT 0x400
#define ID_TEXT 0x401
#define ID_OK 0x402
#define ID_CANCEL 0x403
%end
%def
NAME %c
DESCRIPTION '%d'
CODE MOVEABLE
DATA MOVEABLE MULTIPLE
STUB 'WINSTUB.EXE'
HEAPSIZE 1024
STACKSIZE 4096
EXPORTS
%cWndProc
About
TextEnterBoxFunc
%end
%resource
#include "style.h"
#include "%l.h"
%l ICON %l.ico
MainMenu MENU
BEGIN
POPUP "&File"
BEGIN
MENUITEM "&Exit", ID_EXIT
MENUITEM "&About This Application", ID_ABOUT
END
MENUITEM "&Get Text", ID_%u
END
About DIALOG LOADONCALL MOVEABLE DISCARDABLE 22, 17, 144, 85
STYLE WS_POPUP | WS_DLGFRAME
BEGIN
CTEXT "%c" -1, 38, 10, 68, 8
ICON "%l" -1, 9, 5, 18, 28
CTEXT "%d" -1, 0, 33, 144, 8
CTEXT "Version 1.00" -1, 0, 43, 144, 8
CTEXT "Copyright (c) 1987 by %n" -1, 0, 53, 144, 9
DEFPUSHBUTTON "Ok" ID_OK, 53, 67, 32, 14, WS_GROUP
END
TEXTENTERBOX DIALOG LOADONCALL MOVEABLE DISCARDABLE 66, 52, 155, 69
STYLE WS_DLGFRAME | WS_POPUP
BEGIN
CONTROL "Enter text:" ID_ETEXT, "static", SS_LEFT | WS_CHILD, 15, 10, 124, 16
CONTROL "" ID_TEXT, "edit", ES_LEFT | WS_BORDER | WS_TABSTOP | WS_CHILD, 15, 22, 126, 12
CONTROL "OK" ID_OK, "button", BS_PUSHBUTTON | WS_TABSTOP | WS_CHILD, 30, 46, 31, 14
CONTROL "Cancel" ID_CANCEL, "button", BS_PUSHBUTTON | WS_TABSTOP | WS_CHILD, 87, 46, 31, 14
END
%end
%make
%l.obj: %l.c %l.h
cl -d -c -AM -Gsw -Oas -Zpe -FPa -Fo %l.obj %l.c
%l.exe: %l.obj %l.def
link4 %l , %l /align:16,%l/map,mlibw ,%l.def;
rc %l
%end