home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
BIGJOB.ZIP
/
BIGJOB2.C
< prev
next >
Wrap
C/C++ Source or Header
|
1989-03-27
|
4KB
|
132 lines
/*-------------------------------------------------------
BIGJOB2.C -- Timer approach to lengthy processing job
--------------------------------------------------------*/
#define INCL_WIN
#include <os2.h>
#include <math.h>
#include <stdio.h>
#include "bigjob.h"
#define ID_TIMER 1
INT main (VOID)
{
static CHAR szClassName [] = "BigJob2" ;
HMQ hmq ;
HWND hwndFrame, hwndClient ;
QMSG qmsg ;
ULONG flCreateFlags = FCF_SIZEBORDER|FCF_TITLEBAR|FCF_SYSMENU|
FCF_MINMAX|FCF_MENU|FCF_SHELLPOSITION;
hab = WinInitialize (NULL) ;
hmq = WinCreateMsgQueue (hab, 0) ;
WinRegisterClass (hab, szClassName, ClientWndProc,
CS_SYNCPAINT | CS_SIZEREDRAW, 0) ;
hwndFrame = WinCreateStdWindow (HWND_DESKTOP,
WS_VISIBLE, &flCreateFlags,
szClassName, "BigJob Demo No. 2",
0L, NULL, ID_RESOURCE, &hwndClient) ;
while (WinGetMsg (hab, &qmsg, NULL, 0, 0))
WinDispatchMsg (hab, &qmsg) ;
WinDestroyWindow (hwndFrame) ;
WinDestroyMsgQueue (hmq) ;
WinTerminate (hab) ;
return 0 ;
}
MRESULT EXPENTRY ClientWndProc (HWND hwnd, USHORT msg, MPARAM mp1,
MPARAM mp2)
{
static double A ;
static SHORT i, iCalcRep, iCurrentRep = IDM_10 ;
static SHORT iStatus = STATUS_READY ;
static ULONG lElapsedTime ;
switch (msg)
{
case WM_COMMAND:
switch (LOUSHORT (mp1))
{
case IDM_10:
case IDM_100:
case IDM_1000:
case IDM_10000:
CheckMenuItem (hwnd, iCurrentRep, FALSE) ;
iCurrentRep = LOUSHORT (mp1) ;
CheckMenuItem (hwnd, iCurrentRep, TRUE) ;
break ;
case IDM_START:
if (!WinStartTimer (hab, hwnd, ID_TIMER, 1))
{
WinAlarm (HWND_DESKTOP, WA_ERROR) ;
break ;
}
EnableMenuItem (hwnd, IDM_START, FALSE) ;
EnableMenuItem (hwnd, IDM_ABORT, TRUE) ;
iStatus = STATUS_WORKING ;
WinInvalidateRect (hwnd, NULL, FALSE) ;
iCalcRep = iCurrentRep ;
lElapsedTime = WinGetCurrentTime (hab) ;
A = 1.0 ;
i = 0 ;
break ;
case IDM_ABORT:
WinStopTimer (hab, hwnd, ID_TIMER) ;
iStatus = STATUS_READY ;
WinInvalidateRect (hwnd, NULL, FALSE) ;
EnableMenuItem (hwnd, IDM_START, TRUE) ;
EnableMenuItem (hwnd, IDM_ABORT, FALSE) ;
break ;
default:
break ;
}
break ;
case WM_TIMER:
A = Savage (A) ;
if (++i == iCalcRep)
{
lElapsedTime = WinGetCurrentTime (hab) -
lElapsedTime ;
WinStopTimer (hab, hwnd, ID_TIMER) ;
iStatus = STATUS_DONE ;
WinInvalidateRect (hwnd, NULL, FALSE) ;
EnableMenuItem (hwnd, IDM_START, TRUE) ;
EnableMenuItem (hwnd, IDM_ABORT, FALSE) ;
}
break ;
case WM_PAINT:
PaintWindow (hwnd, iStatus, iCalcRep, lElapsedTime) ;
break ;
default:
return WinDefWindowProc (hwnd, msg, mp1, mp2) ;
}
return 0L ;
}