L_AnnFreeToolBarButtons

#include "l_bitmap.h"

L_LTANN_API L_INT L_AnnFreeToolBarButtons(pButtons, uButtons)

pANNBUTTON pButtons;

/* array of buttons to include in the toolbar */

L_UINT uButtons;

/* number of buttons in the toolbar */

Frees the memory allocated by L_AnnGetToolBarButtons for the pButtons array.

Parameter

Description

pButtons

An array of ANNBUTTON structures that contain information about the buttons in the annotation toolbar.

uButtons

Number of buttons in the toolbar. (Number of entries in the pButtons array.)

Returns

SUCCESS

The function was successful.

< 1

An error occurred. Refer to Return Codes.

Required DLLs and Libraries

LTANN

For a listing of the exact DLLs and Libraries needed, based on the toolkit version, refer to Files To Be Included With Your Application.

Platforms

Win32, x64.

See Also

Functions:

L_AnnCreateToolBar, L_AnnGetToolBarChecked,

 

L_AnnSetToolBarChecked,

 

L_AnnGetToolBarButtonVisible,

 

L_AnnSetToolBarButtonVisible,

 

L_AnnGetToolBarButtons, L_AnnSetToolBarButtons,

 

L_AnnGetToolBarInfo, L_AnnSetToolBarColumns,

 

L_AnnSetToolBarRows, L_AnnSetOptions, L_AnnGetOptions

Topics:

Annotation Functions: Working with the Toolbar

 

Implementing Annotations

 

Implementing an Automated Annotation Program

 

Annotation Features

Example

#define ANNTOOL_USER2 0x0101
#include "windowsx.h"
 L_INT AnnFreeToolBarButtonsExample(HWND ToolbarWnd)
{
   BITMAPHANDLE   LBitmap;
   L_UINT         uButtons;
   pANNBUTTON     pButtons;
   L_INT          nRet;
   L_UINT         x;

   nRet = L_LoadBitmap(MAKE_IMAGE_PATH(TEXT("IMAGE1.CMP")), &LBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, 0, NULL);
   if(nRet != SUCCESS)
      return nRet;
   nRet = L_SizeBitmap(&LBitmap, TOOLBARIMAGECX, TOOLBARIMAGECY, 0);
   if(nRet != SUCCESS)
      return nRet;

   /* get the number of buttons in the toolbar */
   nRet = L_AnnGetToolBarButtons(ToolbarWnd, NULL, sizeof(ANNBUTTON), &uButtons);
   if (nRet == SUCCESS)
   {
      /* allocate an array big enough to hold the number of existing buttons + 1 */
      pButtons = (pANNBUTTON) GlobalAllocPtr(GMEM_MOVEABLE, (uButtons+1)*sizeof(ANNBUTTON));
      if (pButtons)
      {
         /* get the existing buttons */
         for(x=0;x<uButtons;x++)
         {
            pButtons[x].uStructSize       = sizeof(ANNBUTTON);
            pButtons[x].uBitmapStructSize = sizeof(BITMAPHANDLE);
         }

         nRet = L_AnnGetToolBarButtons(ToolbarWnd, pButtons, sizeof(ANNBUTTON), &uButtons);
         if (nRet == SUCCESS)
         {
            /* add a new user defined tool button */
            pButtons[uButtons].uFlags           = 0;
            pButtons[uButtons].uTool            = ANNTOOL_USER2;
            pButtons[uButtons].pBitmapUp        = &LBitmap;
            pButtons[uButtons].pBitmapDown      = pButtons[uButtons].pBitmapUp;
            pButtons[uButtons].nToolTipTextID   = -1;
            pButtons[uButtons].pToolTipText     = TEXT("D Tool");

            nRet = L_AnnSetToolBarButtons(ToolbarWnd, pButtons, uButtons+1);
            if(nRet != SUCCESS)
               return nRet;

            nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &LBitmap, FILE_BMP, 24, 0, NULL);
            if(nRet != SUCCESS)
               return nRet;

             L_FreeBitmap(&LBitmap);
            
            /* free uButtons /
            L_AnnFreeToolBarButtons(pButtons, uButtons);
            /* free pButtons */
            GlobalFreePtr(pButtons);
            ShowWindow(ToolbarWnd, SW_SHOW);
         }
         else
         {
            MessageBox(NULL, TEXT("Error getting toolbar buttons."), TEXT(""), MB_OK);
            return 0;
         }
      }
      else
      {
         MessageBox(NULL, TEXT("Not enough memory to allocate pButtons."), TEXT(""), MB_OK);
         return 0;
      }
   }
   else
   {
      MessageBox(NULL, TEXT("Error getting uButtons."), TEXT(""), MB_OK);
      return 0;
   }
   return SUCCESS;
}