Annotation of pmsdk/samples/bigjob/peek/peek.c, revision 1.1.1.1

1.1       root        1: /*
                      2:    Source file for PEEK application
                      3:    Created by Microsoft Corp., 1988
                      4: */
                      5: #define INCL_WIN
                      6: #include <os2.h>
                      7: #include <math.h>
                      8: #include <stdio.h>
                      9: #include "peek.h"
                     10: 
                     11: 
                     12: #define STATUS_READY   0
                     13: #define STATUS_WORKING 1
                     14: #define STATUS_DONE    2
                     15: 
                     16: /* globals */
                     17: HWND vhwndMenu;
                     18: HAB  vhab;
                     19: 
                     20: 
                     21: MRESULT FAR PASCAL WndProc(HWND hwnd,
                     22:                           USHORT msg,
                     23:                           MPARAM mp1,
                     24:                           MPARAM mp2);
                     25: 
                     26: 
                     27: double Savage(double A)
                     28: {
                     29:     return tan(atan(exp(log(sqrt(A * A))))) + 1.0;
                     30: }
                     31: 
                     32: 
                     33: 
                     34: VOID Paint(HWND hwnd,
                     35:           SHORT iStatus,
                     36:           SHORT iRep,
                     37:           LONG lTime)
                     38: {
                     39:     static CHAR *szMessage[3] = {"Ready",
                     40:                                 "Working...",
                     41:                                 "%d reps in %ld msec."};
                     42:     CHAR szBuffer[60];
                     43:     HPS hps;
                     44:     RECTL rcl;
                     45: 
                     46:     hps = WinBeginPaint(hwnd, (HPS)NULL, (PRECTL)NULL);
                     47:     WinQueryWindowRect(hwnd, (PRECTL)&rcl);
                     48:     WinFillRect(hps, (PRECTL)&rcl, SYSCLR_WINDOW);
                     49:     sprintf(szBuffer, szMessage[iStatus], iRep, lTime);
                     50:     WinDrawText(hps, -1, szBuffer, (PRECTL)&rcl,
                     51:                SYSCLR_WINDOWTEXT, SYSCLR_WINDOW, DT_CENTER | DT_VCENTER);
                     52:     WinEndPaint(hps);
                     53: }
                     54: 
                     55: 
                     56: 
                     57: void cdecl main(VOID)
                     58: {
                     59:     static CHAR szClass[] = "Big";
                     60:     HMQ hmq;
                     61:     HWND hwndFrame, hwndClient;
                     62:     QMSG qmsg;
                     63:     ULONG ulCreate;
                     64: 
                     65:     vhab = WinInitialize(0);
                     66:     hmq = WinCreateMsgQueue(vhab, 0);
                     67: 
                     68:     WinRegisterClass(vhab, szClass, WndProc,
                     69:                     CS_SYNCPAINT | CS_SIZEREDRAW, NULL);
                     70: 
                     71:     ulCreate = FCF_TITLEBAR | FCF_SYSMENU | FCF_MINMAX |
                     72:                FCF_SIZEBORDER | FCF_MENU;
                     73:  
                     74:     hwndFrame = WinCreateStdWindow(HWND_DESKTOP,
                     75:                                   WS_VISIBLE,
                     76:                                   (PVOID)&ulCreate,
                     77:                                   szClass, (PSZ)"Big Peek Message",
                     78:                                   0L, NULL, ID_RESOURCE,
                     79:                                   (HWND FAR *)&hwndClient);
                     80: 
                     81:     vhwndMenu = WinWindowFromID(hwndFrame, FID_MENU);
                     82: 
                     83:     while (WinGetMsg(vhab, &qmsg, NULL, 0, 0))
                     84:        WinDispatchMsg(vhab, &qmsg);
                     85: 
                     86:     WinDestroyWindow(hwndFrame);
                     87:     WinDestroyMsgQueue(hmq);
                     88:     WinTerminate(vhab);
                     89: }
                     90: 
                     91: 
                     92: 
                     93: MRESULT FAR PASCAL WndProc(HWND hwnd,
                     94:                           USHORT msg,
                     95:                           MPARAM mp1,
                     96:                           MPARAM mp2)
                     97: {
                     98:     static SHORT iCalcRep, iCurrentRep = IDM_10;
                     99:     static SHORT iStatus = STATUS_READY;
                    100:     static ULONG lElapsedTime;
                    101:     static bContinueCalc = FALSE;
                    102:     double A;
                    103:     SHORT i;
                    104:     QMSG qmsg;
                    105: 
                    106:     switch (msg) {
                    107: 
                    108:     case WM_COMMAND:
                    109: 
                    110:        switch (SHORT1FROMMP(mp1)) {
                    111: 
                    112:        case IDM_10:
                    113:        case IDM_100:
                    114:        case IDM_1000:
                    115:        case IDM_10000:
                    116:            WinSendMsg(vhwndMenu, MM_SETITEMATTR, MPFROM2SHORT(iCurrentRep, TRUE),
                    117:                       MPFROM2SHORT(MIA_CHECKED, 0));
                    118:            iCurrentRep = SHORT1FROMMP(mp1);
                    119:            WinSendMsg(vhwndMenu, MM_SETITEMATTR, MPFROM2SHORT(iCurrentRep, TRUE),
                    120:                       MPFROM2SHORT(MIA_CHECKED, MIA_CHECKED));
                    121:            break;
                    122: 
                    123:        case IDM_START:
                    124:            WinSendMsg(vhwndMenu, MM_SETITEMATTR, MPFROM2SHORT(IDM_START, TRUE),
                    125:                       MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED));
                    126:            WinSendMsg(vhwndMenu, MM_SETITEMATTR, MPFROM2SHORT(IDM_ABORT, TRUE),
                    127:                       MPFROM2SHORT(MIA_DISABLED, 0));
                    128: 
                    129:            iStatus = STATUS_WORKING;
                    130:            WinInvalidateRect(hwnd, NULL, FALSE);
                    131: 
                    132:            iCalcRep = iCurrentRep;
                    133:            lElapsedTime = WinGetCurrentTime(vhab);
                    134:            bContinueCalc = TRUE;
                    135: 
                    136:            for (A = 1.0, i = 0; i < iCalcRep; i++) {
                    137:                A = Savage(A);
                    138: 
                    139:                while (WinPeekMsg(vhab, &qmsg, NULL, 0, 0, PM_NOREMOVE)) {
                    140:                    if (qmsg.msg == WM_QUIT) {
                    141:                        bContinueCalc = FALSE;
                    142:                        break;
                    143:                    }
                    144: 
                    145:                    WinGetMsg(vhab, &qmsg, NULL, 0, 0);
                    146:                    WinDispatchMsg(vhab, &qmsg);
                    147: 
                    148:                    if (!bContinueCalc)
                    149:                        break;
                    150:                }
                    151: 
                    152:                if (!bContinueCalc)
                    153:                    break;
                    154:            }
                    155: 
                    156:            if (bContinueCalc) {
                    157:                lElapsedTime = WinGetCurrentTime(vhab) - lElapsedTime;
                    158:                iStatus = STATUS_DONE;
                    159:            } else {
                    160:                iStatus = STATUS_READY;
                    161:            }
                    162:            WinInvalidateRect(hwnd, NULL, FALSE);
                    163: 
                    164:            WinSendMsg(vhwndMenu, MM_SETITEMATTR, MPFROM2SHORT(IDM_START, TRUE),
                    165:                       MPFROM2SHORT(MIA_DISABLED, 0));
                    166:            WinSendMsg(vhwndMenu, MM_SETITEMATTR, MPFROM2SHORT(IDM_ABORT, TRUE),
                    167:                       MPFROM2SHORT(MIA_DISABLED, MIA_DISABLED));
                    168:            break;
                    169: 
                    170:        case IDM_ABORT:
                    171:            bContinueCalc = FALSE;
                    172:            break;
                    173: 
                    174:        }
                    175: 
                    176:     case WM_PAINT:
                    177:        Paint(hwnd, iStatus, iCalcRep, lElapsedTime);
                    178:        break;
                    179: 
                    180:     default:
                    181:        return WinDefWindowProc(hwnd, msg, mp1, mp2);
                    182:     }
                    183: 
                    184:     return 0L;
                    185: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.