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_ELLIPSEP&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. |