zoukankan      html  css  js  c++  java
  • 【笔记】在单文档中添加“右键菜单”和“对话框”资源

    一、添加“右键菜单”资源。

    如题所示,菜单也是一种资源,所以:

    第一步:在资源视图中new一个菜单Menu,属性中设置ID(此处为ID_MYMENU)。在菜单上添加子项并设置ID。

    第二步:加载菜单,在CMainFrame中添加相应消息:  

    void CMainFrame::OnContextMenu(CWnd* /*pWnd*/, CPoint point)
    {
     // TODO: 在此处添加消息处理程序代码
     CMenu popupmenu;
     popupmenu.LoadMenu(IDR_MYMENU);
     popupmenu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN,point.x,point.y,this);

    }

    第三步:打开菜单资源单击鼠标右键,添加“事件处理程序”。可以根据不同的需要添加不同的响应函数。

    注意:添加的时候会选择类,如果想要在View中响应的话,就选择View。

    二、添加“对话框”资源

    第一步:在资源视图中new一个Dialog,设置ID。

    第二步:右键,给这个对话框创建一个类。

    第三步:在View中使用对话框。代码如下:

    void CXXXView::OnAlllayer()
    {
     // TODO: 在此添加命令处理程序代码

     //创建对话框资源,并弹出

     CCXXXDlg  m_Dlg;
     m_Dlg.DoModal();
    }

    附加一:在Dialog中获取Doc中的成员变量

    CMainFrame *pFrame=(CMainFrame*)AfxGetMainWnd();//获取框架窗口
    CGraphicsEngineShowDoc *pDoc=(CGraphicsEngineShowDoc *)pFrame->GetActiveDocument();//获取文档

    pDoc->m_ap->Create(m_name);//使用文档中的成员变量m_ap

    当然了,如果你忘记包含头文件,依然会出错!这里需要的头文件有:

    #include "MainFrm.h"
    #include "XXXDoc.h"
    #include "XXXView.h"
    #include "F:\XXX\FF\CCC\EEE\m_ap所属类.h"

    附加二:对话框的初始化问题

    CWnd继承来的窗口,初始化一般是给WM_CREATE消息添加响应函数OnCreate()来实现的。

    那么Dialog呢?它上面的控件可不止一个啊,如何有序初始化呢?到这里,应该想到重写虚函数了。

    在头文件中声明: BOOL OnInitDialog();

    在源文件中实现:(BOOL和TRUE是Windows自己定义的,实际上是int型;bool和true是C++语法中的类型变量,取值只有0和1。)

    BOOL CCLayerDlg::OnInitDialog()
    {
       CDialog::OnInitDialog();//第一行,先调要基类的初始化函数!所谓“有序”初始化。

       //初始化

      return TRUE;
    }

  • 相关阅读:
    molloc堆区的动态内存分配
    异常控制流(csapp)
    优化程序性能(CSAPP)
    链接及链接器
    C# 继承 多态
    virtual和abstract
    封装
    SQL数据库语句优化方法
    select 查询所有和查询所有非空
    联合查询的用法
  • 原文地址:https://www.cnblogs.com/xxt1991/p/2420827.html
Copyright © 2011-2022 走看看