CFormView和CView 我建立了一个单文档,然后把窗口分成两个视图。一个是本来的View类,另一个是CFormView类。我怎么实现这两个类之间的通信呢。我看了一些文章说View类只能和Doc类安全的通信,所以CFormView类最好也和Doc类通信。不过请问大侠们具体我该写哪些程序呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 通常是把要传输的数据或指针储存在文档类里面,然后调用文档类的UpdateAllViews函数,在视图类的OnUpdate中响应。 也可以通过CSplitterWnd取得视图类指针直接访问。 //获得CMainFrame的指针, CMainFrame * pMainFrm = (CMainFrame*)AfxGetMainWnd(); //找到视图的指针 CxxxView * active = ((CxxxView *)pMainFrm->m_SplitterH.GetPane(0,1)); //获得视图的指针后,什么都好办啦 我想知道具体如何写代码啊?比如我新建了一个水平滚动条,我想当我拖动滚动条的时候能够改变在Doc类中的一个变量。我写了一下的程序:void C...FormView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) { int icur; switch(nSBCode) { case SB_THUMBPOSITION: pScrollBar->SetScrollPos(nPos); break; case SB_LINEDOWN: icur = pScrollBar->GetScrollPos(); icur = icur + 1; if(icur > 255) icur = 255; pScrollBar->SetScrollPos(icur); break; case SB_LINEUP: icur = pScrollBar->GetScrollPos(); icur = icur - 1; if(icur < 0) icur = 0; pScrollBar->SetScrollPos(icur); break; case SB_PAGEDOWN: icur = pScrollBar->GetScrollPos(); icur = icur + 10; if(icur > 255) icur = 255; pScrollBar->SetScrollPos(icur); break; case SB_PAGEUP: icur = pScrollBar->GetScrollPos(); icur = icur - 10; if(icur < 0) icur = 0; pScrollBar->SetScrollPos(icur); break; } if (pScrollBar == &m_SBB) { m_Adjbright = pScrollBar->GetScrollPos(); } UpdateData(false); CFormView::OnHScroll(nSBCode, nPos, pScrollBar);}我是在该类中直接写如下的代码: C...Doc doc; doc.m_.... = m_Adjbright;还是要加入其它的一些函数?我看书上说视图对象只有一个与之关联的文档对象,它所包含的GetDocument函数允许应用程序由视图得到与之相联系的文档。CFormView类是从CView类派生而来,我是不是也要在CFormView中加入GetDocument函数呢? 意思是不是在CFormView类中直接与CView类进行通信而不需要再和Doc通信了? 关于Release版本发布的问题, 为什么新手上手win32或者MFC的时候都要学绘图基础??? 如何制作一个非矩形图标? 恭喜VC版3位兄弟荣获MVP称号:happyparrot、bohut、kingzai 怎样去掉view里的图片? 怎么获得某个后缀(如.wav)的文件在资源管理器中显示的图标呀? 请问采用HTTP访问ASP页面返回结果好不好? vc 6 安装不上!? vc和ASP之间传递参数问题 MFC中基于单文档弹出对话框 请问WM_KEYDOWN和WM_CHAR消息的区别? 得到ClistCtrl中选中列的值。
CMainFrame * pMainFrm = (CMainFrame*)AfxGetMainWnd();
//找到视图的指针
CxxxView * active = ((CxxxView *)pMainFrm->m_SplitterH.GetPane(0,1)); //获得视图的指针后,什么都好办啦
比如我新建了一个水平滚动条,我想当我拖动滚动条的时候能够改变在Doc类中的一个变量。我写了一下的程序:
void C...FormView::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
int icur;
switch(nSBCode)
{
case SB_THUMBPOSITION:
pScrollBar->SetScrollPos(nPos);
break;
case SB_LINEDOWN:
icur = pScrollBar->GetScrollPos();
icur = icur + 1;
if(icur > 255)
icur = 255;
pScrollBar->SetScrollPos(icur);
break;
case SB_LINEUP:
icur = pScrollBar->GetScrollPos();
icur = icur - 1;
if(icur < 0)
icur = 0;
pScrollBar->SetScrollPos(icur);
break;
case SB_PAGEDOWN:
icur = pScrollBar->GetScrollPos();
icur = icur + 10;
if(icur > 255)
icur = 255;
pScrollBar->SetScrollPos(icur);
break;
case SB_PAGEUP:
icur = pScrollBar->GetScrollPos();
icur = icur - 10;
if(icur < 0)
icur = 0;
pScrollBar->SetScrollPos(icur);
break;
}
if (pScrollBar == &m_SBB)
{
m_Adjbright = pScrollBar->GetScrollPos();
}
UpdateData(false);
CFormView::OnHScroll(nSBCode, nPos, pScrollBar);
}
我是在该类中直接写如下的代码:
C...Doc doc;
doc.m_.... = m_Adjbright;
还是要加入其它的一些函数?
我看书上说视图对象只有一个与之关联的文档对象,它所包含的GetDocument函数允许应用程序由视图得到与之相联系的文档。CFormView类是从CView类派生而来,我是不是也要在CFormView中加入GetDocument函数呢?
意思是不是在CFormView类中直接与CView类进行通信而不需要再和Doc通信了?