Annotation of mstools/ole20/samples/gizmobar/api.c, revision 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.