如何在单文档中添加一个按钮

 我来答
可以叫我表哥
推荐于2017-10-06 · 知道合伙人数码行家
可以叫我表哥
知道合伙人数码行家
采纳数:25897 获赞数:1464977
2010年毕业于北京化工大学北方学院计算机科学与技术专业毕业,学士学位,工程电子技术行业4年从业经验。

向TA提问 私信TA
展开全部
  在单文档视图(SDI)结构中,视图一般用来显示数据。但是,有时也希望在视图中显示按钮或其他的控件,以满足用户的需要。VC6.0没有直接给出在视图中添加按钮的向导(或许有,我没找到)。下面我将给出一个手动添加按钮并使按钮具有响应事件 的功能。
  第一步:添加一个按钮
  1、首先在**View.h中定义一个按钮标识
  #define ID_BUTTON 100
  2、 其次给C**View类添加一个成员变量
  CButton m_myButton; //这条语句写在**View.h的类的定义中,要声明为PUBLIC类型
  3、然后创建按钮实例
  m_myButton.Create(_T("示例按钮"), //按钮的caption属性,按钮的显示
  WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON, // 按钮也是一种窗体,同样有窗体风格,这些常量通过或运算使按钮达到一定的效果,这些常量的含义可以参考MSDN。
  CRect(20,320,50,340), //这个参数指出按钮在视图中的位置和按钮的大小。
  this, //这个指针指向按钮这个窗体的父窗体
  ID_BUTTON); //这是刚才为按钮定义的常量,按钮的控制ID
  4、然后调用函数m_MyButton.ShowWindow(SW_HIDE)这个函数根据参数的样式显示按钮,此时的参数表示隐藏按钮,如果要显示按钮,可以以SW_SHOW作为参数,这样,就是在想用到按钮的时候调用函数m_MyButton.ShowWindow(SW_SHOW)显示出按钮。
  说明:按钮在C**View::OnCreate()函数中初始化。这个函数是当窗体被创建的时候调用的一个初始化函数。像按钮这样的对象在这个时候初始化是比较合适的。
  int C**View::OnCreate(LPCREATESTRUCT lpCreateStruct)
  {
  if (CView::OnCreate(lpCreateStruct) == -1)
  return -1;
  
  m_MyButton.Create(_T("示例按钮"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON,
  CRect(20,320,50,340), this, ID_BUTTON);
  m_MyButton.SetIcon(AfxGetApp()->LoadIcon(ICON_SAVE)); //给按钮加载一个图标
  m_MyButton.ShowWindow(SW_HIDE);
  
  return 0;
  }
  
  第二步:消息函数
  此时的按钮是不能响应任何消息的。下面我们手动添加按钮的消息。
  1、声明函数原型
  在C**View类的声明中声明一个protected类型的函数
  //{{AFX_MSG(CSoftView)
  afx_msg void OnMyButton();
  //}}AFX_MSG
  通常的做法,也是VC6.0向导的做法,会将消息处理函数声明在//{{AFX_MSG(CSoftView)~~~ //}}AFX_MSG标记中,当然,在VS.NET 2003中,我们将看不到这个标记。真正起作用的是afx_msg,它表明随后的函数是一个消息处理函数。
  2、函数的实现
  下面实现函数,显然,这个函数也是C**View类的一个成员函数,所以在**View.cpp中实现
  void C**View::OnMyButton()
  {
  MessageBox("你点击了我");
  }
  
  3、如果这个时候你就运行程序的话,按钮依然不会响应任何事件。因为事件的产生的消息是交给视图的,所以我们需要把消息从视图传给按钮,实现起来很简单,在**View.cpp中找到如下的标记:
  BEGIN_MESSAGE_MAP(C**View, CView)
  END_MESSAGE_MAP()
  在这个标记中写入如下代码:ON_BN_CLICKED(ID_BUTTON, OnMybutton)
  这句代码是说,让ID_BUTTON所指的对象响应单击(ON_BN_CLICKED)事件,事件的处理函数是OnMybutton。这是MFC的消息映射机制。对于这个机制,在此不多说,待后续。
  到此,一个可以响应单击事件的按钮就创建好了。如果要响应其他事件,可以按照这个方式创建,只需要改动这个过程中的第3步,将ON_BN_CLICKED改成希望响应的消息类型就可以了。
chiranlingfeng
2012-07-11 · 超过16用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:39.5万
展开全部
在单文档中很少有人添加按钮的,你可以在主菜单哪里继续添加新的菜单,或者新加子菜单,这样的实现跟按钮的功能是一样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
bhtzu
2012-07-09 · TA获得超过1.1万个赞
知道大有可为答主
回答量:8088
采纳率:85%
帮助的人:4153万
展开全部
如果不是FormView,不推荐在视图里面添加按钮。
最好在工具条添加按钮(并增加相应菜单项),这个现在资源里面增加按钮,指定对应消息号,然后对这个消息ClassWizard添加响应函数就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mysatans
推荐于2017-09-19 · 超过18用户采纳过TA的回答
知道答主
回答量:32
采纳率:0%
帮助的人:43.6万
展开全部
1. 建立好单文档工程。
2. 在View类里(注意不能是MainFrame,否则你创建的按钮会被视图遮住,看不见)添加成员变量
CButton m_Button;
3. 创建这个按钮,比如在OnCreate里面添加如下代码:
RECT rect = {0,0,100,100};// 指定按钮的位置和大小
m_button.Create(_T("我是按钮"),WS_VISIBLE,rect,this,ID_BUTTON);
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式