Annotation of pmsdk/samples/clock/dialogs.c, revision 1.1.1.1

1.1       root        1: /*
                      2:     dialogs.c          Dialog procedures for PM Clock Application
                      3: 
                      4:     Created by Microsoft Corporation, 1989
                      5: */
                      6: #define INCL_WINDIALOGS
                      7: #define INCL_WINBUTTONS
                      8: #define INCL_WINSYS
                      9: #include <os2def.h>
                     10: #include <pmwin.h>
                     11: #include "dialogs.h"
                     12: 
                     13: /* defined in paint.c */
                     14: extern USHORT usMajorTickPref ;
                     15: extern USHORT usMinorTickPref ;
                     16: extern LONG clrBackground ;
                     17: extern LONG clrFace ;
                     18: extern LONG clrHourHand ;
                     19: extern LONG clrMinuteHand ;
                     20: 
                     21: /* defined in clock.c */
                     22: extern HWND hwndFrame ;
                     23: 
                     24: /*
                     25:     ClkAboutDlgProc()          "About..." dialog
                     26: 
                     27:     Returns:   MRESULT, 0 or return value from WinDefDlgProc
                     28: */
                     29: MRESULT CALLBACK ClkAboutDlgProc ( HWND hwnd , USHORT usMsg ,
                     30:                                   MPARAM mp1 , MPARAM mp2 )
                     31: {
                     32:     if ( usMsg == WM_COMMAND ) {
                     33:        WinDismissDlg ( hwnd , TRUE ) ;
                     34:        return 0L ;
                     35:     }
                     36:     else return WinDefDlgProc ( hwnd , usMsg , mp1 , mp2 ) ;
                     37: }
                     38: 
                     39: 
                     40: /*
                     41:     ClkTicksDlgProc()          "Ticks..." dialog
                     42: 
                     43:     Returns: MRESULT, 0 or return value from WinDefDlgProc
                     44: */
                     45: MRESULT CALLBACK ClkTicksDlgProc ( HWND hwnd , USHORT usMsg ,
                     46:                                   MPARAM mp1 , MPARAM mp2 )
                     47: {
                     48:     static USHORT usMajorTickSel ;
                     49:     static USHORT usMinorTickSel ;
                     50:     USHORT usButtonID ;
                     51: 
                     52:     switch ( usMsg ) {
                     53: 
                     54:        case WM_INITDLG :
                     55: 
                     56:            /* show the current major tick preference */
                     57:            WinSendMsg ( WinWindowFromID ( hwnd ,
                     58:                                           CLKTM_MAJOR | usMajorTickPref ) ,
                     59:                         BM_SETCHECK , MPFROM2SHORT ( TRUE , NULL ) , NULL ) ;
                     60: 
                     61:            /* show the current minor tick preference */
                     62:            WinSendMsg ( WinWindowFromID ( hwnd ,
                     63:                                           CLKTM_MINOR | usMinorTickPref ) ,
                     64:                         BM_SETCHECK , MPFROM2SHORT ( TRUE , NULL ) , NULL ) ;
                     65: 
                     66:            /* load the selection values from the preferences */
                     67:            usMajorTickSel = usMajorTickPref ;
                     68:            usMinorTickSel = usMinorTickPref ;
                     69: 
                     70:            /* let the default dialog procedure handle anything else */
                     71:            break ;
                     72: 
                     73:        case WM_COMMAND :
                     74: 
                     75:            switch ( LOUSHORT ( mp1 ) ) {
                     76: 
                     77:                case DID_OK :
                     78: 
                     79:                    /* store away selections as preferences */
                     80:                    usMajorTickPref = usMajorTickSel ;
                     81:                    usMinorTickPref = usMinorTickSel ;
                     82: 
                     83:                    /* repaint with the new preferences */
                     84:                    WinInvalidateRect ( hwndFrame , NULL, TRUE ) ;
                     85: 
                     86:                case DID_CANCEL :
                     87:                    WinDismissDlg ( hwnd , TRUE ) ;
                     88:            }
                     89: 
                     90:            return NULL ;
                     91: 
                     92:        case WM_CONTROL :
                     93: 
                     94:            if ( SHORT2FROMMP ( mp1 ) == BN_CLICKED ) {
                     95: 
                     96:                usButtonID = SHORT1FROMMP ( mp1 ) ;
                     97: 
                     98:                switch ( usButtonID & 0xff00 ) {
                     99: 
                    100:                    case CLKTM_MAJOR :
                    101:                        usMajorTickSel = LOBYTE ( usButtonID ) ;
                    102:                        break ;
                    103: 
                    104:                    case CLKTM_MINOR :
                    105:                        usMinorTickSel = LOBYTE ( usButtonID ) ;
                    106:                        break ;
                    107:                }
                    108:            }
                    109: 
                    110:            /* fall through to the default control processing */
                    111:     }
                    112: 
                    113:     return WinDefDlgProc ( hwnd , usMsg , mp1 , mp2 ) ;
                    114: }
                    115: 
                    116: 
                    117: /*
                    118:     ClkColorsDlgProc()         "Clock Color Preferences" Dialog
                    119: 
                    120:     Returns: MRESULT, 0 or return value from WinDefDlgProc
                    121: */
                    122: MRESULT CALLBACK ClkColorsDlgProc ( HWND hwnd , USHORT usMsg ,
                    123:                                   MPARAM mp1 , MPARAM mp2 )
                    124: {
                    125:     USHORT usButtonID ;
                    126:     static USHORT usCheckedButtonID ;
                    127:     HWND hwndButton ;
                    128:     RECTL rclButton , rclButtonInterior ;
                    129:     static LONG clrBackgroundNew ;
                    130:     static LONG clrFaceNew ;
                    131:     static LONG clrHourHandNew ;
                    132:     static LONG clrMinuteHandNew ;
                    133:     static LONG * pclrNew ;
                    134: 
                    135:     switch ( usMsg ) {
                    136: 
                    137:        case WM_INITDLG :
                    138: 
                    139:            /* load the new values from the current ones */
                    140:            clrBackgroundNew = clrBackground ;
                    141:            clrFaceNew = clrFace ;
                    142:            clrHourHandNew = clrHourHand ;
                    143:            clrMinuteHandNew = clrMinuteHand ;
                    144: 
                    145:            /* click the "Background" radio button */
                    146:            WinSendMsg ( WinWindowFromID ( hwnd , CLKCLR_BACKGROUND ) ,
                    147:                         BM_CLICK , MPFROMSHORT ( TRUE ) , NULL ) ;
                    148: 
                    149:            /* let the default dialog procedure handle anything else */
                    150:            break ;
                    151: 
                    152:        case WM_COMMAND :
                    153: 
                    154:            switch ( LOUSHORT ( mp1 ) ) {
                    155:                case DID_OK :
                    156: 
                    157:                    /* store the new values */
                    158:                    clrBackground = clrBackgroundNew ;
                    159:                    clrFace = clrFaceNew ;
                    160:                    clrHourHand = clrHourHandNew ;
                    161:                    clrMinuteHand = clrMinuteHandNew ;
                    162: 
                    163:                    /* repaint with the new colors */
                    164:                    WinInvalidateRect ( hwndFrame , NULL, TRUE ) ;
                    165: 
                    166:                case DID_CANCEL :
                    167: 
                    168:                    WinDismissDlg ( hwnd , TRUE ) ;
                    169:            }
                    170:            return NULL ;
                    171: 
                    172:        case WM_CONTROL :
                    173: 
                    174:            usButtonID = SHORT1FROMMP ( mp1 ) ;
                    175: 
                    176:            /* selecting a new object */
                    177:            if ( usButtonID & CLKCLR_OBJECTS ) {
                    178: 
                    179:                switch ( usButtonID ) {
                    180:                    case CLKCLR_BACKGROUND :
                    181:                        pclrNew = & clrBackgroundNew ;
                    182:                        break ;
                    183:                    case CLKCLR_FACE :
                    184:                        pclrNew = & clrFaceNew ;
                    185:                        break ;
                    186:                    case CLKCLR_HOURHAND :
                    187:                        pclrNew = & clrHourHandNew ;
                    188:                        break ;
                    189:                    case CLKCLR_MINUTEHAND :
                    190:                        pclrNew = & clrMinuteHandNew ;
                    191:                }
                    192: 
                    193:                /* click the button for the new object's current color */
                    194:                WinSendMsg (
                    195:                    WinWindowFromID ( hwnd ,
                    196:                        CLKCLR_BUTTONSHIFT + ( USHORT ) * pclrNew ) ,
                    197:                    BM_CLICK , MPFROMSHORT ( TRUE ) , NULL ) ;
                    198: 
                    199:                break ;
                    200:            }
                    201: 
                    202:            switch ( SHORT2FROMMP ( mp1 ) ) {
                    203: 
                    204:                case BN_CLICKED :
                    205: 
                    206:                    * pclrNew = ( LONG ) usButtonID - CLKCLR_BUTTONSHIFT ;
                    207: 
                    208:                    /* turn off the check state of the previously checked
                    209:                     * button and turn on the check state of the button
                    210:                     * just clicked */
                    211: 
                    212:                    WinSendMsg ( WinWindowFromID ( hwnd , usCheckedButtonID ) ,
                    213:                                 BM_SETCHECK , MPFROM2SHORT ( FALSE , NULL ) ,
                    214:                                 NULL ) ;
                    215:                    WinSendMsg ( WinWindowFromID ( hwnd , usButtonID ) ,
                    216:                                 BM_SETCHECK , MPFROM2SHORT ( TRUE , NULL ) ,
                    217:                                 NULL ) ;
                    218: 
                    219:                    usCheckedButtonID = usButtonID ;
                    220: 
                    221:                    break ;
                    222: 
                    223:                case BN_PAINT :
                    224: 
                    225:                    /* fill only the interior of the button, so we don't
                    226:                     * conflict with the focus indicator */
                    227: 
                    228:                    hwndButton = ( ( PUSERBUTTON ) mp2 ) -> hwnd ;
                    229:                    WinQueryWindowRect ( hwndButton , & rclButton ) ;
                    230:                    rclButton . xLeft ++ ;
                    231:                    rclButton . yBottom ++ ;
                    232:                    rclButton . xRight -- ;
                    233:                    rclButton . yTop -- ;
                    234:                    WinFillRect ( ( ( PUSERBUTTON ) mp2 ) -> hps ,
                    235:                                  & rclButton ,
                    236:                                  ( LONG ) usButtonID - CLKCLR_BUTTONSHIFT ) ;
                    237: 
                    238:                    /* hollow out those buttons which aren't checked */
                    239:                    if ( ! WinSendMsg ( WinWindowFromID ( hwnd , usButtonID ) ,
                    240:                                      BM_QUERYCHECK , NULL , NULL ) ) {
                    241:                        rclButtonInterior . xLeft = rclButton . xLeft + 4 ;
                    242:                        rclButtonInterior . yBottom = rclButton . yBottom + 4 ;
                    243:                        rclButtonInterior . xRight = rclButton . xRight - 4 ;
                    244:                        rclButtonInterior . yTop = rclButton . yTop - 4 ;
                    245:                        WinFillRect ( ( ( PUSERBUTTON ) mp2 ) -> hps ,
                    246:                                      & rclButtonInterior , SYSCLR_WINDOW ) ;
                    247:                    }
                    248: 
                    249:                    break ;
                    250:            }
                    251: 
                    252:            /* fall through to the default control processing */
                    253:     }
                    254: 
                    255:     return WinDefDlgProc ( hwnd , usMsg , mp1 , mp2 ) ;
                    256: }

unix.superglobalmegacorp.com

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