VC++单文档分割窗口、在视图中添加控件,并响应该控件的事件
2014-08-11 16:22
405 查看
转自:http://www.cnblogs.com/qintangtao/archive/2013/02/20/2919090.html
一、单文档分割窗口
1、用ClassWizard为应用程序添加新的视图类
CLeftView从Cview类派
2、在CMainFrame类里声明分割视图的变量
3、在CMainFrame类的OnCreateClient函数中添加代码,创建分割视图
4、预览
二、视图中添加控件
1、首先在**View.h中定义一个按钮标识
2、
其次给C**View类添加一个成员变量
3、然后创建按钮实例
m_myButton.Create(_T("示例按钮"), //按钮的caption属性,按钮的显示
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON|BS_ICON, // 按钮也是一种窗体,同样有窗体风格,这些常量通过或运算使按钮达到一定的效果,这些常量的含义可以参考MSDN。
CRect(20,320,50,340), //这个参数指出按钮在视图中的位置和按钮的大小。
this, //这个指针指向按钮这个窗体的父窗体
ID_BUTTON); //这是刚才为按钮定义的常量,按钮的控制ID
然后调用函数m_MyButton.ShowWindow(SW_HIDE)这个函数根据参数的样式显示按钮,此时的参数表示隐藏按钮,如果要显示按钮,可以以SW_SHOW作为参数,这样,就是在想用到按钮的时候调用函数m_MyButton.ShowWindow(SW_SHOW)显示出按钮。
说明:按钮在C**View::OnCreate()函数中初始化。这个函数是当窗体被创建的时候调用的一个初始化函数。像按钮这样的对象在这个时候初始化是比较合适的。
三、响应控件的事件
1、声明函数原型
在C**View类的声明中声明一个protected类型的函数
2、添加事件对应关系
3、实现OnMyButton()函数
一、单文档分割窗口
1、用ClassWizard为应用程序添加新的视图类
CLeftView从Cview类派
2、在CMainFrame类里声明分割视图的变量
public: CSplitterWnd m_splMainCols; CSplitterWnd m_splRightRows;
3、在CMainFrame类的OnCreateClient函数中添加代码,创建分割视图
BOOL CMainFrame::OnCreateClient(LPCREATESTRUCT lpcs, CCreateContext* pContext) { if(!m_splMainCols.CreateStatic(this, 1, 3)) { return FALSE; } if(!m_splMainCols.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(100, 0), pContext)) { return FALSE; } /* if(!m_splMainCols.CreateView(0, 1, RUNTIME_CLASS(CLeftView), CSize(500, 0),pContext)) { return FALSE; } */ if(!m_splMainCols.CreateView(0, 2, RUNTIME_CLASS(CLeftView), CSize(0, 0),pContext)) { return FALSE; } if(!m_splRightRows.CreateStatic(&m_splMainCols, 2, 1, WS_CHILD|WS_VISIBLE, m_splMainCols.IdFromRowCol(0,1) )) { return FALSE; } if(!m_splRightRows.CreateView(0, 0, RUNTIME_CLASS(CLeftView), CSize(0, 300), pContext)) { return FALSE; } if(!m_splRightRows.CreateView(1, 0, RUNTIME_CLASS(CLeftView), CSize(0, 0), pContext)) { return FALSE; } //设置水平和垂直分隔条的初始位置 m_splMainCols.SetColumnInfo(0, 100, 0); m_splMainCols.SetColumnInfo(1, 300, 0); m_splRightRows.SetRowInfo(0,150,0); return TRUE; }
4、预览
二、视图中添加控件
1、首先在**View.h中定义一个按钮标识
#define ID_BUTTON 100
2、
其次给C**View类添加一个成员变量
public: 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
然后调用函数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
2、添加事件对应关系
BEGIN_MESSAGE_MAP(C**View, CView) END_MESSAGE_MAP() //在这个标记中写入如下代码:ON_BN_CLICKED(ID_BUTTON, OnMybutton)
3、实现OnMyButton()函数
void CLeftView::OnbtnDown() { MessageBox("这是一个简单的消息框"); }
相关文章推荐
- VC++单文档分割窗口、在视图中添加控件,并响应该控件的事件
- 单文档(SDI)视图类中手动添加的CListCtrl响应鼠标单击事件!
- MFC单文档下为视图类添加按钮及其响应事件
- 控件类——如何给视图添加响应事件?(有一个方法及其解析)
- 单文档多视图——手动生成树形列表,并给叶子节点添加响应事件
- MFC单文档下为视图类添加按钮及其响应事件
- 单文档多视图(分割窗口)
- 090906(星期天)项目进展:添加CTreeView控件对双击事件的响应
- asp.net C#动态添加创建生成button按钮控件没有触发执行响应click绑定事件处理
- 单文档多视图(分割窗口)
- android 一个控件设置了事件响应(比如Button添加了OnClick回调响应),却在触发控件事件时,不执行事件处理函数
- 动态生成的服务端控件,添加服务端的响应事件
- 单文档下List控件的添加及随窗口大小变化而变化的实现
- VC项目开发之单文档多视图实现-非分割窗口[转]
- MFC程序实现窗口分割,视图快捷插入控件和插入列表
- Asp.net 动态创建的控件并添加事件,无响应的解决方法。
- 简易密码输入自定义控件示例 含自定义事件 可在调用窗口事件视图中看到事件名
- Asp.net 动态创建的控件并添加事件,无响应的解决方法。
- MFC单文档添加控件和消息响应函数
- 为动态生成的控件添加响应事件