Start with the project you created in Implementing Toolbars - Initializing, Creating and Freeing.
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
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 ) ;
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 ;
}
}
Add the following variable declaration in the WndProc function after static pTOOLBARHANDLE pToolbar ;
declaration:
L_BOOL fState ;
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 ;
Compile and run the project by selecting Build->Execute tutorial.exe from the menu.