⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch06.htm

📁 VC 21天 学习VC 的好东西
💻 HTM
📖 第 1 页 / 共 3 页
字号:

</BLOCKQUOTE>

<H3><A NAME="Heading8"></A>Adding and Customizing a Menu</H3>
<P>Now that you have the basic application built, it's time to start creating a menu
for the application. To create a menu, you will first add a menu resource to your
project. When you add the resource, Visual C++ automatically invokes the Menu Designer,
which allows you to customize the menu. The following steps show you how to add and
customize a menu:</P>
<P>

<DL>
	<DT></DT>
	<DD><B>1. </B>Select the Resource View tab in the workspace pane.
	<P>
	<DT></DT>
	<DD><B>2. </B>Select the project resources folder at the top of the tree; in your
	example, this is Menus.
	<P>
	<DT></DT>
	<DD><B>3. </B>Right-click the mouse to bring up a pop-up menu.
	<P>
	<DT></DT>
	<DD><B>4. </B>Select Insert from the pop-up menu.
	<P>
	<DT></DT>
	<DD><B>5. </B>In the Insert Resource dialog that opens, select Menu from the list
	of available resources, as in Figure 6.1. Click the New button.
	<P>
</DL>

<P><A HREF="javascript:popUp('06fig01.gif')"><B>FIGURE 6.1.</B></A><B> </B><I>The
Insert Resource dialog.</I></P>

<P><I></I>

<DL>
	<DT><I></I></DT>
	<DD><B>6. </B>The Menu Designer opens in the editing area of Developer Studio. The
	first menu spot is highlighted, as shown in Figure 6.2.
	<P>
</DL>

<P><A HREF="javascript:popUp('06fig02a.gif')"><B>FIGURE 6.2.</B></A><B> </B><I>An
empty menu.</I></P>

<P>At this point, you have created the menu resource and you are ready to customize
it by adding menu items. To add a menu item, follow these steps:</P>
<P>

<DL>
	<DT></DT>
	<DD><B>1. </B>Right-click the mouse on the highlighted area and select Properties
	from the pop-up menu.
	<P>
	<DT></DT>
	<DD><B>2. </B>Enter the menu item's Caption. For this example, enter <B>&amp;File</B>
	and close the Properties dialog.
	<P>
</DL>



<BLOCKQUOTE>
	<P>
<HR>
<STRONG>NOTE:</STRONG> You are in the menu Properties dialog to specify the text that the
	user will see on the menu bar while the application is running. Because the Pop-up
	check box is checked (by default on any menu items on the top-level menu bar), this
	menu element doesn't trigger any application functionality and thus doesn't need
	to have an object ID assigned to it.
<HR>


</BLOCKQUOTE>


<DL>
	<DT><B></B></DT>
	<DD><B>3. </B>The first drop-down menu location is highlighted. To add this menu
	item, right-click the mouse again on the highlighted area and select Properties from
	the pop-up menu.
	<P>
	<DT></DT>
	<DD><B>4. </B>Enter an ID and caption for the menu item. For this example, enter
	<B>IDM_FILE_HELLO</B> for the ID and <B>&amp;Hello</B> for the Caption. Close the
	dialog.
	<P>
</DL>



<BLOCKQUOTE>
	<P>
<HR>
<STRONG>NOTE:</STRONG> This time in the menu Properties dialog, you not only specify the
	text that the user will see when the menu is opened from the menu bar, but you also
	specify the object ID that will be used in the event message handler to determine
	what function receives each of the menu events.
<HR>


</BLOCKQUOTE>

<P>At this point you have created a menu with a single menu item. You can continue
to add menu items by repeating steps 3 and 4 of the preceding list for each of the
highlighted areas. You can also add separators onto the menu. A <I>separator</I>
is a dividing line that runs across the menu to separate two functional areas of
menu selections. To add a separator, perform the following steps:</P>
<P><A HREF="javascript:popUp('06fig02.gif')"><B>FIGURE 6.3.</B></A><B> </B><I>Specifying
a menu separator.</I></P>

<P><I></I>

<DL>
	<DT><I></I></DT>
	<DD><B>1. </B>Select the highlighted area where you want the separator to be placed.
	In the example you created, the second drop-down menu location should be highlighted.
	Open the properties dialog as you did in step 3 in the preceding list. To add a separator,
	simply select the Separator option, as shown in Figure 6.3, and close the dialog.
	<P>
</DL>

<P>To complete your sample program, follow the same steps I just described to add
an Exit item to your File menu and a second menu called Help with one menu item called
About. The following steps, which resemble the preceding list of steps, walk you
through adding these additional items:</P>
<P>

<DL>
	<DT></DT>
	<DD><B>1. </B>Open the properties dialog for the third drop-down location and specify
	the ID as IDM_FILE_EXIT and the caption as E&amp;xit. Close the dialog.
	<P>
	<DT></DT>
	<DD><B>2. </B>Select the second top-level menu location and open the properties dialog.
	Specify the caption as &amp;Help and close the dialog.
	<P>
	<DT></DT>
	<DD><B>3. </B>Open the properties dialog for the first drop-down location on the
	second top-level menu. Specify the ID as ID_HELP_ABOUT and the caption as &amp;About.
	Close the dialog.
	<P>
</DL>

