tual ~CAddrbookDoc(); #ifdef _DEBUG
virtual void AssertValid() const; virtual void Dump(CDumpContext&; dc) const; #endif protected: // Generated message map functions protected: //{{AFX_MSG(CAddrbookDoc) //}}AFX_MSG DECLARE_MESSAGE_MAP() }; 完成此函数,此函数在加载新的联系人文件或退出程序时清空联系人链表( 1. 完成此函数,此函数在加载新的联系人文件或退出程序时清空联系人链表( 10 分) //AddrbookDoc.cpp ,文档类实现文件 void CAddrbookDoc::DeleteContents() { CDocument::DeleteContents(); } 完成此函数,此函数完成从文件读取所有的联系人存放在链表中, 2. . 完成此函数,此函数完成从文件读取所有的联系人存放在链表中,以及将链表中所有 联系人保存到文件的功能( 联系人保存到文件的功能( 20 分) void CAddrbookDoc::Serialize(CArchive&; ar) { if (ar.IsStoring()) {
} else {
}
} //AddrbookView.cpp, 视图类实现文件 完成此函数,在此函数中显示所有练习人的信息,格式如下( 3 .完成此函数,在此函数中显示所有练习人的信息,格式如下( 10 分) 电话 电子邮件 xxxx xxxx xxxxxxxxxx … … …
void CAddrbookView::OnDraw(CDC* pDC) { CAddrBookDoc *pDoc=GetDocument(); ASSERT_VALID(pDoc); }
参考答案 模拟试题一 一. 选择题(10 分) DCDCD 二. 填空题(20 分) 1. SendMessage 在消息处理完成后返回,PostMessage 把消息放进消息队列 就立即返回 2. CWinApp,CFrameWnd,CDocument,CView 3. 持续性,动态性,诊断性 4. CMyApp *pApp=(CMyApp *)AfxGetApp(); CMainFrame *pMainWnd=(CMainFrame *)AfxGetMainWnd(); CMyDoc *pDoc=(CMyDoc *)getDocument(); 5. 视图类,文档类,框架窗口类 三. 简答题 1. PeekMessage 和 GetMessage 都是从消息队列中检索消息的函数,它们的 区别是:PeekMessage 只
查询指定的消息是否在消息队列中,取得消息 后,是否删除消息取决于该
函数的参数 wRemoveMsg;GetMessage 在没 有新消息到达消息队列前一组阻塞,一旦有新消息到达,从该队列中取 出并删除该消息。 2. 显式链接和隐式链接是使用动态链接库的两种方式,它们的区别在于: 应用场合不同,隐式链接在大部分场合都可以使用,如果运行时才能确
定需要链接的 DLL 名称,应该使用显式链接;隐式链接在程序启动时就 需要加载动态链接库,如果找不到需要的动态链接库程序无法执行,显 式链接只有需要时才加载动态链接库,而且加载过程由程序控制,避免 找不到动态链接库而终止程序,并且具有不需要导入库,启动速度快的 优点。 3. 包含可执行文件的目录;进程的当前目录;Windows 目录;Windows 系 统目录(system32);环境变量 PATH 中列出的目录 4. snapshot 提供了数据的静态视图,当其他用户改变记录(包括修改、添 加和删除)时,snapshot 不受影响,即 snapshot 不反映其他用户对数据 源记录的改变,但生成 snapshot 的用户自身对记录的修改和删除会正确 反映;dynaset 提供了数据的动态视图,别的用户修改或删除了记录时会 在 dynaset 中反映出来,其他用户对添加的记录要等到调用 Requery 才能 反映出来,用户自身对记录的修改、删除和添加会立刻反映在 dynaset 中。 四. 编程题 1. void CAddrbookDoc::DeleteContents() { POSITION pos=m_ContactList.GetHeadPosition(); while(pos!=NULL){ CContact *pContact; pContact=(CContact *)m_ContactList.GetNext(pos); delete pContact; } ContactList.RemoveAll(); CDocument::DeleteContents(); } 2. void CAddrbookDoc::Serialize(CArchive&; ar) { if (ar.IsStoring()) { POSITION pos=m_ContactList.GetHeadPosition(); while(pos!=NULL){ CContact *pContact; pContact=(CContact *)m_Contac