windows程序设计08352.docx

上传人:b****5 文档编号:30221369 上传时间:2023-08-07 格式:DOCX 页数:12 大小:17.69KB
下载 相关 举报
windows程序设计08352.docx_第1页
第1页 / 共12页
windows程序设计08352.docx_第2页
第2页 / 共12页
windows程序设计08352.docx_第3页
第3页 / 共12页
windows程序设计08352.docx_第4页
第4页 / 共12页
windows程序设计08352.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

windows程序设计08352.docx

《windows程序设计08352.docx》由会员分享,可在线阅读,更多相关《windows程序设计08352.docx(12页珍藏版)》请在冰豆网上搜索。

windows程序设计08352.docx

windows程序设计08352

实验一:

实验题目:

MFC的图形程序编程

实验目的:

1、掌握如何创建MFC单文档的应用程序

2、掌握如何使用画笔类和画刷类在OnDraw()函数中进行绘图

3、掌握利用设备描述表绘图的方法。

实验内容:

1、在视图类窗口中的OnDraw成员函数中实现绘图功能:

(1)画点

(2)画直线

(3)画矩形

(4)画椭圆

在绘图时,要求利用CPen创建不同样式的画笔;利用CBrush创建不同样式的画刷;利用设备描述表类的FillRect画矩形,并填充颜色。

2、要求在鼠标左键抬起的消息响应函数中使用至少两种方法(使用不同的设备描述表类)来完成上述绘图功能。

实验步骤:

1)在集成开发平台,打开File菜单,单击New菜单项。

2)在New对话框中,选择Projects标签,进行以下操作:

项目类型选择MFCAppWizard[exe];项目名称aa4(任意);设置项目保存位置;确定;工程类型选择“Singledocument”完成即可。

3)打开窗口左边的项目工作区内aa4Classes前面的+号,打开下面列出的Caa4View前面的加号,双击下面列出的OnDraw()函数,就可以在右边的编辑区工作了。

4)在View菜单的ClassWizard菜单项添加鼠标消息,即为View类添加WM_LBUTTONUP消息,在所添加的消息中就可以工作了。

5)编译运行

参考代码:

1、

voidCEx02View:

:

OnDraw(CDC*pDC)

{

CEx02Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

CPenpen(PS_SOLID,1,RGB(255,0,0));

CBrushbrush(RGB(0,255,0));

CPen*oldpen=pDC->SelectObject(&pen);

CBrush*oldbrush=pDC->SelectObject(&brush);

pDC->SetPixel(100,100,RGB(0,0,255));

pDC->MoveTo(300,300);

pDC->LineTo(400,400);

pDC->Rectangle(CRect(CPoint(100,100),CPoint(300,300)));

pDC->Ellipse(300,300,500,500);

pDC->SelectObject(oldbrush);

pDC->SelectObject(oldpen);

//TODO:

adddrawcodefornativedatahere

}

改变代码中的画笔、画刷样式!

2、

方法1:

使用CDC类

voidCEx02View:

:

OnLButtonUp(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CDC*pDC=GetDC();

CPenpen(PS_SOLID,1,RGB(255,0,0));

CBrushbrush(RGB(0,255,0));

CPen*oldpen=pDC->SelectObject(&pen);

CBrush*oldbrush=pDC->SelectObject(&brush);

pDC->SetPixel(100,100,RGB(0,0,255));

pDC->MoveTo(300,300);

pDC->LineTo(400,400);

pDC->Rectangle(CRect(CPoint(100,100),CPoint(300,300)));

pDC->Ellipse(300,300,500,500);

pDC->SelectObject(oldbrush);

pDC->SelectObject(oldpen);

ReleaseDC(pDC);

CView:

:

OnLButtonUp(nFlags,point);

}

方法2:

voidCEx02View:

:

OnLButtonUp(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CClientDCdc(this);

CPenpen(PS_SOLID,1,RGB(255,0,0));

CBrushbrush(RGB(0,255,0));

CPen*oldpen=dc.SelectObject(&pen);

CBrush*oldbrush=dc.SelectObject(&brush);

dc.SetPixel(100,100,RGB(0,0,255));

dc.MoveTo(300,300);

dc.LineTo(400,400);

dc.Rectangle(CRect(CPoint(100,100),CPoint(300,300)));

dc.Ellipse(300,300,500,500);

dc.SelectObject(oldbrush);

dc.SelectObject(oldpen);

CView:

:

OnLButtonUp(nFlags,point);

}