<P>At this point, your menu is created; however, it is not attached to your application.</P>
<P>
<H3><A NAME="Heading9"></A>Attaching the Menu to Your Dialog Window</H3>
<P>You now have a menu that you can use in your application. If you compile and run
your application at this point, however, the menu doesn't appear. You still need
to attach the menu to your dialog window. You can attach a menu by following these
steps:</P>
<P>

<DL>
	<DT></DT>
	<DD><B>1. </B>Open the dialog painter by double-clicking the primary application
	dialog in the Dialog folder in the Workspace pane. For this example, double-click
	on IDD_MENUS_DIALOG.
	<P>
	<DT></DT>
	<DD><B>2. </B>Select the entire dialog window, making sure that no controls are selected,
	and open the dialog's properties dialog. (What you are doing is opening the properties
	for the dialog window itself, not for any of the controls that might be on the window.)
	<P>
	<DT></DT>
	<DD><B>3. </B>Select the menu you have designed from the Menu drop-down list box,
	as shown in Figure 6.4.
	<P>
</DL>

<P><A HREF="javascript:popUp('06fig03.gif')"><B>FIGURE 6.4.</B></A><B> </B><I>Attaching
the menu to the dialog window.</I></P>

<P>If you compile and run your application, you find that the menu is attached to
the application dialog, as shown in Figure 6.5. You can select menu entries as you
do with any other Windows application--with one small difference. At this point,
when you select one of the menu entries, nothing happens. You still need to attach
functionality to your menu.</P>
<P><A HREF="javascript:popUp('06fig04.gif')"><B>FIGURE 6.5.</B></A><B> </B><I>The
menu is now part of the application dialog.</I></P>

<P><I></I>
<H3><A NAME="Heading10"></A>Attaching Functionality to Menu Entries</H3>
<P>Now that you have a menu as part of your application, it sure would be nice if
it actually did something. Well, before your menu can do anything, you have to tell
it what to do, just like everything else in your Visual C++ applications. To attach
some functionality to your menu, follow these steps:</P>
<P><A HREF="javascript:popUp('06fig05.gif')"><B>FIGURE 6.6.</B></A><B> </B><I>The
menu is now part of the application.</I></P>

<P><I></I>

<DL>
	<DT><I></I></DT>
	<DD><B>1. </B>Open the Menu Designer to your menu.
	<P>
	<DT></DT>
	<DD><B>2. </B>Open the Class Wizard from the View menu.
	<P>
	<DT></DT>
	<DD><B>3. </B>The Adding a Class dialog is displayed for you, just as it was yesterday
	when you added a second dialog. Leave the dialog selection on Select an Existing
	Class and click OK (see Figure 6.6).
	<P>
	<DT></DT>
	<DD>Yesterday, when you were adding a second dialog window to your application, you
	needed to create a new C++ class for that window. For today's menu, you want to attach
	it to the existing C++ class for the dialog window to which the menu is attached.
	<P>
	<DT></DT>
	<DD><B>4. </B>Choose the C++ class of the primary dialog window from the list of
	available classes in the Select Class dialog. For this example, select CMenusDlg,
	as shown in Figure 6.7. This tells Visual C++ that all the functionality that you
	will call from the various menu entries is part of the same dialog class of the window
	that it's attached to.
	<P>
</DL>

<P><A HREF="javascript:popUp('06fig06.gif')"><B>FIGURE 6.7.</B></A><B> </B><I>The
Select Class dialog.</I></P>

<P>For the menu elements that you want to use to trigger new functions in your application,
you can add event-handler functions through the Class Wizard, just as you can with
controls that you place on the dialog window.</P>
<P>For this example, add a function for the IDM_FILE_HELLO object (the Hello menu)
on the COMMAND event message. Name the function OnHello and add the code in Listing
6.1 to the function.</P>
<P>
<H4>LISTING 6.1. THE ONHELLO FUNCTION.</H4>
<PRE> 1: void CMenusDlg::OnHello() 
 2: {
 3:     // TODO: Add your command handler code here
 4: 
 5:     ///////////////////////
 6:     // MY CODE STARTS HERE
 7:     ///////////////////////
 8: 
 9:     // Display a message for the user
10:     MessageBox(&quot;Hello there&quot;, &quot;Hello&quot;);
11: 
12:     ///////////////////////
13:     // MY CODE ENDS HERE
14:     ///////////////////////
</PRE>

<PRE>15: }</PRE>


<BLOCKQUOTE>
	<P>
<HR>
<STRONG>NOTE:</STRONG> The COMMAND event message is the message that is passed to the application
	window when a menu entry is selected. Placing a function on this event message has
	the same effect as placing a function on the menu entry selection.
<HR>


</BLOCKQUOTE>

<P>You can call existing event handlers from menu elements by adding the existing
function to the menu COMMAND event. You can do this by adding a function to the menu
object ID and then specifying the existing function name instead of accepting the
suggested function name.</P>
<P>To reuse the OnExit function for the Exit menu element, reopen the Menu Designer
and then reopen the Class Wizard. When the Class Wizard is displayed, add a function
for the IDM_FILE_EXIT object on the COMMAND event message. Do not accept the default
function name presented to you by the Class Wizard. Enter the function name <B>OnExit</B>.
This automatically attaches the existing OnExit function that you created with your
Exit button earlier.</P>
<P>To round out your example's functionality, add a function to the ID_HELP_ABOUT
object on the COMMAND event message. Edit the function as in Listing 6.2.</P>
<P>
<H4>LISTING 6.2. THE ONHELPABOUT FUNCTION.</H4>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -