Annotation of os232sdk/toolkt20/c/samples/template/user.c, revision 1.1.1.1

1.1       root        1: /*==============================================================*\
                      2:  *  User.c - routines for handling messages not processed
                      3:  *              by the standard message processing routine
                      4:  *      Created 1989, 1990 Microsoft Corp.
                      5:  *--------------------------------------------------------------
                      6:  *
                      7:  *  This module contains the code for processing messages sent
                      8:  *  to the standard window that the standard window does not
                      9:  *  process.  The application developer need only modify this
                     10:  *  file in order to implement new menu items or process
                     11:  *  messages not handled by the standard message routine.
                     12:  *
                     13:  *--------------------------------------------------------------
                     14:  *
                     15:  *  This source file contains the following functions:
                     16:  *
                     17:  *      UserWndProc(hwnd, msg, mp1, mp2) - user window procedure
                     18:  *      UserCommand(mp1, mp2) - user WM_COMMAND processor
                     19:  *
                     20: \*==============================================================*/
                     21: 
                     22: /*--------------------------------------------------------------*\
                     23:  *  Include files, macros, defined constants, and externs
                     24: \*--------------------------------------------------------------*/
                     25: 
                     26: #define INCL_WINMENUS
                     27: 
                     28: #include <os2.h>
                     29: #include "main.h"
                     30: #include "dlg.h"
                     31: #include "xtrn.h"
                     32: 
                     33: /*--------------------------------------------------------------*\
                     34:  *  Global variables
                     35: \*--------------------------------------------------------------*/
                     36: 
                     37: 
                     38: /*--------------------------------------------------------------*\
                     39:  *  Entry point declarations
                     40: \*--------------------------------------------------------------*/
                     41: 
                     42: 
                     43: /****************************************************************\
                     44:  *  Non-standard window message processing routine
                     45:  *--------------------------------------------------------------
                     46:  *
                     47:  *  Name:   UserWndProc(hwnd, msg, mp1, mp2)
                     48:  *
                     49:  *  Purpose: Process any messages sent to hwndMain that
                     50:  *              are not processed by the standard window
                     51:  *              procedure
                     52:  *
                     53:  *  Usage:  Routine is called for each message MainWndProc
                     54:  *          does not process
                     55:  *
                     56:  *  Method: A switch statement branches control based upon
                     57:  *          the message passed.  Any messages not processed
                     58:  *          here must be passed onto WinDefWindowProc()
                     59:  *
                     60:  *  Returns: Return value dependent upon the message processed
                     61:  *
                     62: \****************************************************************/
                     63: MRESULT UserWndProc(hwnd, msg, mp1, mp2)
                     64: HWND hwnd;      /* handle of window */
                     65: USHORT msg;     /* id of message */
                     66: MPARAM mp1;     /* first message parameter */
                     67: MPARAM mp2;     /* second message parameter */
                     68: {
                     69: 
                     70:     switch(msg)  {
                     71: 
                     72:     /*--------------------------------------------------------------*\
                     73:      *  Add case statements for message ids you wish to process
                     74:     \*--------------------------------------------------------------*/
                     75: 
                     76: 
                     77:         default:    /* default must call WinDefWindowProc() */
                     78:             return(WinDefWindowProc(hwnd, msg, mp1, mp2));
                     79:             break;
                     80:     }
                     81: 
                     82:     return (MRESULT)0;
                     83: 
                     84: }   /* UserWndProc() */
                     85: 
                     86: 
                     87: /****************************************************************\
                     88:  *  Non-standard menu item command processing procedure
                     89:  *--------------------------------------------------------------
                     90:  *
                     91:  *  Name:   UserCommand(mp1, mp2)
                     92:  *
                     93:  *  Purpose: Process any WM_COMMAND messages sent to hwndMain
                     94:  *              that are not processed by MainCommand
                     95:  *
                     96:  *  Usage:  Routine is called for each WM_COMMAND that is
                     97:  *          not posted by a standard menu item
                     98:  *
                     99:  *  Method: A switch statement branches control based upon
                    100:  *          the id of the control which posted the message
                    101:  *
                    102:  *  Returns:
                    103: \****************************************************************/
                    104: VOID UserCommand(mp1, mp2)
                    105: MPARAM mp1;     /* first message parameter */
                    106: MPARAM mp2;     /* second message parameter */
                    107: {
                    108: 
                    109:     switch(SHORT1FROMMP(mp1))  {
                    110: 
                    111:     /*--------------------------------------------------------------*\
                    112:      *  Add case statements for menuitem ids you wish to process
                    113:     \*--------------------------------------------------------------*/
                    114: 
                    115: 
                    116: 
                    117:         default:
                    118:             break;
                    119:     }
                    120: 
                    121:     /* This routine currently doesn't use the mp2 parameter but       *\
                    122:      *  it is referenced here to prevent an 'Unreferenced Parameter'
                    123:     \*  warning at compile time.                                      */
                    124:     mp2;
                    125: 
                    126: }   /* UserCommand() */
                    127: 
                    128: /****************************************************************\
                    129:  *  Menu item intialization routine
                    130:  *--------------------------------------------------------------
                    131:  *
                    132:  *  Name:   InitMenu(mp1, mp2)
                    133:  *
                    134:  *  Purpose: Processes the WM_INITMENU message for the main window,
                    135:  *              disabling any menus that are not active
                    136:  *
                    137:  *  Usage:  Routine is called each time a menu is dropped
                    138:  *
                    139:  *  Method: A switch statement branches control based upon
                    140:  *          the id of the menu that is being displayed
                    141:  *
                    142:  *  Returns:
                    143: \****************************************************************/
                    144: VOID InitMenu(mp1, mp2)
                    145: MPARAM mp1;     /* first message parameter */
                    146: MPARAM mp2;     /* second message parameter */
                    147: {
                    148: 
                    149: /* define a shorthand way of denoting the menu handle */
                    150: #define hwndMenu        HWNDFROMMP(mp2)
                    151: 
                    152:     switch(SHORT1FROMMP(mp1))  {
                    153:         case IDM_FILE:
                    154:             /*
                    155:              * The Print, Print Setup, and Page Setup menu items of the
                    156:              * File menu will be enabled if printing is enabled, otherwise
                    157:              * they will be disabled
                    158:              */
                    159: 
                    160:             EnableMenuItem(hwndMenu, IDM_FILEPRINT, fPrintEnabled);
                    161:             EnableMenuItem(hwndMenu, IDM_FILEPRINTSETUP, fPrintEnabled);
                    162:             EnableMenuItem(hwndMenu, IDM_FILEPAGESETUP, fPrintEnabled);
                    163: 
                    164:             break;
                    165: 
                    166:         case IDM_HELP:
                    167:             /*
                    168:              * Enable or disable the Help menu depending upon whether the
                    169:              * help manager has been enabled
                    170:              */
                    171:             EnableMenuItem(hwndMenu, IDM_HELPHELPFORHELP, fHelpEnabled);
                    172:             EnableMenuItem(hwndMenu, IDM_HELPEXTENDED, fHelpEnabled);
                    173:             EnableMenuItem(hwndMenu, IDM_HELPKEYS, fHelpEnabled);
                    174:             EnableMenuItem(hwndMenu, IDM_HELPINDEX, fHelpEnabled);
                    175: 
                    176:             /** REMEMBER: add a case for IDM_HELPTUTORIAL if you include
                    177:                 the Tutorial menu item   **/
                    178: 
                    179:             break;
                    180: 
                    181:         default:
                    182:             break;
                    183:     }
                    184: 
                    185: #undef hwndMenu
                    186: 
                    187: }   /* InitMenu() */
                    188: 
                    189: /****************************************************************\
                    190:  *  Enables/Disables the menu item of the given menu
                    191:  *--------------------------------------------------------------
                    192:  *
                    193:  *  Name:   EnableMenuItem(hwndMenu, idItem, fEnable)
                    194:  *
                    195:  *  Purpose: Enables or disables the menu item
                    196:  *
                    197:  *  Usage:  Called whenever a menu item is to be enabled or
                    198:  *          disabled
                    199:  *
                    200:  *  Method: Sends a MM_SETITEMATTR to the menu with the
                    201:  *          given item id.  Sets the MIA_DISABLED attribute
                    202:  *          flag if the item is to be disabled, clears the flag
                    203:  *          if enabling
                    204:  *
                    205:  *  Returns:
                    206:  *
                    207: \****************************************************************/
                    208: VOID EnableMenuItem(hwndMenu, idItem, fEnable)
                    209: HWND hwndMenu;      /* Handle to the menu */
                    210: SHORT idItem;       /* Id of the menu item to be enabled/disabled */
                    211: BOOL fEnable;       /* flag to set enable or disable bit */
                    212: {
                    213:     SHORT fsFlag;
                    214: 
                    215:     if(fEnable)
                    216:         fsFlag = 0;
                    217:     else
                    218:         fsFlag = MIA_DISABLED;
                    219: 
                    220:     WinSendMsg(hwndMenu,
                    221:                MM_SETITEMATTR,
                    222:                MPFROM2SHORT(idItem, TRUE),
                    223:                MPFROM2SHORT(MIA_DISABLED, fsFlag));
                    224: 
                    225: }   /* EnableMenuItem() */

unix.superglobalmegacorp.com

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