Annotation of pmsdk/samples/opendlg/hello/hello.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * HELLO.C -- A simple program which calls the OpenDlg library
                      3:  * Created by Microsoft Corporation, 1989
                      4:  */
                      5: #define INCL_PM
                      6: #include <os2.h>
                      7: #include <opendlg.h>
                      8: #include "hello.h"
                      9: /*
                     10:  * Globals
                     11:  */
                     12: HAB     hAB;
                     13: HMQ     hMqHello;
                     14: HWND    hWndHello;
                     15: HWND    hWndHelloFrame;
                     16: CHAR    szClassName[]  = "Hello World";
                     17: CHAR   szMessage[]     = " - File Dialog Sample";
                     18: CHAR   szExtension[]   = "\\*.*";
                     19: CHAR   szHelp[]        = "Help would go here.";
                     20: DLF    vdlf;
                     21: HFILE  vhFile;
                     22: /*
                     23:  * Main routine...initializes window and message queue
                     24:  */
                     25: int cdecl main( ) {
                     26:     QMSG qmsg;
                     27:     ULONG ctldata;
                     28: 
                     29:     hAB = WinInitialize(NULL);
                     30: 
                     31:     hMqHello = WinCreateMsgQueue(hAB, 0);
                     32: 
                     33:     if (!WinRegisterClass( hAB, (PCH)szClassName, (PFNWP)HelloWndProc,
                     34:                CS_SIZEREDRAW, 0))
                     35:         return( 0 );
                     36: 
                     37:     /* Create the window */
                     38:     ctldata = FCF_STANDARD & ~(FCF_ACCELTABLE);
                     39:     hWndHelloFrame = WinCreateStdWindow( HWND_DESKTOP, WS_VISIBLE, &ctldata,
                     40:                                          szClassName, szMessage,
                     41:                                          WS_VISIBLE, NULL, ID_RESOURCE,
                     42:                                         (HWND FAR *)&hWndHello );
                     43: 
                     44:     WinShowWindow( hWndHelloFrame, TRUE );
                     45: 
                     46:     /* Poll messages from event queue */
                     47:     while( WinGetMsg( hAB, (PQMSG)&qmsg, (HWND)NULL, 0, 0 ) )
                     48:         WinDispatchMsg( hAB, (PQMSG)&qmsg );
                     49: 
                     50:     /* Clean up */
                     51:     WinDestroyWindow( hWndHelloFrame );
                     52:     WinDestroyMsgQueue( hMqHello );
                     53:     WinTerminate( hAB );
                     54: }
                     55: 
                     56: MRESULT CALLBACK HelloWndProc(hWnd, msg, mp1, mp2)
                     57: /*
                     58:  * This routine processes WM_COMMAND, WM_PAINT.  It passes
                     59:  * everything else to the Default Window Procedure.
                     60:  */
                     61: HWND hWnd;
                     62: USHORT msg;
                     63: MPARAM mp1;
                     64: MPARAM mp2;
                     65: {
                     66:     HPS                hPS;
                     67:     POINTL     pt;
                     68:     CHARBUNDLE cb;
                     69:     RECTL      rcl;
                     70: 
                     71:     switch (msg) {
                     72: 
                     73:        case WM_COMMAND:
                     74:            switch (COMMANDMSG(&msg)->cmd) {
                     75: 
                     76:                case IDM_OPEN: /* Demonstrate Open... dialog call */
                     77:                    SetupDLF( &vdlf
                     78:                            , DLG_OPENDLG
                     79:                            , &vhFile
                     80:                            , szExtension
                     81:                            , NULL
                     82:                            , "Open Title"
                     83:                            , szHelp );
                     84:                    DlgFile(hWndHelloFrame, &vdlf);
                     85:                    break;
                     86: 
                     87:                case IDM_SAVE: /* Demonstrate Save As... dialog call */
                     88:                    SetupDLF( &vdlf
                     89:                            , DLG_SAVEDLG
                     90:                            , &vhFile
                     91:                            , szExtension
                     92:                            , NULL
                     93:                            , "Save Title"
                     94:                            , szHelp);
                     95:                    lstrcpy( (PSZ)vdlf.szOpenFile, (PSZ)"foo.bar");
                     96:                    DlgFile(hWndHelloFrame, &vdlf);
                     97:                    break;
                     98: 
                     99:                case IDM_ABOUT:
                    100:                    WinDlgBox(HWND_DESKTOP, hWnd, AboutDlgProc,
                    101:                              NULL, IDD_ABOUT, NULL);
                    102:                    return 0;
                    103: 
                    104:                default: break;
                    105:            }
                    106:            break;
                    107: 
                    108:        case WM_PAINT:
                    109:            /* Open the presentation space */
                    110:            hPS = WinBeginPaint(hWnd, NULL, &rcl);
                    111: 
                    112:            /* Fill the background with Dark Blue */
                    113:            WinFillRect(hPS, &rcl, CLR_DARKBLUE);
                    114: 
                    115:            /* Write "Hello World" in Red */
                    116:            pt.x = pt.y = 0L;
                    117:            cb.lColor = CLR_RED;
                    118:            GpiSetAttrs(hPS, PRIM_CHAR, CBB_COLOR, 0L, &cb);
                    119:            GpiCharStringAt(hPS, &pt, (LONG)sizeof(szClassName)-1, szClassName);
                    120: 
                    121:            /* Finish painting */
                    122:            WinEndPaint(hPS);
                    123:            break;
                    124: 
                    125:        default: return WinDefWindowProc(hWnd, msg, mp1, mp2); break;
                    126:     }
                    127:     return 0L;
                    128: }
                    129: 
                    130: MRESULT CALLBACK AboutDlgProc(hDlg, msg, mp1, mp2)
                    131: /*
                    132:     About... dialog procedure
                    133: */
                    134: HWND hDlg;
                    135: USHORT msg;
                    136: MPARAM mp1;
                    137: MPARAM mp2;
                    138: {
                    139:     switch(msg) {
                    140:        case WM_COMMAND:
                    141:            switch(COMMANDMSG(&msg)->cmd) {
                    142:                case DID_OK: WinDismissDlg(hDlg, TRUE); break;
                    143:                default: break;
                    144:            }
                    145:        default: return WinDefDlgProc(hDlg, msg, mp1, mp2);
                    146:     }
                    147:     return FALSE;
                    148: }

unix.superglobalmegacorp.com

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