对话框和MDI中动态创建按钮CButton,并响应事件
来源:互联网 发布:js中字符串是引用类型 编辑:程序博客网 时间:2024/05/20 19:18
原文:http://blog.csdn.net/tmljs1988/article/details/6219168
一.对话框中动态创建按钮CButton:
(1)在对话框(如CAboutDlg)的类中加一个CButton数据成员
class CAboutDlg : public CDialog
{ ......
::CButton m_btn;//按钮
}
(2)在对话框CAboutDlg)的初始化函数中创建按钮对象:
BOOL CAboutDlg::OnInitDialog()
{
if ( !m_btn.Create( _T("123"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,
CRect( 0,60,20,70),this, ID_BUTTON2))
{
TRACE0("未能创建按钮/n");
return FALSE; // 未能创建
}
return TRUE;
}
其中BS_PUSHBUTTON表示是下压按钮(普通按钮),ID_BUTTON2为用户定义的按钮的ID号,以便与事件响应
函数绑定,ID_BUTTON2应有前面定义:
如 #define ID_BUTTON2 2000
(3)将按钮的ID号ID_BUTTON2与事件响应函数绑定:
(3.1)事件响应函数的声明:
class CAboutDlg : public CDialog
{ ......
::CButton m_btn;//按钮
afx_msg void OnBnClickedButton1();//事件声明,前面一定要加afx_msg
}
(3.2)按钮的ID号ID_BUTTON2与事件响应函数绑定
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
......
ON_BN_CLICKED(ID_BUTTON2, &CAboutDlg::OnBnClickedButton1)
END_MESSAGE_MAP()
(3.3)事件响应函数的定义:
void CAboutDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
MessageBox( _T("donow"));
}
========================================================================
二.MDI中动态创建按钮CButton:
(A)在视图view中创建CButton(按钮会显示在view窗口内):
(1)在CMDI_testView类中加入CButton的数据成员:
class CMDI_testView : public CView
{ ......
::CButton m_btn;//按钮
}
-------------------------
(2)重载OnCreate():
----------
(2.1)OnCreate()声明:
class CMDI_testView : public CView
{ ......
::CButton m_btn;//按钮
int OnCreate(LPCREATESTRUCT lpCreateStruct);
}
------------
(2.2)拦截OnCreate(),注意,此处一定要,否则不会调用OnCreate()函数
BEGIN_MESSAGE_MAP(CMDI_testView, CView)
ON_WM_CREATE() //拦截OnCreate()
ON_BN_CLICKED( ID_BUTTON1, &CMDI_testView::MSG)//ID_BUTTON1为按钮ID号,与MSG()绑定
END_MESSAGE_MAP()
-------------
(2.3)OnCreate()定义:
int CMDI_testView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;
if ( !btn.Create( _T("123"), WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON, CRect
(10,60,70,100),this, ID_BUTTON1))
//如果ID号是IDOK,但程序中没有把IDOK与某消息函数绑定也不行.
{
TRACE0("未能创建按钮/n");
return -1; // 未能创建
}
return 0;
}
---------------------------------------
(3)定义按钮的事件处理函数MSG():
-------------
(3.1)MSG()声明:
class CMDI_testView : public CView
{ ......
::CButton m_btn;//按钮
afx_msg void MSG();//事件声明,前面一定要加afx_msg
}
-------------
(3.2)按钮的ID号ID_BUTTON2与MSG()函数绑定:
BEGIN_MESSAGE_MAP(CMDI_testView , CView)
......
ON_WM_CREATE() //拦截OnCreate()
ON_BN_CLICKED( ID_BUTTON1, &CMDI_testView::MSG)//ID_BUTTON1为按钮ID号,与MSG()绑定
END_MESSAGE_MAP()
-------------
(3.3)MSG()定义:
void CMDI_testView ::MSG()
{
// TODO: 在此添加控件通知处理程序代码
MessageBox( _T("donow"));
}
===========================================
特别注意:
(1)最好在视图view中创建CButton,这样可以响应按钮事件.如果是在CChildFrame或CMainFrame内创建
CButton,则只能显示按钮,但不能响应事件!!!!!!
这可能是因为在MDI(或SDI)中view挡在Mainframe的前面。此时假如编写针对Mainframe的mouseClick
事件,将不会有反应.
(2)ON_BN_CLICKED消息是CButton发送的唯一感兴趣的消息。它等同于CWnd中的ON_COMMAND消息,只是
一个更简单方便的同义词而已。
- 对话框和MDI中动态创建按钮CButton,并响应事件
- 对话框和MDI中动态创建按钮CButton,并响应事件
- 安卓开发:eclipse中创建按钮,响应按钮事件并弹出对话框
- 动态创建一个CButton按钮并实现其ON_BN_CLICKED消息
- 如何动态创建按钮,并响应消息
- 对话框程序动态生成按钮数组并响应点击消息
- 对话框程序动态生成按钮数组并响应点击消息
- vc 动态创建对话框和按钮
- 如何创建按钮CButton
- MFC中动态创建多个按钮并实现其消息响应
- MFC中动态创建多个按钮并实现其消息响应
- MFC中动态创建多个按钮并实现其消息响应
- 对话框容器环境响应Active控件事件 动态创建ActiveX
- VC++6.0动态创建按钮并响应其消息
- Delphi中动态创建DataSet数据集,并响应AfterDelete事件
- Cbutton动态创建
- MFC1、动态创建CButton
- java中添加按钮并添加响应事件
- iOS开发与OpenGL ES相关问题整理(1)
- Office Management page(Agent.onview)
- iOS开发与OpenGL ES相关问题整理(2)- 绘制图片上下颠倒
- 从零实现3D图像引擎:(2)画2D直线不简单
- 听说用U盘可以装系统,不知如何装?
- 对话框和MDI中动态创建按钮CButton,并响应事件
- android进程与线程详解三:AsyncTask
- 数据结构与算法练习
- C++真的能够王者归来吗?
- 158. Fear always springs from ignorance. 恐惧源于无知
- 数据结构-图-Java实现:有向图 图存储(邻接矩阵),最小生成树,广度深度遍历,图的连通性,最短路径
- 基于Repo和Git的版本管理
- 算法的博客
- 划分子网方法