Using Container Objects

Start with the project you created in Setting Container Scaling Values:

1.

Add the following popup menu structure to the main menu you created in Tutorial Implementing the Container - Initializing, Creating and Freeing:

&Draw Object
   &Point   with ID = IDM_DRAWOBJECT_POINT
   &Line   with ID = IDM_DRAWOBJECT_LINE
   &Square   with ID = IDM_DRAWOBJECT_SQUARE
   &Rect   with ID = IDM_DRAWOBJECT_RECT
   &Circle   with ID = IDM_DRAWOBJECT_CIRCLE
   &Ellipse   with ID = IDM_DRAWOBJECT_ELLIPSE
   P&olyline   with ID = IDM_DRAWOBJECT_POLYLINE
   &Bezier   with ID = IDM_DRAWOBJECT_BEZIER
   &Arc   with ID = IDM_DRAWOBJECT_ARC
   &Text   with ID = IDM_DRAWOBJECT_TEXT

2.

Add the following code to the WndProc function just before the "return 0L ;" of the WM_CREATE message:

CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                       IDM_DRAWOBJECT_POINT, 
                                       IDM_DRAWOBJECT_TEXT,
                                       IDM_DRAWOBJECT_POINT,
                                       MF_BYCOMMAND ) ;

EnableMenuItem ( GetMenu ( hWnd ), 1, MF_BYPOSITION | MF_GRAYED ) ;

3.

Add the following lines to the WndProc function, after the container metrics block, in the "case IDM_FILE_OPEN" of the WM_COMMAND message:

EnableMenuItem ( GetMenu ( hWnd ), 1, MF_BYPOSITION | MF_ENABLED ) ;
DrawMenuBar ( hWnd ) ;

4.

Add the following code to the WndProc function after the "return 0L;" statement of the "case IDM_FILE_EXIT:" statement:

           case IDM_DRAWOBJECT_POINT:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_POINT ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_POINT,
                                    MF_BYCOMMAND ) ;

               return 0L ;

            case IDM_DRAWOBJECT_LINE:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_LINE ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_LINE,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_SQUARE:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_SQUARE ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_SQUARE,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_RECT:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_RECT ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_RECT,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_CIRCLE:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_CIRCLE ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_CIRCLE,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_ELLIPSE:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_ELLIPSE ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_ELLIPSE,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_POLYLINE:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_POLYLINE ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_POLYLINE,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_BEZIER:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_BEZIER ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_BEZIER,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_ARC:   
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_ARC ) ;  

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_ARC,
                                    MF_BYCOMMAND ) ;
               return 0L ;

            case IDM_DRAWOBJECT_TEXT:
               L_ContainerSetObjectType ( pContainer, CONTAINER_OBJECT_TYPE_TEXT ) ;

               CheckMenuRadioItem ( GetMenu ( hWnd ), 
                                    IDM_DRAWOBJECT_POINT, 
                                    IDM_DRAWOBJECT_TEXT,
                                    IDM_DRAWOBJECT_TEXT,
                                    MF_BYCOMMAND ) ;
               return 0L ;  

5.

Compile and run the project by selecting Build->Rebuild Solution from the menu, and then Debug->Start Without Debugging.

6.

Select File->Open… and open any bitmap. Select any of the items in the Draw Object popup menu and begin drawing objects in the container.