设为首页 加入收藏

TOP

MFC、VC++综合作业题(三)
2016-04-27 17:25:25 来源: 作者: 【 】 浏览:844
Tags:MFC 综合 作业

ateData(FALSE);

}
注意添加 头文件

6、编写一个单文档应用程序,该程序在用户区能以在两个矩形的相交矩形为外接矩形画一个椭圆。(注意:只考虑两个矩形相交的情况,不考虑不相交的情况。)

答:(1)在视图类声明定义成员变量

private:

CRect m_rRect1;

CRect m_rRect2;

(2)在视图类的构造函数中对成员变量进行初始化

CRECTView::CRECTView()

{

m_rRect1.left=50;

m_rRect1.top=50;

m_rRect1.bottom=200;

m_rRect1.right=250;

m_rRect2.left=100;

m_rRect2.top=120;

m_rRect2.bottom=400;

m_rRect2.right=300;

}

(3)在视图类的OnDraw函数中添加相应代码:

void CRECTView::OnDraw(CDC* pDC)

{

CRECTDoc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

int x1,y1,x2,y2;

if(m_rRect1.left

x1=m_rRect2.left;

else

x1=m_rRect1.left;

if(m_rRect1.top

y1=m_rRect2.top;

else

y1=m_rRect1.top;

if(m_rRect1.right

x2=m_rRect1.right;

else

x2=m_rRect2.right;

if(m_rRect1.bottom

y2=m_rRect1.bottom;

else

y2=m_rRect2.bottom;

pDC->Ellipse(x1,y1,x2,y2);

}

答:已做

7、编写一个单文档应用程序,在窗口用户区中绘制一个矩形,用键盘上的上、下、左、右光标键可以使该矩形分别向4个方向移动,(注意:每一次只移动15像素,矩形不能移出屏幕)。

答:(1)在文档类声明定义成员变量

public:

CRect m_rect;

(2)在文档类的构造函数中对成员变量进行初始化

CSample0803Doc::CSample0803Doc()

{

m_rect.left=50;

m_rect.right=150;

m_rect.top=50;

m_rect.bottom=150;

}

(3)在视图类的OnDraw函数中添加相应代码:

void CSample0803View::OnDraw(CDC* pDC)

{

CSample0803Doc* pDoc = GetDocument();

ASSERT_VALID(pDoc);

pDC->Rectangle(pDoc->m_rect);

}

(4)在视图类的OnKeyDown函数中添加相应代码:

void CSample0803View::OnKeyDown(UINT nChar, UINT nRepCnt, UINT nFlags)

{

CSample0803Doc *pDoc=GetDocument();

CRect rt;

GetClientRect(&rt); //获取当前的绘图区域

switch(nChar)

{

case VK_LEFT: //如果按下的是向左的箭头"←"

if(pDoc->m_rect.left>15)

{

pDoc->m_rect.left-=15;

pDoc->m_rect.right-=15;

}

break;

case VK_RIGHT: //如果按下的是向右的箭头"→"

if(pDoc->m_rect.right<=(rt.right-rt.left)-15)

{

pDoc->m_rect.left+=15;

pDoc->m_rect.right+=15;

}

break;

case VK_UP: //如果按下的是向上的箭头"↑"

if(pDoc->m_rect.top>15)

{

pDoc->m_rect.top-=15;

pDoc->m_rect.bottom-=15;

}

break;

case VK_DOWN: //如果按下的是向下的箭头"↓"

if(pDoc->m_rect.bottom<=(rt.bottom-rt.top)-15)

{

pDoc->m_rect.top+=15;

pDoc->m_rect.bottom+=15;

}

break;

}

InvalidateRect(NULL,TRUE); //刷新窗口

CView::OnKeyDown(nChar, nRepCnt, nFlags);

}

答:已做

8、简单计算程序界面如下图所示,x对应编辑框控件的ID为 IDC_EDIT1,对应值类型的成员变量m_x(double);y对应编辑框控件的ID为IDC_EDIT2,对应值类型的成员变量m_y(double);z对应的编辑框控件的ID 为IDC_EDIT3,对应值类型的成员变量m_z(double)。乘法按钮的功能是将x,y相乘,除法按钮的功能是将x,y相除,并将结果在z对应的编辑框IDC_EDIT3显示出来。写出乘法按钮和除法按钮对应的代码。

\

答:void CExDlg::OnButtonMul()

{ UpdateDate(TRUE);

m_z = m_x * m_y;

UpdateDate(FALSE);

}

void CExDlg::OnButtonDiv()

{ UpdateDate(TRUE);

if ( m_y == 0 )

{ MessageBox( “除数不能为0!”);

return;

}

m_z = m_x / m_y;

UpdateDate(FALSE);

}

答:已做

9、设计一个基于对话框的应用程序,如下图所示。要求:单击Color按钮,能弹出通用颜色对话框选取颜色,并用该颜色在屏幕坐标(100,100)位置显示:This is a color example。

\

写出Color按钮的BN_CLICKED消息处理函数。

答:void CDialog1Dlg::OnColor()

{

COLORREF m_clr;

CColorDialog dlg;

if(dlg.DoModal()==IDOK)

{

m_clr=dlg.GetColor();

CClientDC dc(this);

dc.SetTextColor(m_clr);

dc.TextOut(100,100,"This is a color example。");

}

}

答:已做

10、为学员信息设计一个类CStudent,包含:学号、姓名、出生日期、家庭住址、班级,并使该类可以实现串行化。请写出可以实现要求的CStudent.h和CStudent.cpp文件的内容

//CStudent.h

class CStudent :public CObject {

public:

CString Num;

CString Name;

CTime Birth;

CString Address;

CString Grade;

DECLARE_SERIAL(CStudent) // 使对象可串行化

virtual void Serialize( CArchive & ar ); //重载串行化函数

};

// CStudent.cpp

IMPLEMENT_SERIAL(CStudent,CObject, 0)

void

首页 上一页 1 2 3 4 5 6 下一页 尾页 3/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++学习笔记之四 复合类型1 下一篇LeetCode最常见的面试笔试题总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

最新文章

热门文章

C 语言

C++基础

windows编程基础

linux编程基础

C/C++面试题目