VC++单文档分割窗口、在视图中添加控件,并响应该控件的事件

转自:http://www.cnblogs.com/qintangtao/archive/2013/02/20/2919090.html

一、单文档分割窗口

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("这是一个简单的消息框"); 
}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值