home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
viscobv6.zip
/
vac22os2
/
ibmcobol
/
samples
/
toolkit
/
pm
/
template
/
user.c
< prev
next >
Wrap
C/C++ Source or Header
|
1996-11-19
|
7KB
|
228 lines
/**************************************************************************
* File name : user.c
*
* Description: This module contains the code for processing messages
* sent to the standard window that the standard window does
* not process. The application developer need only modify
* this file in order to implement new menu items or process
* messages not handled by the standard message routine.
*
* This source file contains the following functions:
*
* UserWndProc(hwnd, msg, mp1, mp2)
* UserCommand(mp1, mp2)
*
* Concepts : message processing
*
* API's : WinDefWindowProc
* WinSendMsg
*
* Files : OS2.H, MAIN.H, DLG.H, XTRN.H
*
* Copyright (C) 1991 IBM Corporation
*
* DISCLAIMER OF WARRANTIES. The following [enclosed] code is
* sample code created by IBM Corporation. This sample code is not
* part of any standard or IBM product and is provided to you solely
* for the purpose of assisting you in the development of your
* applications. The code is provided "AS IS", without
* warranty of any kind. IBM shall not be liable for any damages
* arising out of your use of the sample code, even if they have been
* advised of the possibility of such damages. *
*************************************************************************/
/*
* Include files, macros, defined constants, and externs
*/
#define INCL_WINMENUS
#include <os2.h>
#include "main.h"
#include "dlg.h"
#include "xtrn.h"
/*
* Global variables
*/
/*
* Entry point declarations
*/
/**************************************************************************
*
* Name : UserWndProc(hwnd, msg, mp1, mp2)
*
* Description: Process any messages sent to hwndMain that
* are not processed by the standard window procedure.
*
* Concepts: Routine is called for each message MainWndProc
* does not process.
*
* A switch statement branches control based upon
* the message passed. Any messages not processed
* here must be passed onto WinDefWindowProc().
*
* API's : WinDefWindowProc
*
* Parameters : hwnd = window handle
* msg = message i.d.
* mp1 = first message parameter
* mp2 = second message parameter
*
* Return : Return value dependent upon the message processed
*
*************************************************************************/
MRESULT UserWndProc(HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2)
{
switch(msg)
{
/*
* Add case statements for message ids you wish to process.
*/
default: /* default must call WinDefWindowProc() */
return(WinDefWindowProc(hwnd, msg, mp1, mp2));
break;
}
return (MRESULT)0;
} /* End of UserWndProc */
/**************************************************************************
*
* Name : UserCommand(mp1, mp2)
*
* Description: Process any WM_COMMAND messages sent to hwndMain
* that are not processed by MainCommand.
*
* Concepts: Routine is called for each WM_COMMAND that is
* not posted by a standard menu item.
*
* A switch statement branches control based upon
* the id of the control which posted the message.
*
* API's : [none]
*
* Parameters : mp1 = first message parameter
* mp2 = second message parameter
*
* Return : [none]
*
*************************************************************************/
VOID UserCommand(MPARAM mp1, MPARAM mp2)
{
switch(SHORT1FROMMP(mp1))
{
/*
* Add case statements for menuitem ids you wish to process.
*/
default:
break;
}
/* This routine currently doesn't use the mp2 parameter but
* it is referenced here to prevent an 'Unreferenced Parameter'
* warning at compile time.
*/
mp2;
} /* End of UserCommand */
/**************************************************************************
*
* Name : InitMenu()
*
* Description: Processes the WM_INITMENU message for the main window,
* disabling any menus that are not active.
*
* Concepts: Routine is called each time a menu is dropped.
*
* A switch statement branches control based upon
* the id of the menu that is being displayed.
*
* API's : [none]
*
* Parameters : mp1 = first message parameter
* mp2 = second message parameter
*
* Return : [none]
*
*************************************************************************/
VOID InitMenu(MPARAM mp1, MPARAM mp2)
{
/* define a shorthand way of denoting the menu handle */
#define hwndMenu HWNDFROMMP(mp2)
switch(SHORT1FROMMP(mp1))
{
case IDM_FILE:
break;
case IDM_HELP:
/*
* Enable or disable the Help menu depending upon whether the
* help manager has been enabled
*/
EnableMenuItem(hwndMenu, IDM_HELPUSINGHELP, fHelpEnabled);
EnableMenuItem(hwndMenu, IDM_HELPGENERAL, fHelpEnabled);
EnableMenuItem(hwndMenu, IDM_HELPKEYS, fHelpEnabled);
EnableMenuItem(hwndMenu, IDM_HELPINDEX, fHelpEnabled);
/* REMEMBER: add a case for IDM_HELPTUTORIAL if you include
* the Tutorial menu item.
*/
break;
default:
break;
}
#undef hwndMenu
} /* End of InitMenu */
/**************************************************************************
*
* Name : EnableMenuItem(hwndMenu, idItem, fEnable)
*
* Description: Enables or disables the menu item
*
* Concepts: Called whenever a menu item is to be enabled or
* disabled
*
* Sends a MM_SETITEMATTR to the menu with the
* given item id. Sets the MIA_DISABLED attribute
* flag if the item is to be disabled, clears the flag
* if enabling.
*
* API's : WinSendMsg
*
* Parameters : hwndmenu = menu window handle
* idItem = menu item i.d.
* fEnable = enable (yes) or disable (no)
*
* Return : [none]
*
*************************************************************************/
VOID EnableMenuItem(HWND hwndMenu, USHORT idItem, BOOL fEnable)
{
SHORT fsFlag;
if(fEnable)
fsFlag = 0;
else
fsFlag = MIA_DISABLED;
WinSendMsg(hwndMenu,
MM_SETITEMATTR,
MPFROM2SHORT(idItem, TRUE),
MPFROM2SHORT(MIA_DISABLED, fsFlag));
} /* End of EnableMenuItem() */
/*************************** End of user.c ****************************/