Changing the Toolbar State

Start with the project you created in Implementing Toolbars - Initializing, Creating and Freeing.

  1. Create the following Menus in ToolbarTutorial.rc:

     &View   
          &Toolbar with ID = IDM_VIEW_TOOLBAR   
       &Rows   
          &1 with ID = IDM_ROWS_1   
          &2 with ID = IDM_ROWS_2   
          &3 with ID = IDM_ROWS_3   
          &4 with ID = IDM_ROWS_4   
          &5 with ID = IDM_ROWS_5   
          &6 with ID = IDM_ROWS_6   
          &8 with ID = IDM_ROWS_8   
       &Set Position   
          Test &1 with ID = IDM_SETPOSITION_TEST1   
          Test &2 with ID = IDM_SETPOSITION_TEST2   
          Test &3 with ID = IDM_SETPOSITION_TEST3   
          Test &4 with ID = IDM_SETPOSITION_TEST4   

  2. Add the following function calls to the WndProc function definition, after the L_TBSetVisible function call in the WM_CREATE message:

    CheckMenuItem ( GetMenu ( hWnd ),   
        IDM_VIEW_TOOLBAR,   
        MF_BYCOMMAND | MF_CHECKED ) ;   
    CheckMenuRadioItem ( GetMenu ( hWnd ),   
        IDM_ROWS_1,   
        IDM_ROWS_8,   
        IDM_ROWS_1,   
        MF_BYCOMMAND ) ;   
    CheckMenuRadioItem ( GetMenu ( hWnd ),   
        IDM_SETPOSITION_TEST1,   
        IDM_SETPOSITION_TEST4,   
        IDM_SETPOSITION_TEST1,   
        MF_BYCOMMAND ) ; 

  3. Add the following functions before the WndProc function definition:

    static L_VOID OnViewToolbar ( pTOOLBARHANDLE pToolbar ) 
    { 
       L_BOOL bVisible ; 
       L_TBIsVisible ( pToolbar, &bVisible ) ; 
       L_TBSetVisible ( pToolbar, ! bVisible ) ; 
    } 
    static L_VOID OnRows ( pTOOLBARHANDLE pToolbar, L_INT nRows ) 
    { 
       L_TBSetRows ( pToolbar, nRows ) ; 
    } 
    static L_VOID OnSetPoistionTest ( HWND hWnd, pTOOLBARHANDLE pToolbar, L_INT nTest ) 
    { 
       RECT rcClient ; 
       POINT pt ; 
        
       GetClientRect ( hWnd, &rcClient ) ; 
       switch ( nTest ) 
       { 
          case 1: 
          pt.x = rcClient.left ; 
          pt.y = rcClient.top ; 
          ClientToScreen ( hWnd, &pt ) ; 
          L_TBSetPosition ( pToolbar, &pt, TOOLBAR_POSITION_TOP | TOOLBAR_POSITION_LEFT ) ; 
          break ; 
          case 2: 
          pt.x = rcClient.right ; 
          pt.y = rcClient.top ; 
          ClientToScreen ( hWnd, &pt ) ; 
          L_TBSetPosition ( pToolbar, &pt, TOOLBAR_POSITION_TOP | TOOLBAR_POSITION_RIGHT ) ; 
          break ; 
          case 3: 
          pt.x = rcClient.right ; 
          pt.y = rcClient.bottom ; 
           
          ClientToScreen ( hWnd, &pt ) ; 
          L_TBSetPosition ( pToolbar, &pt, TOOLBAR_POSITION_BOTTOM | TOOLBAR_POSITION_RIGHT ) ; 
          break ; 
          case 4: 
          pt.x = rcClient.left ; 
          pt.y = rcClient.bottom ; 
           
          ClientToScreen ( hWnd, &pt ) ; 
          L_TBSetPosition (pToolbar, &pt, TOOLBAR_POSITION_BOTTOM | TOOLBAR_POSITION_LEFT); 
          break ; 
       } 
    } 

  4. Add the following variable declaration in the WndProc function after static pTOOLBARHANDLE pToolbar ; declaration:

    L_BOOL fState ; 

  5. Add the following code to the WndProc function definition after the return 0L ; statement in the case WM_DESTROY message:

    case WM_COMMAND: 
    { 
       switch ( LOWORD ( wParam ) ) 
       { 
          case IDM_VIEW_TOOLBAR: 
          OnViewToolbar ( pToolbar ) ; 
          L_TBIsVisible ( pToolbar, &fState ) ; 
          CheckMenuItem ( GetMenu ( hWnd ), 
          IDM_VIEW_TOOLBAR, 
          MF_BYCOMMAND | ( fState ? MF_CHECKED : MF_UNCHECKED ) ) ; 
          return 0L ; 
          case IDM_ROWS_1: 
          OnRows ( pToolbar, 1 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_1, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_ROWS_2: 
          OnRows ( pToolbar, 2 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_2, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_ROWS_3: 
          OnRows ( pToolbar, 3 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_3, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_ROWS_4: 
          OnRows ( pToolbar, 4 ) ; 
           
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_4, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_ROWS_5: 
          OnRows ( pToolbar, 5 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_5, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_ROWS_6: 
          OnRows ( pToolbar, 6 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_6, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_ROWS_8: 
          OnRows ( pToolbar, 7 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_ROWS_1, 
          IDM_ROWS_8, 
          IDM_ROWS_8, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_SETPOSITION_TEST1: 
          OnSetPoistionTest ( hWnd, pToolbar, 1 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_SETPOSITION_TEST1, 
          IDM_SETPOSITION_TEST4, 
          IDM_SETPOSITION_TEST1, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_SETPOSITION_TEST2: 
          OnSetPoistionTest ( hWnd, pToolbar, 2 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_SETPOSITION_TEST1, 
          IDM_SETPOSITION_TEST4, 
          IDM_SETPOSITION_TEST2, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_SETPOSITION_TEST3: 
           
          OnSetPoistionTest ( hWnd, pToolbar, 3 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_SETPOSITION_TEST1, 
          IDM_SETPOSITION_TEST4, 
          IDM_SETPOSITION_TEST3, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
          case IDM_SETPOSITION_TEST4: 
          OnSetPoistionTest ( hWnd, pToolbar, 4 ) ; 
          CheckMenuRadioItem ( GetMenu ( hWnd ), 
          IDM_SETPOSITION_TEST1, 
          IDM_SETPOSITION_TEST4, 
          IDM_SETPOSITION_TEST4, 
          MF_BYCOMMAND ) ; 
          return 0L ; 
       } 
    } 
    break ; 

  6. Compile and run the project by selecting Build->Execute tutorial.exe from the menu.

See Also

Getting and Setting Toolbar Information

Programming with LEADTOOLS Toolbars

[Getting Started

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Toolbar C API Help
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.