Annotation of mstools/ole20/samples/gizmobar/api.c, revision 1.1.1.1

1.1       root        1: /*
                      2:  * API.C
                      3:  * GizmoBar Version 1.00, March 1993
                      4:  *
                      5:  * API functions affecting a GizmoBar and a message processing function to
                      6:  * handle the equivalent called through messages.
                      7:  *
                      8:  * Copyright (c)1992 Microsoft Corporation, All Rights Reserved
                      9:  *
                     10:  * Kraig Brockschmidt, Software Design Engineer
                     11:  * Microsoft Systems Developer Relations
                     12:  *
                     13:  * Internet  :  [email protected]
                     14:  * Compuserve:  >INTERNET:[email protected]
                     15:  */
                     16: 
                     17: #ifdef WIN32
                     18: #define _INC_OLE
                     19: #define __RPC_H__
                     20: #endif
                     21: 
                     22: 
                     23: #define STRICT
                     24: #include <windows.h>
                     25: #include "gizmoint.h"
                     26: 
                     27: 
                     28: 
                     29: /*
                     30:  * GBMessageHandler
                     31:  *
                     32:  * Purpose:
                     33:  *  Processes control messages that are equivalents of available
                     34:  *  control API.  The data passed with these messages is simply
                     35:  *  extracted from structures and passed as parameters to their
                     36:  *  equivalent function.
                     37:  *
                     38:  * Parameters:
                     39:  *  <Standard Message Parameters> plus
                     40:  *  pGB             PGIZMOBAR providing control-specific data.
                     41:  *
                     42:  * Return Value:
                     43:  *  LRESULT         Return value from equivalent API function.
                     44:  */
                     45: 
                     46: LRESULT GBMessageHandler(HWND hWnd, UINT iMsg, WPARAM wParam
                     47:     , LPARAM lParam, PGIZMOBAR pGB)
                     48:     {
                     49:     LRESULT         lRet=0L;
                     50:     PCREATEGIZMO    pCG;
                     51:     PGBMSG          pMsg;
                     52:     PGBGETTEXT      pGT;
                     53:     PGBGETINT       pGI;
                     54:     PGBSETINT       pSI;
                     55: 
                     56:     if (NULL==pGB)
                     57:         return 0L;
                     58: 
                     59:     switch (iMsg)
                     60:         {
                     61:         case GBM_HWNDASSOCIATESET:
                     62:             lRet=(LRESULT)(UINT)GBHwndAssociateSet(hWnd, (HWND)wParam);
                     63:             break;
                     64: 
                     65:         case GBM_HWNDASSOCIATEGET:
                     66:             lRet=(LRESULT)(UINT)GBHwndAssociateGet(hWnd);
                     67:             break;
                     68: 
                     69:         case GBM_GIZMOADD:
                     70:             pCG=(PCREATEGIZMO)lParam;
                     71:             lRet=(LRESULT)GBGizmoAdd(pCG->hWndParent, pCG->iType, pCG->iGizmo
                     72:                 , pCG->uID, pCG->dx, pCG->dy, pCG->pszText, pCG->hBmp
                     73:                 , pCG->iImage, pCG->uState);
                     74:             break;
                     75: 
                     76:         case GBM_GIZMOREMOVE:
                     77:             lRet=(LRESULT)GBGizmoRemove(hWnd, wParam);
                     78:             break;
                     79: 
                     80:         case GBM_GIZMOSENDMESSAGE:
                     81:             pMsg=(PGBMSG)lParam;
                     82:             lRet=GBGizmoSendMessage(hWnd, wParam, pMsg->iMsg, pMsg->wParam, pMsg->lParam);
                     83:             break;
                     84: 
                     85:         case GBM_GIZMOSHOW:
                     86:             lRet=(LRESULT)GBGizmoShow(hWnd, wParam, (BOOL)LOWORD(lParam));
                     87:             break;
                     88: 
                     89:         case GBM_GIZMOENABLE:
                     90:             lRet=(LRESULT)GBGizmoEnable(hWnd, wParam, (BOOL)LOWORD(lParam));
                     91:             break;
                     92: 
                     93:         case GBM_GIZMOCHECK:
                     94:             lRet=(LRESULT)GBGizmoCheck(hWnd, wParam, (BOOL)LOWORD(lParam));
                     95:             break;
                     96: 
                     97:         case GBM_GIZMOFOCUSSET:
                     98:             lRet=(LRESULT)GBGizmoFocusSet(hWnd, wParam);
                     99:             break;
                    100: 
                    101:         case GBM_GIZMOEXIST:
                    102:             lRet=(LRESULT)GBGizmoExist(hWnd, wParam);
                    103:             break;
                    104: 
                    105:         case GBM_GIZMOTYPEGET:
                    106:             lRet=(LRESULT)GBGizmoTypeGet(hWnd, wParam);
                    107:             break;
                    108: 
                    109:         case GBM_GIZMODATASET:
                    110:             lRet=(LRESULT)GBGizmoDataSet(hWnd, wParam, (DWORD)lParam);
                    111:             break;
                    112: 
                    113:         case GBM_GIZMODATAGET:
                    114:             lRet=(LRESULT)GBGizmoDataGet(hWnd, wParam);
                    115:             break;
                    116: 
                    117:         case GBM_GIZMONOTIFYSET:
                    118:             lRet=(LRESULT)GBGizmoNotifySet(hWnd, wParam, (BOOL)LOWORD(lParam));
                    119:             break;
                    120: 
                    121:         case GBM_GIZMONOTIFYGET:
                    122:             lRet=(LRESULT)GBGizmoNotifyGet(hWnd, wParam);
                    123:             break;
                    124: 
                    125:         case GBM_GIZMOTEXTGET:
                    126:             pGT=(PGBGETTEXT)lParam;
                    127:             lRet=(LRESULT)GBGizmoTextGet(hWnd, wParam, pGT->psz, pGT->cch);
                    128:             break;
                    129: 
                    130:         case GBM_GIZMOTEXTSET:
                    131:             GBGizmoTextSet(hWnd, wParam, (LPSTR)lParam);
                    132:             break;
                    133: 
                    134:         case GBM_GIZMOINTGET:
                    135:             pGI=(PGBGETINT)lParam;
                    136:             lRet=(LRESULT)GBGizmoIntGet(hWnd, wParam, &pGI->fSuccess, pGI->fSigned);
                    137:             break;
                    138: 
                    139: 
                    140:         case GBM_GIZMOINTSET:
                    141:             pSI=(PGBSETINT)lParam;
                    142:             GBGizmoIntSet(hWnd, wParam, pSI->uValue, pSI->fSigned);
                    143:             break;
                    144: 
                    145:         default:
                    146:             break;
                    147:         }
                    148: 
                    149:     return lRet;
                    150:     }
                    151: 
                    152: 
                    153: 
                    154: 
                    155: 
                    156: 
                    157: 
                    158: 
                    159: 
                    160: 
                    161: /*
                    162:  * PGizmoFromHwndID
                    163:  *
                    164:  * Purpose:
                    165:  *  Retrieves the pGizmo for the given GizmoBar and the gizmo ID.
                    166:  *
                    167:  * Parameters:
                    168:  *  hWnd            HWND of a GizmoBar.
                    169:  *  uID             UINT gizmo identifier.
                    170:  *
                    171:  * Return Value:
                    172:  *  PGIZMO          NULL if the gizmo does not exist or hWnd is invalid.
                    173:  *                  non-NULL PGIZMO otherwise.
                    174:  */
                    175: 
                    176: PGIZMO PGizmoFromHwndID(HWND hWnd, UINT uID)
                    177:     {
                    178:     PGIZMOBAR     pGB;
                    179: 
                    180:     if (!IsWindow(hWnd))
                    181:         return FALSE;
                    182: 
                    183:     pGB=(PGIZMOBAR)GetWindowLong(hWnd, GBWL_STRUCTURE);
                    184: 
                    185:     if (NULL==pGB)
                    186:         return FALSE;
                    187: 
                    188:     return GizmoPFind(&pGB->pGizmos, uID);
                    189:     }
                    190: 
                    191: 
                    192: 
                    193: 
                    194: 
                    195: 
                    196: /*
                    197:  * GBHwndAssociateSet
                    198:  *
                    199:  * Purpose:
                    200:  *  Changes the associate window of a GizmoBar.
                    201:  *
                    202:  * Parameters:
                    203:  *  hWnd            HWND of the control window.
                    204:  *
                    205:  * Set Parameters:
                    206:  *  hWndAssociate   HWND of new associate.
                    207:  *
                    208:  * Return Value:
                    209:  *  HWND            Handle of previous associate.
                    210:  */
                    211: 
                    212: HWND WINAPI GBHwndAssociateSet(HWND hWnd, HWND hWndNew)
                    213:     {
                    214:     HWND        hWndOld=NULL;
                    215:     PGIZMOBAR   pGB;
                    216:     UINT        uID;
                    217: 
                    218:     pGB=(PGIZMOBAR)GetWindowLong(hWnd, GBWL_STRUCTURE);
                    219: 
                    220:     if (NULL!=pGB)
                    221:         {
                    222: #ifdef WIN32
                    223:         uID=GetWindowLong(hWnd, GWL_ID);
                    224: #else
                    225:         uID=GetWindowWord(hWnd, GWW_ID);
                    226: #endif
                    227: 
                    228:         hWndOld=pGB->hWndAssociate;
                    229:         pGB->hWndAssociate=hWndNew;
                    230: 
                    231:         if (NULL!=hWndOld)
                    232:             SendCommand(hWndOld, uID, GBN_ASSOCIATELOSS, hWnd);
                    233: 
                    234:         if (NULL!=hWndNew)
                    235:             SendCommand(hWndNew, uID, GBN_ASSOCIATEGAIN, hWnd);
                    236:         }
                    237: 
                    238:     return hWndOld;
                    239:     }
                    240: 
                    241: 
                    242: 
                    243: 
                    244: 
                    245: /*
                    246:  * GBHwndAssociateGet
                    247:  *
                    248:  * Purpose:
                    249:  *  Retrieves the associate window of a GizmoBar
                    250:  *
                    251:  * Parameters:
                    252:  *  hWnd            HWND of the control window.
                    253:  *
                    254:  * Set Parameters:
                    255:  *  hWndAssociate   HWND of new associate.
                    256:  *
                    257:  * Return Value:
                    258:  *  HWND            Handle of current associate.
                    259:  */
                    260: 
                    261: HWND WINAPI GBHwndAssociateGet(HWND hWnd)
                    262:     {
                    263:     HWND        hWndOld=NULL;
                    264:     PGIZMOBAR   pGB;
                    265: 
                    266:     pGB=(PGIZMOBAR)GetWindowLong(hWnd, GBWL_STRUCTURE);
                    267: 
                    268:     if (NULL!=pGB)
                    269:         hWndOld=pGB->hWndAssociate;
                    270: 
                    271:     return hWndOld;
                    272:     }
                    273: 
                    274: 
                    275: 
                    276: 
                    277: 
                    278: /*
                    279:  * GBGizmoAdd
                    280:  *
                    281:  * Purpose:
                    282:  *  Creates a new gizmo on the GizmoBar.  Subsequent operations should
                    283:  *  be done using the identifier, uID, for this gizmo.
                    284:  *
                    285:  * Parameters:
                    286:  *  hWnd            HWND of the GizmoBar.
                    287:  *  iType           UINT type of the gizmo to create.
                    288:  *  iGizmo          UINT position (zero-based) at which to place the gizmo.
                    289:  *  uID             UINT identifier for WM_COMMAND from this gizmo.
                    290:  *  dx, dy          UINT dimensions of the gizmo.
                    291:  *  pszText         LPSTR initial text for edit, list, combo, and text gizmos.
                    292:  *  hBitmap         HBITMAP for gizmos of the button types (COMMAND or
                    293:  *                  ATTRIBUTE) specifies a source bitmap from which the
                    294:  *                  button image is taken.
                    295:  *  iImage          UINT index into hBitmap for the image for this button.
                    296:  *  uState          UINT initial state of the gizmo.
                    297:  *
                    298:  * Return Value:
                    299:  *  BOOL            TRUE if creation succeeded, FALSE otherwise.
                    300:  */
                    301: 
                    302: BOOL WINAPI GBGizmoAdd(HWND hWnd, UINT iType, UINT iGizmo, UINT uID
                    303:     , UINT dx, UINT dy, LPSTR pszText, HBITMAP hBmp, UINT iImage, UINT uState)
                    304:     {
                    305:     BOOL        fSuccess;
                    306:     PGIZMOBAR   pGB;
                    307:     PGIZMO      pGizmo;
                    308: 
                    309:     if (!IsWindow(hWnd))
                    310:         return FALSE;
                    311: 
                    312:     pGB=(PGIZMOBAR)GetWindowLong(hWnd, GBWL_STRUCTURE);
                    313: 
                    314:     if (NULL==pGB)
                    315:         return FALSE;
                    316: 
                    317:     /*
                    318:      * This automatically creates the windows, allocates structures, includes
                    319:      * the gizmo in pGB->pGizmos, and so forth.
                    320:      */
                    321:     pGizmo=GizmoPAllocate((LPINT)&fSuccess, &pGB->pGizmos, hWnd, iType
                    322:         , iGizmo, uID, dx, dy, pszText, hBmp, iImage, uState);
                    323: 
                    324:     if (fSuccess)
                    325:         {
                    326:         if (NULL!=pGB->hWndAssociate)
                    327:             {
                    328: #ifdef WIN32
                    329:             SendCommand(pGB->hWndAssociate,GBN_GIZMOADDED,
                    330:                                        GetWindowLong(hWnd, GWL_ID),hWnd);
                    331: #else
                    332:             SendCommand(pGB->hWndAssociate,GBN_GIZMOADDED,
                    333:                                        GetWindowWord(hWnd, GWW_ID),hWnd);
                    334: #endif
                    335:             }
                    336: 
                    337:         InvalidateRect(hWnd, NULL, TRUE);
                    338:         UpdateWindow(hWnd);
                    339:         }
                    340:     else
                    341:         GizmoPFree(&pGB->pGizmos, pGizmo);
                    342: 
                    343:     return fSuccess;
                    344:     }
                    345: 
                    346: 
                    347: 
                    348: 
                    349: 
                    350: /*
                    351:  * GBGizmoRemove
                    352:  *
                    353:  * Purpose:
                    354:  *  Removes an existing gizmo from the GizmoBar.
                    355:  *
                    356:  * Parameters:
                    357:  *  hWnd            HWND of the GizmoBar.
                    358:  *  uID             UINT identifier for this gizmo.
                    359:  *
                    360:  * Return Value:
                    361:  *  BOOL            TRUE if deletion succeeded, FALSE otherwise.
                    362:  */
                    363: 
                    364: BOOL WINAPI GBGizmoRemove(HWND hWnd, UINT uID)
                    365:     {
                    366:     PGIZMOBAR   pGB;
                    367:     PGIZMO      pGizmo;
                    368: 
                    369:     if (!IsWindow(hWnd))
                    370:         return FALSE;
                    371: 
                    372:     pGB=(PGIZMOBAR)GetWindowLong(hWnd, GBWL_STRUCTURE);
                    373: 
                    374:     if (NULL==pGB)
                    375:         return FALSE;
                    376: 
                    377:     pGizmo=GizmoPFind(&pGB->pGizmos, uID);
                    378: 
                    379:     if (NULL==pGizmo)
                    380:         return FALSE;
                    381: 
                    382:     GizmoPFree(&pGB->pGizmos, pGizmo);
                    383: 
                    384:     if (NULL!=pGB->hWndAssociate)
                    385:         {
                    386: #ifdef WIN32
                    387:         SendCommand(pGB->hWndAssociate, GBN_GIZMOREMOVED
                    388:             , GetWindowLong(hWnd, GWL_ID), hWnd);
                    389: #else
                    390:         SendCommand(pGB->hWndAssociate, GBN_GIZMOREMOVED
                    391:             , GetWindowWord(hWnd, GWW_ID), hWnd);
                    392: #endif
                    393:         }
                    394: 
                    395:     InvalidateRect(hWnd, NULL, TRUE);
                    396:     UpdateWindow(hWnd);
                    397:     return TRUE;
                    398:     }
                    399: 
                    400: 
                    401: 
                    402: 
                    403: 
                    404: 
                    405: /*
                    406:  * GBGizmoSendMessage
                    407:  *
                    408:  * Purpose:
                    409:  *  Implements the equivalent of SendMessage to a gizmo in the
                    410:  *  GizmoBar.  Separators, command buttons, and attribute buttons
                    411:  *  do not accept messages.
                    412:  *
                    413:  * Parameters:
                    414:  *  hWnd            HWND of the GizmoBar.
                    415:  *  uID             UINT identifier of the gizmo to affect.
                    416:  *  iMsg            UINT message to send.
                    417:  *  wParam          WPARAM of the message.
                    418:  *  lParam          LPARAM of the message.
                    419:  *
                    420:  * Return Value:
                    421:  *  LRESULT         Return value from the message.  0L if the
                    422:  *                  gizmo does not accept messages.
                    423:  */
                    424: 
                    425: LRESULT WINAPI GBGizmoSendMessage(HWND hWnd, UINT uID, UINT iMsg
                    426:     , WPARAM wParam, LPARAM lParam)
                    427:     {
                    428:     PGIZMO      pGizmo;
                    429:     LONG        lRet=0L;
                    430: 
                    431:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    432: 
                    433:     if (NULL!=pGizmo && NULL!=pGizmo->hWnd)
                    434:         lRet=SendMessage(pGizmo->hWnd, iMsg, wParam, lParam);
                    435: 
                    436:     return lRet;
                    437:     }
                    438: 
                    439: 
                    440: 
                    441: 
                    442: 
                    443: 
                    444: /*
                    445:  * GBGizmoShow
                    446:  *
                    447:  * Purpose:
                    448:  *  Shows or hides a control, adjusting the positions of all others
                    449:  *  to make room for or reuse the space for this control.
                    450:  *
                    451:  * Parameters:
                    452:  *  hWnd            HWND of the GizmoBar.
                    453:  *  uID             UINT identifier of the gizmo to affect.
                    454:  *  fShow           BOOL TRUE to show the gizmo, FALSE to hide it.
                    455:  *
                    456:  * Return Value:
                    457:  *  BOOL            TRUE if the function was successful, FALSE otherwise.
                    458:  */
                    459: 
                    460: BOOL WINAPI GBGizmoShow(HWND hWnd, UINT uID, BOOL fShow)
                    461:     {
                    462:     BOOL        fRet=FALSE;
                    463:     PGIZMO      pGizmo;
                    464: 
                    465:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    466: 
                    467:     if (NULL!=pGizmo)
                    468:         {
                    469:         if (fShow && pGizmo->fHidden)
                    470:             {
                    471:             if (NULL!=pGizmo->hWnd)
                    472:                 ShowWindow(pGizmo->hWnd, SW_SHOWNORMAL);
                    473: 
                    474:             GizmosExpand(pGizmo);
                    475:             }
                    476: 
                    477:         if (!fShow && !pGizmo->fHidden)
                    478:             {
                    479:             if (NULL!=pGizmo->hWnd)
                    480:                 ShowWindow(pGizmo->hWnd, SW_HIDE);
                    481: 
                    482:             GizmosCompact(pGizmo);
                    483:             }
                    484: 
                    485:         //This will be right even if we didn't change anything.
                    486:         pGizmo->fHidden=!fShow;
                    487:         }
                    488: 
                    489:     InvalidateRect(hWnd, NULL, TRUE);
                    490:     UpdateWindow(hWnd);
                    491:     return fRet;
                    492:     }
                    493: 
                    494: 
                    495: 
                    496: 
                    497: 
                    498: 
                    499: /*
                    500:  * GBGizmoEnable
                    501:  *
                    502:  * Purpose:
                    503:  *  Enables or disables a control on the GizmoBar.
                    504:  *
                    505:  * Parameters:
                    506:  *  hWnd            HWND of the GizmoBar.
                    507:  *  uID             UINT identifier of the gizmo to affect.
                    508:  *  fEnable         BOOL TRUE to enable the gizmo, FALSE otherwise.
                    509:  *
                    510:  * Return Value:
                    511:  *  BOOL            TRUE if the gizmo was previously disabled, FALSE
                    512:  *                  otherwise.
                    513:  */
                    514: 
                    515: BOOL WINAPI GBGizmoEnable(HWND hWnd, UINT uID, BOOL fEnable)
                    516:     {
                    517:     PGIZMO      pGizmo;
                    518:     BOOL        fRet=FALSE;
                    519: 
                    520:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    521: 
                    522:     if (NULL==pGizmo)
                    523:         return FALSE;
                    524: 
                    525:     fRet=(BOOL)(BUTTONGROUP_DISABLED & pGizmo->uState);
                    526: 
                    527:     //Use windows to enable or disable window gizmos
                    528:     if (NULL!=pGizmo->hWnd)
                    529:         EnableWindow(pGizmo->hWnd, fEnable);
                    530:     else
                    531:         {
                    532:         //If we're not down, command and attribute buttons act the same.
                    533:         if (!(BUTTONGROUP_DOWN & pGizmo->uState))
                    534:             GizmoPStateSet(hWnd, pGizmo, fEnable ? COMMANDBUTTON_UP : COMMANDBUTTON_DISABLED);
                    535:         else
                    536:             {
                    537:             //Attribute buttons are a little more sensitive with DOWNDISABLED
                    538:             GizmoPStateSet(hWnd, pGizmo
                    539:                 , fEnable ? ATTRIBUTEBUTTON_DOWN : ATTRIBUTEBUTTON_DOWNDISABLED);
                    540:             }
                    541:         }
                    542: 
                    543:     return fRet;
                    544:     }
                    545: 
                    546: 
                    547: 
                    548: 
                    549: 
                    550: 
                    551: 
                    552: /*
                    553:  * GBGizmoCheck
                    554:  *
                    555:  * Purpose:
                    556:  *  Checks or unchecks an attribute button in the GizmoBar.  If the
                    557:  *  gizmo is part of a group of mutually exclusive attributes, then
                    558:  *  other gizmos are unchecked when this one is checked.  If this is
                    559:  *  the only one checked in these circumstances, this function is a NOP.
                    560:  *
                    561:  * Parameters:
                    562:  *  hWnd            HWND of the GizmoBar.
                    563:  *  uID             UINT identifier of the gizmo to affect.
                    564:  *  fCheck          BOOL TRUE to check this gizmo, FALSE to uncheck.
                    565:  *
                    566:  * Return Value:
                    567:  *  BOOL            TRUE if the change took place.  FALSE otherwise.
                    568:  */
                    569: 
                    570: BOOL WINAPI GBGizmoCheck(HWND hWnd, UINT uID, BOOL fCheck)
                    571:     {
                    572:     PGIZMOBAR   pGB;
                    573:     PGIZMO      pGizmo;
                    574: 
                    575:     if (!IsWindow(hWnd))
                    576:         return FALSE;
                    577: 
                    578:     pGB=(PGIZMOBAR)GetWindowLong(hWnd, GBWL_STRUCTURE);
                    579: 
                    580:     if (NULL==pGB)
                    581:         return FALSE;
                    582: 
                    583:     pGizmo=GizmoPFind(&pGB->pGizmos, uID);
                    584: 
                    585:     if (NULL!=pGizmo)
                    586:         GizmoPCheck(hWnd, pGizmo, fCheck);
                    587: 
                    588:     return TRUE;
                    589:     }
                    590: 
                    591: 
                    592: 
                    593: 
                    594: 
                    595: 
                    596: /*
                    597:  * GBGizmoFocusSet
                    598:  *
                    599:  * Purpose:
                    600:  *  Sets the focus to a partuclar gizmo in the gizmo if that gizmo
                    601:  *  can accept the focus.  Separators, attribute buttons, text,
                    602:  *  and command buttons cannot have the focus.
                    603:  *
                    604:  * Parameters:
                    605:  *  hWnd            HWND of the GizmoBar.
                    606:  *  uID             UINT identifier of the gizmo to affect.
                    607:  *
                    608:  * Return Value:
                    609:  *  BOOL            TRUE if the focus was set.  FALSE otherwise, such as
                    610:  *                  when uID identifies a control that cannot have focus.
                    611:  */
                    612: 
                    613: UINT WINAPI GBGizmoFocusSet(HWND hWnd, UINT uID)
                    614:     {
                    615:     PGIZMO      pGizmo;
                    616:     BOOL        fRet=FALSE;
                    617: 
                    618:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    619: 
                    620:     if (NULL!=pGizmo && NULL!=pGizmo->hWnd)
                    621:         {
                    622:         fRet=TRUE;
                    623:         SetFocus(pGizmo->hWnd);
                    624:         }
                    625: 
                    626:     return fRet;
                    627:     }
                    628: 
                    629: 
                    630: 
                    631: 
                    632: 
                    633: /*
                    634:  * GBGizmoExist
                    635:  *
                    636:  * Purpose:
                    637:  *  Determines if a gizmo of a given identifier exists in the GizmoBar.
                    638:  *
                    639:  * Parameters:
                    640:  *  hWnd            HWND of the GizmoBar.
                    641:  *  uID             UINT identifier to verify.
                    642:  *
                    643:  * Return Value:
                    644:  *  BOOL            TRUE if the gizmo exists, FALSE otherwise.
                    645:  */
                    646: 
                    647: BOOL WINAPI GBGizmoExist(HWND hWnd, UINT uID)
                    648:     {
                    649:     return (NULL!=PGizmoFromHwndID(hWnd, uID));
                    650:     }
                    651: 
                    652: 
                    653: 
                    654: 
                    655: 
                    656: /*
                    657:  * GBGizmoTypeGet
                    658:  *
                    659:  * Purpose:
                    660:  *  Returns the type of the gizmo specified by the given identifer.
                    661:  *
                    662:  * Parameters:
                    663:  *  hWnd            HWND of the GizmoBar.
                    664:  *  uID             UINT identifier to find.
                    665:  *
                    666:  * Return Value:
                    667:  *  int             A GIZMOTYPE_* value if the function is successful,
                    668:  *                  otherwise -1.
                    669:  */
                    670: 
                    671: int WINAPI GBGizmoTypeGet(HWND hWnd, UINT uID)
                    672:     {
                    673:     int         iRet=-1;
                    674:     PGIZMO      pGizmo;
                    675: 
                    676:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    677: 
                    678:     if (NULL!=pGizmo)
                    679:         iRet=pGizmo->iType;
                    680: 
                    681:     return iRet;
                    682:     }
                    683: 
                    684: 
                    685: 
                    686: 
                    687: 
                    688: /*
                    689:  * GBGizmoDataSet
                    690:  * GBGizmoDataGet
                    691:  *
                    692:  * Purpose:
                    693:  *  Sets or retrieves an extra DWORD value associated with the given gizmo.
                    694:  *  Applications can store any information here they please.
                    695:  *
                    696:  * Parameters:
                    697:  *  hWnd            HWND of the GizmoBar.
                    698:  *  uID             UINT identifier of the gizmo.
                    699:  *  dwData          (Set only) DWORD data to store with the gizmo.
                    700:  *
                    701:  * Return Value:
                    702:  *  DWORD           Set:  Previous value
                    703:  *                  Get:  Current value
                    704:  */
                    705: 
                    706: DWORD WINAPI GBGizmoDataSet(HWND hWnd, UINT uID, DWORD dwData)
                    707:     {
                    708:     PGIZMO      pGizmo;
                    709:     DWORD       dw=0L;
                    710: 
                    711:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    712: 
                    713:     if (NULL!=pGizmo)
                    714:         {
                    715:         dw=pGizmo->dwData;
                    716:         pGizmo->dwData=dwData;
                    717:         }
                    718: 
                    719:     return dw;
                    720:     }
                    721: 
                    722: 
                    723: 
                    724: DWORD WINAPI GBGizmoDataGet(HWND hWnd, UINT uID)
                    725:     {
                    726:     PGIZMO      pGizmo;
                    727:     DWORD       dw=0L;
                    728: 
                    729:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    730: 
                    731:     if (NULL!=pGizmo)
                    732:         dw=pGizmo->dwData;
                    733: 
                    734:     return dw;
                    735:     }
                    736: 
                    737: 
                    738: 
                    739: 
                    740: 
                    741: 
                    742: /*
                    743:  * GBGizmoNotifySet
                    744:  * GBGizmoNotifyGet
                    745:  *
                    746:  * Purpose:
                    747:  *  Sets or retrieves the notify status of a gizmo.  If notify is FALSE,
                    748:  *  the no WM_COMMAND messages are sent from the GizmoBar to the parent
                    749:  *  window when this gizmo is used.
                    750:  *
                    751:  * Parameters:
                    752:  *  hWnd            HWND of the GizmoBar.
                    753:  *  uID             UINT identifier of the gizmo.
                    754:  *  fNotify         (Set only) BOOL new notify status to set.
                    755:  *
                    756:  * Return Value:
                    757:  *  BOOL            Set:  Previous value of the notify flag.
                    758:  *                  Get:  Current value of the notify flag.
                    759:  */
                    760: 
                    761: BOOL WINAPI GBGizmoNotifySet(HWND hWnd, UINT uID, BOOL fNotify)
                    762:     {
                    763:     PGIZMO      pGizmo;
                    764:     BOOL        fRet=FALSE;
                    765: 
                    766:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    767: 
                    768:     if (NULL!=pGizmo)
                    769:         {
                    770:         fRet=pGizmo->fNotify;
                    771:         pGizmo->fNotify=fNotify;
                    772:         }
                    773: 
                    774:     return fRet;
                    775:     }
                    776: 
                    777: 
                    778: BOOL WINAPI GBGizmoNotifyGet(HWND hWnd, UINT uID)
                    779:     {
                    780:     PGIZMO      pGizmo;
                    781:     BOOL        fRet=FALSE;
                    782: 
                    783:     pGizmo=PGizmoFromHwndID(hWnd, uID);
                    784: 
                    785:     if (NULL!=pGizmo)
                    786:         fRet=pGizmo->fNotify;
                    787: 
                    788:     return fRet;
                    789:     }
                    790: 
                    791: 
                    792: 
                    793: 
                    794: 
                    795: 
                    796: 
                    797: /*
                    798:  * GBGizmoTextSet
                    799:  * GBGizmoTextGet
                    800:  *
                    801:  * Purpose:
                    802:  *  Retrieves or sets text in a GizmoBar gizmo.  Separators, command buttons,
                    803:  *  and attribute buttons are not affected by this call.
                    804:  *
                    805:  * Parameters:
                    806:  *  hWnd            HWND of the GizmoBar.
                    807:  *  uID             UINT identifying the gizmo.
                    808:  *  psz             LPSTR (Set) providing the text to show in the window
                    809:  *                  or (Get) pointing to a buffer to receive the text.
                    810:  *  cch             (Get only) UINT maximum number of chars to copy to psz.
                    811:  *
                    812:  * Return Value:
                    813:  *  int             Number of characters copied to psz.
                    814:  */
                    815: 
                    816: void WINAPI GBGizmoTextSet(HWND hWnd, UINT uID, LPSTR psz)
                    817:     {
                    818:     //This fails on non-windowed gizmos anyway, so we don't check.
                    819:     SetDlgItemText(hWnd, uID, psz);
                    820:     return;
                    821:     }
                    822: 
                    823: 
                    824: int WINAPI GBGizmoTextGet(HWND hWnd, UINT uID, LPSTR psz, UINT cch)
                    825:     {
                    826:     //This fails on non-windowed gizmos anyway, so we don't check.
                    827:     return GetDlgItemText(hWnd, uID, psz, cch);
                    828:     }
                    829: 
                    830: 
                    831: 
                    832: 
                    833: 
                    834: 
                    835: 
                    836: 
                    837: /*
                    838:  * GBGizmoIntSet
                    839:  * GBGizmoIntGet
                    840:  *
                    841:  * Purpose:
                    842:  *  Retrieves or sets an integer in a GizmoBar gizmo.  Separators, command
                    843:  *  buttons, and attribute buttons are not affected by this call.
                    844:  *
                    845:  * Parameters:
                    846:  *  hWnd            HWND of the GizmoBar.
                    847:  *  uID             UINT identifying the gizmo.
                    848:  *
                    849:  *  (Set only)
                    850:  *  u               UINT value to set in the gizmo.
                    851:  *  fSigned         BOOL TRUE to indicate if the value is signed.
                    852:  *
                    853:  *  (Get only)
                    854:  *  pfTrans         BOOL FAR * in which the success of the function is returned.
                    855:  *  fSigned         BOOL TRUE to indicate if the value is signed.
                    856:  *
                    857:  * Return Value:
                    858:  *  (Set): None
                    859:  *  (Get): UINT     Integer translation of the gizmo's text.
                    860:  */
                    861: 
                    862: void WINAPI GBGizmoIntSet(HWND hWnd, UINT uID, UINT u, BOOL fSigned)
                    863:     {
                    864:     //This fails on non-windowed gizmos anyway, so we don't check.
                    865:     SetDlgItemInt(hWnd, uID, u, fSigned);
                    866:     return;
                    867:     }
                    868: 
                    869: 
                    870: 
                    871: UINT WINAPI GBGizmoIntGet(HWND hWnd, UINT uID, BOOL FAR *pfTrans, BOOL fSigned)
                    872:     {
                    873:     //This fails on non-windowed gizmos anyway, so we don't check.
                    874:     return GetDlgItemInt(hWnd, uID, pfTrans, fSigned);
                    875:     }

unix.superglobalmegacorp.com

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