实验二:

实验题目:

MFC的键盘、鼠标程序编程

实验目的:

1)掌握添加鼠标移动消息的方法

2)掌握如何在构造函数中初始化,在头文件中定义变量

实验内容及参考代码:

1、鼠标程序编程

编写使用鼠标实现橡皮筋功能的画线程序 

要求:

使用设备描述表类的设置绘图模式函数,将绘图模式设置成R2_XORPEN 模式,并结合鼠标响应函数来实现橡皮筋功能的画线程序。

代码实现:

(1)在CEx03View中定义下面成员:

private:

CPointm_pOrg,m_pEnd;

(2)添加相关鼠标消息响应函数,并编码如下:

voidCEx03View:

:

OnLButtonUp(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CClientDCdc(this);

dc.MoveTo(m_pOrg);

dc.LineTo(m_pEnd);

CView:

:

OnLButtonUp(nFlags,point);

}

voidCEx03View:

:

OnMouseMove(UINTnFlags,CPointpoint)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

if(nFlags&MK_LBUTTON)

{

CClientDCdc(this);

CPenpen(PS_DOT,1,RGB(0,0,0));

dc.SetROP2(R2_XORPEN);

CPen*oldpen=dc.SelectObject(&pen);

dc.MoveTo(m_pOrg);

dc.LineTo(point);

dc.MoveTo(m_pOrg);

dc.LineTo(m_pEnd);

m_pEnd=point;

dc.SelectObject(oldpen);

}

CView:

:

OnMouseMove(nFlags,point);

}

2、键盘程序编程

要求:

利用WM_KEYDOWN、WM_KEYUP及WM_CHAR消息响应函数来编写键盘程序,掌握键盘消息、响应顺序及对应的消息响应函数参数。

代码如下:

(1)在CEx05View中定义成员变量:

private:

CStringstrdown,strup,strchar;

(2)响应函数:

voidCEx05View:

:

OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CClientDCdc(this);

strdown.Format("%c,%d",nChar,nChar);

InvalidateRect(NULL,TRUE);

CView:

:

OnKeyDown(nChar,nRepCnt,nFlags);

}

voidCEx05View:

:

OnKeyUp(UINTnChar,UINTnRepCnt,UINTnFlags)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

CClientDCdc(this);

strup.Format("%c,%d",nChar,nChar);

InvalidateRect(NULL,TRUE);

CView:

:

OnKeyUp(nChar,nRepCnt,nFlags);

}

voidCEx05View:

:

OnChar(UINTnChar,UINTnRepCnt,UINTnFlags)

{

//TODO:

Addyourmessagehandlercodehereand/orcalldefault

//MessageBox("char");

CClientDCdc(this);

strchar.Format("%c,%d",nChar,nChar);

InvalidateRect(NULL,TRUE);

CView:

:

OnChar(nChar,nRepCnt,nFlags);

}

voidCEx05View:

:

OnDraw(CDC*pDC)

{

CEx05Doc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

pDC->TextOut(80,10,strdown);

pDC->TextOut(80,80,strup);

pDC->TextOut(80,160,strchar);

//TODO:

adddrawcodefornativedatahere

}

实验三:

实验题目:

MFC的文件处理程序编程

实验目的:

1)了解通过文档类的虚函数Serialize()函数来进行文档数据的保存和读取

2)掌握执行ar.IsStoring()分支,操作运算符“<<”和“>>”能保存或读取数据

实验内容:

在单文档的应用程序中利用菜单弹出一个对话框,在对话框的两个编辑框中输入文本,按ok键后,所输入的文本就会显示在窗体中;并可以使文本实现保存和打开。

实验步骤:

1)在集成开发平台,打开File菜单,单击New菜单项。

2)在New对话框中,选择Projects标签,进行以下操作:

项目类型选择MFCAppWizard[exe];项目名称aa11(任意);设置项目保存位置;确定;工程类型选择“Singledocument”完成即可。

3)Insert菜单的Resource命令,添加对话框;在对话框的任何一个空白域双击,弹出一个提示添加新类的对话框,选择“Createanewclass”,创建一个名为CDlg1的类。

1)对话框中添加两个编辑框用以输入文本,为编辑框添加CDlg1类的成员变量m_e1和m_e2。

2)添加菜单AAA,设置其ID为ID_AAA,并为其添加消息。

3)为文档类添加两个成员变量m_Var1Edit和m_Var2Edit,并在构造函数中初始化。

