Chinaunix首页 | 论坛 | 博客
  • 博客访问: 268207
  • 博文数量: 45
  • 博客积分: 1618
  • 博客等级: 上尉
  • 技术积分: 530
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-11 10:13
文章分类

全部博文(45)

文章存档

2012年(1)

2011年(25)

2010年(19)

我的朋友

分类: C/C++

2011-02-23 17:40:00

首先添加一个对话框资源,我添加的是IDD_FORMVIEW类型对话框,在对话框上创建一个按钮,双击按钮VS就会自动创建一个对话框类,这样就省去了我们自己创建对话框类再去关联该资源的麻烦。该类为CBridgeDialog
在CBridgeView视图类里面添加成员CBridgeDialog *m_viewDialog,并且重载OnActivateView函数,添加如下代码

void CBridgeView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView)
{
    // TODO: 在此添加专用代码和/或调用基类
    if( m_viewDialog == NULL)
    {
     m_viewDialog = new CBridgeDialog();
     m_viewDialog->Create(IDD_FORMVIEW, this);
     m_viewDialog->ShowWindow(SW_SHOW);
     //m_viewDialog->MoveWindow(0,0,500,500);如果此处直接调用本句代码的话,也会生成对话框,不过不能根据客户区的大小自动调节对话框大小
    }
    CView::OnActivateView(bActivate, pActivateView, pDeactiveView);   
}

为了能够使对话框自动调节适应View视图的大小,我又捕获了View类的WM_SIZE消息,添加如下代码

void CBridgeView::OnSize(UINT nType, int cx, int cy)
{
    CView::OnSize(nType, cx, cy);
    if(m_viewDialog!=NULL)
    {

        //向对话框发送WM_SIZE消息,并将客户区改变后的大小通知给对话框
        m_viewDialog->SendMessage(WM_SIZE,nType,(cy<<16)+cx);
    }
}

同样,在CBridgeDialog类里面也要捕获WM_SIZE消息,添加如下代码

void CBridgeDialog::OnSize(UINT nType, int cx, int cy)
{
    CDialogEx::OnSize(nType, cx, cy);
    MoveWindow(0,0,cx,cy);
    // TODO: 在此处添加消息处理程序代码
}

这样,我们最大化程序,或者改变视图大小,客户区的对话框均会跟着改变
阅读(3172) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~