首先添加一个对话框资源,我添加的是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: 在此处添加消息处理程序代码
}
|
这样,我们最大化程序,或者改变视图大小,客户区的对话框均会跟着改变
阅读(3170) | 评论(0) | 转发(0) |