This example uses WinDrawBitmap to draw the system-defined menu check mark bit map in response to the user selecting a menu item (WM_MENUSELECT), using the bit-map handle returned by WinGetSysBitmap.

#define INCL_WINWINDOWMGR       /* Window Manager Functions     */
#define INCL_WINPOINTERS        /* Window Pointer Functions     */
#define INCL_WINMESSAGEMGR      /* Window Message Functions     */
#define INCL_WINMENUS           /* Window Menu Functions        */

#include <os2.h>

HPS   hps;              /* presentation-space handle            */
HBITMAP hbmCheck;       /* check mark bit-map handle            */
HWND    hwndMenu;       /* menu handle                          */
USHORT  usItemId;       /* menu item id                         */
RECTL   rclItem;        /* item border rectangle                */
MPARAM  mpParam1;       /* Parameter 1 (menu item id)           */
MPARAM  mpParam2;       /* Parameter 2 (menu handle)            */

case WM_CREATE:
     /* obtain check mark bit-map handle */
     hbmCheck = WinGetSysBitmap(HWND_DESKTOP, SBMP_MENUCHECK);

case WM_MENUSELECT:
     usItemId = SHORT1FROMMP(mpParam1);
     hwndMenu = HWNDFROMMP(mpParam2);

     /* get rectangle of selected item */
     WinSendMsg(hwndMenu,
                MM_QUERYITEMRECT,
                MPFROM2SHORT(usItemId, TRUE),
                MPFROMP(&rclItem));

     /* draw the check mark in the lower left corner of item's
        rectangle */
     if (hbmCheck != NULL)
        {
        WinDrawBitmap(hps,
                     hbmCheck,         /* check mark           */
                     NULL,             /* draw whole bit map   */
                     (PPOINTL)&rclItem,/* bit-map destination  */
                     0L,               /* ignored since color  */
                     0L,               /* bit map */
                     DBM_NORMAL);      /* draw normal size     */
        }


[Back] [Next]