Menus and Resources: Container Additions

 

The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.

The latest version of this topic can be found at Menus and Resources: Container Additions.

This article explains the changes that need to be made to the menus and other resources in a visual editing container application.

In container applications, two types of changes need to be made: modifications to existing resources to support OLE visual editing and addition of new resources used for in-place activation. If you use the application wizard to create your container application, these steps will be done for you, but they may require some customization.

If you do not use the application wizard, you may want to look at OCLIENT.RC, the resource script for the OCLIENT sample application, to see how these changes are implemented. See the MFC OLE sample OCLIENT.

Topics covered in this article include:

  • Container Menu Additions

  • Accelerator Table Additions

  • String Table Additions

Container Menu Additions

You must add the following items to the Edit menu:

Item Purpose
Insert New Object Opens the OLE Insert Object dialog box to insert a linked or embedded item into the document.
Paste Link Pastes a link to the item on the Clipboard into the document.
OLE Verb Calls the selected item's primary verb. The text of this menu item changes to reflect the primary verb of the selected item.
Links Opens the OLE Edit Links dialog box to change existing linked items.

In addition to the changes listed in this article, your source file must include AFXOLECL.RC, which is required for the Microsoft Foundation Class Library implementation. Insert New Object is the only required menu addition. Other items can be added, but those listed here are the most common.

You must create a new menu for your container application if you want to support in-place activation of contained items. This menu consists of the same File menu and Window pop-up menus used when files are open, but it has two separators placed between them. These separators are used to indicate where the server (component) item (application) should place its menus when activated in place. For more information on this menu-merging technique, see Menus and Resources: Menu Merging.

Container Application Accelerator Table Additions

Small changes to a container application's accelerator table resources are necessary if you are supporting in-place activation. The first change allows the user to press the escape key (ESC) to cancel the in-place editing mode. Add the following entry to the main accelerator table:

ID Key Type
ID_CANCEL_EDIT_CNTR VK_ESCAPE VIRTKEY

The second change is to create a new accelerator table that corresponds to the new menu resource created for in-place activation. This table has entries for the File and Window menus in addition to the VK_ESCAPE entry above. The following example is the accelerator table created for in-place activation in the MFC sample CONTAINER:

ID Key Type
ID_FILE_NEW CTRL+N VIRTKEY
ID_FILE_OPEN CTRL+O VIRTKEY
ID_FILE_SAVE CTRL+S VIRTKEY
ID_FILE_PRINT CTRL+P VIRTKEY
ID_NEXT_PANE VK_F6 VIRTKEY
ID_PREV_PANE SHIFT+VK_F6 VIRTKEY
ID_CANCEL_EDIT_CNTR VK_ESCAPE VIRTKEY

String Table Additions for Container Applications

Most of the changes to string tables for container applications correspond to the additional menu items mentioned in Container Menu Additions. They supply the text displayed in the status bar when each menu item is displayed. As an example, here are the string-table entries the application wizard generates:

ID String
IDP_OLE_INIT_FAILED OLE initialization failed. Make sure that the OLE libraries are the correct version.
IDP_FAILED_TO_CREATE Failed to create object. Make sure that the object is entered in the system registry.

See Also

Menus and Resources (OLE)
Menus and Resources: Server Additions