2012年计算机等考二级C++备考笔记(1)

计算机等级真题答案,艺考

计算机等级真题答案

2012-7-13 10:11:10 文/田泽洋

关注

2012年计算机等考二级C++备考笔记(1)

菜单栏,工具栏,状态栏是组成Windows程序图形界面的三个主要元素。大多数的Windows应用程序都提供了菜单,作为用户和程序之间的一种交互途径。

菜单栏

在设置菜单栏的菜单项的时候,Pop-up属性的为弹出菜单,这种菜单不能响应命令,没有ID号。

菜单命令的路由

相应菜单项命令的顺序是:视类(View),文档类(Doc),框架类(Frame),应用程序类(App)。

Windows消息的分类

标准消息:除了WM_COMMAND消息之外,所有以WM开头的消息都是标准消息,从CWnd派生的类都可以响应这类消息。

命令消息:来至菜单、加速键和工具栏按钮的消息,这类消息都是以WM_COMMAND形式呈现,在MFC中,通过菜单项的标示ID来区分不同的命令消息,在SDK中,通过消息的wParam参数标示,从CCmdTarget派生的类都可以接收这类消息。

通告消息:有控件产生的消息,例如按钮的单击,列表框的选择等都会产生这类消息,目的是向其父窗口通知事件的发生。这类消息以WM_COMMAND形式发送,从CCmdTarget派生的类都可以接收这类消息。

CWnd派生于CCmdTarget,从CWnd派生的类可以接收所以类型的消息(View,Frame),其他从CCmdTarget派生的类只能接收命令消息和通告消息(Doc,App)。

基本菜单操作

Pop-up0 Pop-up1 Pop-up2 Pop-up3 …

0-0 1-0 2-0 3-0 …

0-1 1-1 2-1 3-1 …

0-2 1-2 2-2 3-2 …

可以通过CWnd的成员函数GetMenu来获取指向菜单栏的指针,对菜单子项的访问可以通过菜单的索引标识来实现。

操作一个菜单项的2种实例

1 GetMenu()->GetSubMenu(0)->CheckMenuItem(0,MF_BYPOSITION | MF_CHECKED);

2 GetMenu()->GetSubMenu(0)->CheckMenuItem(ID_FILE_OPEN,MF_BYCOMMAND | MF_CHECKED);

MSDN中关于MF_BYCOMMAND 和MF_BYPOSITION的解释

MF_BYCOMMAND Specifies that the parameter gives the command ID of the existing menu item. This is the default.

MF_BYPOSITION Specifies that the parameter gives the position of the existing menu item. The first item is at position 0.

GetSubMenu有很多成员函数,用于菜单的操作。

快捷菜单

工程-添加到工程-Components and Controls,从这里可可以选择VC提供的一些组件和控件,添加一个POPUP MENU,选择所属于View类,此时View类中便添加了一个OnConTextMenu函数。

01 void CMenuView::OnConTextMenu(CWnd*, CPoint point)

02 {

03 // CG: This block was added by the Pop-up Menu component

04 {

05 if (point.x == -1 && point.y == -1){

06 //keystroke invocation

07 CRect rect;

08 GetClientRect(rect);

09 ClientToScreen(rect);

10 point = 网址未加载Left();

11 point.Offset(5, 5);

12 }

13 CMenu menu;

14 VERIFY(menu.LoadMenu(CG_IDR_POPUP_MENU_VIEW));

15 CMenu* pPopup = menu.GetSubMenu(0);

16 ASSERT(pPopup != NULL);

17 CWnd* pWndPopupOwner = this;

18 while (pWndPopupOwner->GetStyle() & WS_CHILD)

19 pWndPopupOwner = pWndPopupOwner->GetParent();

20 pPopup->TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON, point.x, point.y,

21 pWndPopupOwner);

22 }

23 }

运行之后,在View类区域右键,会出现一个弹出窗口。

更多计算机等级考试资讯:零二七计算机等级考试网

 

艺考相关文章

发现更多好内容

艺考用户说说

友善是交流的起点
带你看艺考艺考推送时光机
位置:艺考-计算机类-计算机等级考试-计算机等级真题答案-2012年计算机等考二级C++备考笔记(1)
咦!没有更多了?去看看其它艺考内容吧