4)在View.cpp中添加头文件#include.

在相应的函数中添加代码。

5)编译运行。

参考代码:

voidCWenjianView:

:

OnAaa()

{

//TODO:

Addyourcommandhandlercodehere

CWenjianDoc*pDoc=GetDocument();

CDlg1dlg1;

if(dlg1.DoModal()==IDOK)

{pDoc->m_Var1Edit=dlg1.m_e1;

pDoc->m_Var2Edit=dlg1.m_e2;

pDoc->UpdateAllViews(NULL);//更新视图

}

}

voidCWenjianView:

:

OnDraw(CDC*pDC)

{

CWenjianDoc*pDoc=GetDocument();

ASSERT_VALID(pDoc);

//TODO:

adddrawcodefornativedatahere

pDC->TextOut(100,100,pDoc->m_Var1Edit);

pDC->TextOut(100,120,pDoc->m_Var2Edit);;

}

voidCWenjianDoc:

:

Serialize(CArchive&ar)

{

if(ar.IsStoring())

{

ar<

}

else

{

ar>>m_Var1Edit>>m_Var2Edit;

}

UpdateAllViews(NULL);//更新视图

}

CAa1Doc:

:

CAa1Doc()

{

//TODO:

addone-timeconstructioncodehere

m_Var1Edit="AAAA";

m_Var2Edit="BBBB";

}

实验四:

实验题目:

MFC的对话框程序编程

实验目的:

1)了解模态对话框和非模态对话框的含义

2)掌握在单文档的应用程序中创建模态和非模态对话框的方法

实验内容:

1)在单文档的应用程序中添加模态对话框,且新建类;在菜单中调用所建的对话框,并在对话框中实现简单的整数加法。

2)单文档的应用程序中添加非模态对话框,且新建类;在菜单中调用所建的对话框。

实验步骤:

//实验内容1)

1)在集成开发平台,打开File菜单,单击New菜单项。

2)在New对话框中,选择Projects标签,进行以下操作:

项目类型选择MFCAppWizard[exe];项目名称aa9(任意);设置项目保存位置;确定;工程类型选择“Singledocument”完成即可。

1)择Insert菜单Resource命令,添加对话框;并在对话框上添加三个编辑框和一个按钮,右击编辑框选择“ClassWizard”,在“MemberVariables”页面中为三个编辑框添加三个整型的成员变量。

2)在对话框的任何一个空白域双击,弹出一个提示添加新类的对话框,选择“Createanewclass”,创建一个名为Cdlg的类

1)选择工作区中的ResourceView选项卡,可以看到菜单资源,添加一个菜单“对话框”和一个菜单项“模态加”,并为其设置ID为ID_ADD。

2)在View.cpp中添加头文件“dlg.h”,为菜单项“模态加”和对话框中的按钮添加消息,就可以在所添加的消息中添加代码了。

7)编译运行

//实验内容2)

1)在集成开发平台,打开File菜单,单击New菜单项。

2)在New对话框中,选择Projects标签,进行以下操作:

项目类型选择MFCAppWizard[exe];项目名称aa5(任意);设置项目保存位置;确定;工程类型选择“Singledocument”完成即可。

3)Insert菜单Resource命令,添加对话框。

4)在对话框的任何一个空白域双击,弹出一个提示添加新类的对话框,选择“Createanewclass”,创建一个名为Cdlg2的类

5)择工作区中的ResourceView选项卡,可以看到菜单资源,添加一个菜单“对话框”和一个菜单项“非模态”,并为其设置ID。

6)在View.cpp中添加头文件“dlg2.h”,为菜单项“非模态”添加消息,就可以在所添加的消息中添加代码了。

7)编译运行

参考代码:

//模态对话框

voidCA24View:

:

OnAaaBbb()

{

//TODO:

Addyourcommandhandlercodehere

CDlg1dlg1;

dlg1.DoModal();

}

voidCdlg:

:

OnButton2()

{

//TODO:

Addyourcontrolnotificationhandlercodehere

UpdateData(true);//从编辑框输入变量

m_x3=m_x1+m_x2;

UpdateData(false);//从变量输出到编辑框显示

}

//非模态对话框

voidCA3View:

:

OnFei()

{

//TODO:

Addyourcommandhandlercodehere

Cdd*m_pModelless;

m_pModelless=newCdd();//动态创建对话框

m_pModelless->Create(IDD_DIALOG1,this);

m_pModelless->ShowWindow(SW_SHOW);//显示对话框

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1