武汉理工大学教务处 试题标准答案及评分标准用纸
课程名称 vc 程序
设计 (A 卷) 一、填空题(每空 1 分,共 10 分) 1 GetMessage() TranslateMessage() DispatchMessage() 2 WM_CREATE 3 MoveTo() 4 逻辑坐标系统 设备坐标
系统 5 逻辑坐标 设备坐标 设备坐标 二、简答题(20 分) 1 (10 分) 应用
程序启动 CMyDocument 对象被创建 CMyView 对象被创建 其他视图对象被创建 视图窗口被创建 CMyView::OnCreate 函数被调用(如果被映射了的话) CDocument::OnNewDocument 函数被调用 CView::OnInitialUpdate 函数被调用 调用 CMyView::OnUpdate 初始化视图 用户执行 CMyView 函数更新 CMyDocument 的数据成员 视图命令 调用 CDocument::UpdateAllViews 其他视图的 OnUpdate 函数被调用 用户执行 CMyDocument 函数对数据成员进行更新
文档命令 调用 CDocument::UpdateAllViews CMyView::OnUpdate 函数被调用 其他视图的 OnUpdate 函数被调用 用户退出应用程序 视图对象被删除 CMyDocument 对象被删除 2 (5 分) 可序列化的类必须直接或间接地从 CObject 派生而来,并且在类声明中,必须包含 DECLARE_SERIAL 宏调用,在类的实现文件中,必须包含 IMPLEMENT_SERIAL 宏调用. 还必须为类编写 Serialize 成员函数. 3 (5 分) 1)包含 EXE 文件的目录 2)进程的当前目录 3)Windows 系统目录 4)Windows 目录 5)在 Path 环境变量里列出的目录 三、编程题(共 70 分,第 1 题 10 分,第 2 题 5 分,第 3 题 20 分,第四题 35 分) 1 10 分
CWnd* pWnd=GetDlgItem(IDC_STATIC1); CDC* pControlDC=pWnd->GetDC(); pWnd->Invalidate(); pWnd->UpdateWindow(); CPen redPen(PS_SOLID,1,RGB(255,0,0));//创建红笔 创建红笔 pControlDC->SelectObject(&;redPen); CBrush greenBrush(RGB(0,255,0));//创建绿刷子 创建绿刷子 pControlDC->SelectObject(&;greenBrush); pControlDC->Ellipse(CRect(0,0,100,100));//画圆 画圆 pControlDC->SelectStockObject(BLACK_PEN); pControlDC->SelectStockObject(WHITE_BRUSH); pWnd->ReleaseDC(pControlDC); 2 5分
CBitmap bitmap; // Sequence is important CDC dcMemory; bitmap.LoadBitmap(IDB_BITMAP); dcMemory.CreateCompatibleDC(pDC); dcMemory.SelectObject(&;bitmap);
pDC->BitBlt(100, 100, 54, 96, &;dcMemory, 0, 0, SRCCOPY);
3
20 分 (1)10 分 class CClock { private: int Hour,Minute,Second; public: CClock(){} CClock(int h,int m,int s) { Hour=h; Minute=m; Second=s; } int GetHour(){return Hour;} int GetMinute(){return Minute;} int GetSecond(){return Second;} }; (2) 5 分 CMyDoc::CMyDoc():m_clock(11,30,30){ } (3 )5 分 CMyView::OnDraw() { CString str;
str.Format(“ 现 在 的 时 间 是”:%d:%d:%d",pDoc->m_clock.GetHour(),pDoc->m_clock.GetMinute(),pDoc->m_clock : .GetSecond()); pDC->TextOut(0,0,str); } 4 35 分
(1) 10 分 Point.h 代码 class Point{…},见下面: class Point { public: int X,Y; public: Point(){} Point::Point(int XX,int YY){X=XX;Y=YY;} const Point&; operator =(const Point&; s) { X = s.X; Y = s.Y; return *this; } BOOL operat
or ==(const Point&; s) const { if ((X == s.X) &;&; (Y == s.Y)) { return TRUE; } else { return FALSE; } } }; typedef CArray
PointArray; (2) 10 分 CMyView.cpp: :OnLButtonDown(){…},代码见下面: CMy123Doc* pDoc = GetDocument(); if(m_FirstStepInto)//如果是第一次进入 OnLButtonDown()函数 { if(pDoc->m_pointArray.GetSize()>0)//如果集合里面有对象 { pDoc->m_pointArray.RemoveAll();//清空集合里面的所有对象 } m_FirstStepInto=FALSE; } pDoc->m_pointArray.Add(Point(point.x,point.y)); sum++; if(sum==10) {
CFileDialog dlg(FALSE,NULL,NULL,OFN_HIDEREADONLY|OFN_OVERWR