home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
windows
/
qexit.zip
/
QEXIT.C
< prev
next >
Wrap
Text File
|
1990-11-25
|
5KB
|
173 lines
/****************************************************************************
Qexit
Copyright (c) 1990, Greg Leman
4600 University Drive #212
Durham, NC 27707
PROGRAM: qexit.c
PURPOSE: qexit template for Windows applications
FUNCTIONS:
WinMain() - calls initialization function, processes message loop
qexitInit() - initializes window data and registers window
qexitWndProc() - processes messages
About() - processes messages for "About" dialog box
****************************************************************************/
#include "windows.h" /* required for all Windows applications */
#include "qexit.h" /* specific to this program */
HANDLE hInst; /* current instance */
HANDLE hMenu; /* Handle to my new menu */
/****************************************************************************
FUNCTION: WinMain(HANDLE, HANDLE, LPSTR, int)
PURPOSE: calls initialization function, processes message loop
COMMENTS:
This will initialize the window class if it is the first time this
application is run. It then creates the window, and processes the
message loop until a PostQuitMessage is received. It exits the
application by returning the value passed by the PostQuitMessage.
****************************************************************************/
int PASCAL WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
HANDLE hInstance; /* current instance */
HANDLE hPrevInstance; /* previous instance */
LPSTR lpCmdLine; /* command line */
int nCmdShow; /* show-window type (open/icon) */
{
HWND hWnd; /* window handle */
MSG msg; /* message */
if (!hPrevInstance) /* Has application been initialized? */
if (!qexitInit(hInstance))
return (NULL); /* Exits if unable to initialize */
hInst = hInstance; /* Saves the current instance */
hMenu = LoadMenu(hInstance, "qexitMenu");
hWnd = CreateWindow("qexit", /* window class */
"Quick Exit", /* window name */
WS_OVERLAPPEDWINDOW, /* window style */
CW_USEDEFAULT, /* x position */
CW_USEDEFAULT, /* y position */
CW_USEDEFAULT, /* width */
CW_USEDEFAULT, /* height */
NULL, /* parent handle */
hMenu, /* menu or child ID */
hInstance, /* instance */
NULL); /* additional info */
if (!hWnd) /* Was the window created? */
return (NULL);
ShowWindow(hWnd, 0xFF8F); /* Shows the window */
while (GetMessage(&msg, /* message structure */
NULL, /* handle of window receiving the message */
NULL, /* lowest message to examine */
NULL)) /* highest message to examine */
{
TranslateMessage(&msg); /* Translates virtual key codes */
DispatchMessage(&msg); /* Dispatches message to window */
}
return (msg.wParam); /* Returns the value from PostQuitMessage */
}
/****************************************************************************
FUNCTION: qexitInit(HANDLE)
PURPOSE: Initializes window data and registers window class
****************************************************************************/
BOOL qexitInit(hInstance)
HANDLE hInstance; /* current instance */
{
HANDLE hMemory; /* handle to allocated memory */
PWNDCLASS pWndClass; /* structure pointer */
BOOL bSuccess; /* RegisterClass() result */
hMemory = LocalAlloc(LPTR, sizeof(WNDCLASS));
pWndClass = (PWNDCLASS) LocalLock(hMemory);
pWndClass->style = NULL;
pWndClass->lpfnWndProc = qexitWndProc;
pWndClass->hInstance = hInstance;
pWndClass->hIcon = LoadIcon(hInstance, "qexit");
pWndClass->hCursor = LoadCursor(NULL, IDC_ARROW);
pWndClass->hbrBackground = GetStockObject(WHITE_BRUSH);
pWndClass->lpszMenuName = "qexitMenu";
pWndClass->lpszClassName = (LPSTR) "qexit";
bSuccess = RegisterClass(pWndClass);
LocalUnlock(hMemory); /* Unlocks the memory */
LocalFree(hMemory); /* Returns it to Windows */
return (bSuccess); /* Returns result of registering the window */
}
/****************************************************************************
FUNCTION: qexitWndProc(HWND, unsigned, WORD, LONG)
PURPOSE: Processes messages
MESSAGES:
WM_CREATE - create window
WM_DESTROY - destroy window
WM_COMMAND - menu selections and others
COMMENTS:
****************************************************************************/
long FAR PASCAL qexitWndProc(hWnd, message, wParam, lParam)
HWND hWnd; /* window handle */
unsigned message; /* type of message */
WORD wParam; /* additional information */
LONG lParam; /* additional information */
{
HMENU hMenu; /* handle to the System menu */
switch (message) {
case WM_CREATE: /* message: window being created */
break;
case WM_DESTROY: /* message: window being destroyed */
PostQuitMessage(0);
break;
case WM_QUERYOPEN:
if( MessageBox(hWnd,"Are you Very Sure?",
(LPSTR) "Exiting Windows", MB_OKCANCEL|MB_ICONEXCLAMATION)
== IDOK)
{
DestroyWindow(hWnd);
ExitWindows( (DWORD)NULL, 1);
}
break;
default: /* Passes it on if unproccessed */
return (DefWindowProc(hWnd, message, wParam, lParam));
}
return (NULL);
}