︶ㄣs╃zeng的专栏

这里有菜鸟我的低技术文章.

原创 《循序渐进学用Visual C++ 6.0》读书笔记(六)收藏

《循序渐进学用Visual C++ 6.0》读书笔记()

题设:

画一个空的对话框MyDlg ,菜单File下有项目Hello,

项目Exit.

 

 

 

如何制作菜单?

Resource面版选择insert | Menu ,输入 MyMenu ,确定.

此时菜单编辑器被激活, 菜单编辑器的使用方法十分容易,

这里就不罗嗦了。

菜单里的每一个"项目"命令按钮控件几乎一模一样,设置

它不难嘛..

如何把菜单连入窗体(:对话框)?

右击MyDlg的空白处,选属性,有个MENU项目,下拉选MYMENU.

这样就连入成功了.

如何把菜单功能关联至窗体(:对话框)?

在菜单设计器为当前窗口情况下选VISUAL C++View菜单, 新建

一个class,下一步选已有,MyDlg,这样就OK.

     如何使用Class Winzard 为菜单项目HelloID_FILE_HELLO

建立功能呢?

当菜单Hello被点击的时候会产生一个COMMAND消息,我们就对

此消息创建函数OnHello(),代码清单如下:

////////////////////////////////////////////////////////////////////////////////////////////////

void MyDlg::OnHello ()

{

       …..

       MessageBox(“你好吗?”,”SayHelloTittle”);

       …..

}

///////////////////////////////////////////////////////////////////////////////////////////////

如何创建弹出式菜单?

我们很惯性地想到,利用释放鼠标消息”WM_RBUTTONUP”,但

是我告诉你用另外一个消息更好,“WM_CONTEXTMENU”,原因

是新式的键盘,有一个按钮专为激活弹出式菜单而设的。利用class

Winzard为此消息创建函数,代码清单如下:

//////////////////////////////////////////////////////////////////////////////////////////////

//这里代码有几个问题,我们呆会才详细讨论。

void MyDlg::OnContextMenu(CWnd *pWnd ,CPoint point )

{   //point我们上次讲过它传递了鼠标当前位置。

。。。。

       CPoint  m_lPoint;

       m_pPoint=point;

       ClientToScreen(&m_pPoint);

CMenu * m_lMenu ;

       m_lMenu=pWnd->GetMenu();

       m_lMenu=m_lMenu->GetSubMenu();

       m_lMenu=TrackPopupMenu(TPM_CENTERALIGN+TPM_

LEFTBUTTON, m_pPoint.x, m_pPoint.y, this ,NULL);

}

//////////////////////////////////////////////////////////////////////////////////////////////

代码头3:我地要获得鼠标在屏幕当前位置,point传递的是

相对位置,但point是系统的,我们不应修改它,因此我们创建

m_pPoint复制point的内容,然后用ClientToScreen()函数转换成绝

对位置,还有一点就是这里是实参传递,所以&m_pPoint.

代码4-6:这里创建了一个CMenu指针,我们立刻想到就是

为此指针赋值,GetMenu(),GetSubMenu(),均是CMenu的成员函

数,意思一看就明白了。

问题是我们必须把指针的赋值过程弄清楚:

pWnd是指向MyDlg ,这里指向了MyDlgFile 菜单。

最后通过GetSubMenu()获得了Flie菜单的子菜单。

     TrackPopupMenu(显示风格,x, y ,指针,矩形域)

这个是显示弹出式菜单的关键函数,显示风格这里TPM_

CENTERALIGN是鼠标中间弹出,TPM_LEFTBUTTON则是

利用鼠标左键选中,这些都是一般人都这么做的,这个语句,

没什么好研究的,记住就行了。

发表于 @ 2005年03月20日 06:17:00|评论(loading...)

新一篇: 《循序渐进学用Visual C++ 6.0》读书笔记(七) | 旧一篇: 《循序渐进学用Visual C++ 6.0》读书笔记(五)

用户操作
[即时聊天] [发私信] [加为好友]
︶ㄣs╃zeng
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
︶ㄣs╃zeng的公告
有许多的错漏,许多的不明白,许多次轻言放弃,但仍然存在一丝丝希望,竭尽全力对上天大喊一声:"请给我一份工作吧",,,,
文章分类
收藏
    存档
    软件项目交易
    Csdn Blog version 3.1a
    Copyright © ︶ㄣs╃zeng