卷二:图形编程MFC第2篇

1.菜单栏和工具栏创建

手动创建:资源视图->menu 文件新建菜单;

在主菜单里面单击新建菜单和ID

菜单名称快捷键:(1)画图(&L)\tCtrl+L;

(2)在Accelator文件添加快捷键操作。

(3)注意如果建的项目是菜单栏和工具栏的项目快捷键和工具栏可能显示不出来,解决办法:在view类里面插入方法ExitInstance插入代码AfxOleTerm(false);
                                                            this->CleanState();  //清空注册表,运行两次

如果项目使用经典菜单再可以显示。

菜单栏的方法:

void Cm4View::OnDrawEllipse()
{
	// TODO: 在此添加命令处理程序代码
	m_DrawType = DT_ELLIPSE;  //成员变量记录子菜单是画椭圆
}

两个消息:

void Cm4View::OnUpdateDrawPen(CCmdUI* pCmdUI)
{
    pCmdUI->SetCheck(m_DrawType == DT_PEN); //1.当子菜单是画笔时,设置子菜单打钩
    pCmdUI->Enable(false);    //2.禁用子菜单
    // TODO: 在此添加命令更新用户界面处理程序代码
}

其他代码创建:(1)MFC四个基类:APP类(对应用程序管理)、Cview类(客户界面类)、Cdocument(数据存储)、CFrameWnd -menu类(标题栏、菜单栏、工具栏管理);

  afx_msg void OnLButtonDown(UINT nFlags, CPoint point);  //afx_msg代表是一个消息,无实意

ON_COMMAND(ID_DRAW_RECT, &Cm4View::OnDrawRect)  //ON_COMMAND是消息映射,前面编号的消息映调用函数

enum ID_MSG {
    ID_MSG_DRAW_LINE = WM_USER + 1,  //定义子菜单的名称编号,WM_USER是系统保留的消息id
    ID_MSG_DEAW_RECT,
    ID_MSG_DRAW_ELLIPSE,
    ID_MSG_DRAW_PEN
};

2.新建命令行菜单、工具栏

(1)命令行菜单:①新建菜单文件,

② 添加私有成员privvate  Menu m_Menu对象,m_Menu.LoadMenu(IDR_MENU2);//加载进来BOOL Cm4View::PreCreateWindow(CREATESTRUCT& cs)
{
    m_Menu.LoadMenu(IDR_MENU2);//初始化窗口,加载进来
    //按右键响应消息
    return CView::PreCreateWindow(cs);
}

③添加右键点击时的消息

void Cm4View::OnRButtonUp(UINT nFlags, CPoint point)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    CMenu* mu = m_Menu.GetSubMenu(0);  //获得定义菜单的子菜单,还是个一级菜单
    ClientToScreen(&point);  //屏幕坐标系转换应用程序坐标系
    mu->TrackPopupMenu(TPM_LEFTALIGN, point.x, point.y, this);
    CView::OnRButtonUp(nFlags, point);
}

(2)工具栏创建:①在Toolbars文件创建用bit文件画出快捷键,将快捷键ID和菜单栏的ID对应;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值