晚上抓蝎子最佳时间:文档与视图的相互作用

来源:百度文库 编辑:偶看新闻 时间:2024/04/28 15:13:56
CView::GetDocument 函数

MFC AppWizard 产生 CView 的用户派生类时,同时创建一个安全类型的 GetDocument 函数,返回的是指向派生文档类的指针。该函数是一个内联 (inline) 函数,类似于下面的形式:

CMyDoc* CMyView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc))); // “ 断言 ” m_pDocument 指针可以指向的 CMyDoc 类是一个 RUNTIME_CLASS 类型
return (CMyDoc*)m_pDocument;
}

CDocument::UpdateAllViews

函数 UpdateAllViews 函数的原型如下:

void UpdateAllViews( CView* pSender , LPARAM lHint = 0L, CObject* pHint = NULL );

CView::OnUpdate 函数

应用程序调用了 CDocument::UpdateAllViews 函数时,应用程序框架就会相应地调用该函数。

virtual void OnUpdate( CView* pSender , LPARAM lHint , CObject* pHint );

CView::OnInitialUpdate 函数

应用程序被启动时,或从 “ 文件 ” 菜单中选择了 “ 新建 ” 或 “ 打开 ” 时, CView 虚函数都会 被自动调用。该函数除了调用无提示参数 (lHint = 0, pHint = NULL) 的 OnUpdate 函数之外,没做其他任何事情。

可以重载此函数对文档所需信息进行初始化操作。如果应用程序中的文档大小是动态的,那么就可在文档每次改变时调用 OnUpdate 来更新视图的滚动范围。

CDocument::OnNewDocument 函数

在 SDI 应用程序中,从 “ 文件 ” 菜单中选择 “ 新建 ” 命令时,框架将先构造一个文档对 象,然后调用该虚函数。

MFC AppWizard 为用户的派生文档类自动产生了重载的 OnNewDocument 函数,如下面的代码:

BOOL CMyDoc::OnNewDocument()
{
if (!CDocument::OnNewDocument()) // 注意一定要保证对基类函数的调用
return FALSE; // Do initialization of new document here.
return TRUE;
}