Windows编程实验报告Word下载.docx
- 文档编号:4697617
- 上传时间:2023-05-03
- 格式:DOCX
- 页数:15
- 大小:259.07KB
Windows编程实验报告Word下载.docx
《Windows编程实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《Windows编程实验报告Word下载.docx(15页珍藏版)》请在冰点文库上搜索。
创新型
√
实
验
目
的
或
要
求
一:
实验目的和要求:
目的:
图形设备接口(GDI),把应用程序的函数调用传递给图形设备驱动程序,由相关驱动程序来执行与硬件相关的函数。
GDI向应用程序提供一个设备无关的编程,同时以设备相关的格式和具体的硬件设备交互。
掌握在MFC中使用GDI进行绘图操作。
要求:
用MFC使用GDI进行绘图操作。
原
理
(
算
法
流
程
图
者
含
注
释
源
代
码
)
二:
实验原理和步骤
在MFC使用两类对象:
(1)设备上下文对象
(2)GDI对像。
其中,主要用CClientDC和CPen来实现。
主要有以下三个步骤:
(1)定义数据结构类型和变量
(2)初始化绘图信息(3)绘图过程的实现
三:
核心代码
CDlg2:
:
CDlg2(CWnd*pParent/*=NULL*/)
:
CDialog(CDlg2:
IDD,pParent)
{//{{AFX_DATA_INIT(CDlg2)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT
}
voidCDlg2:
DoDataExchange(CDataExchange*pDX)
{CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDlg2)
theClassWizardwilladdDDXandDDVcallshere
//}}AFX_DATA_MAP
}BEGIN_MESSAGE_MAP(CDlg2,CDialog)
//{{AFX_MSG_MAP(CDlg2)
ON_WM_MOUSEMOVE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
////CDlg2messagehandlers
OnMouseMove(UINTnFlags,CPointpoint)
{//TODO:
Addyourmessagehandlercodehereand/orcalldefault
oldp=point;
CClientDCcdc(this);
//定义客户区设备环境
if(nFlags&
MK_LBUTTON)
{CPenpen;
pen.CreatePen(PS_SOLID,5,RGB(0,255,0));
cdc.SelectObject(&
pen);
cdc.MoveTo(oldp.x,oldp.y);
cdc.LineTo(point.x,point.y);
//绘制线段
}CDialog:
OnMouseMove(nFlags,point);
}
四:
实验结果分析
实验结果:
结
果
分
析
及
心
得
体
会
通过这次的实验,我学会了初步利用WINDOWS提供的图形设备借口GDA将图形显示到显示器上。
本次实验的学习,加深了我对Windows编程中MFC中这两类对象的使用,掌握了新的技能,让我在今后的学习中对Windows中MFC的了解更加深刻。
成
绩
评
定
教师签名:
年月日
使用MFC实现位图
目的:
掌握创建自定义位图控件。
这是允许在每一种按钮状态下呈现不同的位图,这些状态包括:
disabled,normal,mouseover,还有buttonpressed;
除了按钮的图像,让我们的按钮饱含文本,并且根据按钮图片控制文本的对齐方式也很重要。
按钮采用XP样式,还包含了我们定制的一些特性。
要求:
使用MFC实现位图。
1.在内存条中创建位图对象。
2.根据BITMAP结构在内存条中创建位图对象。
3.创建与指定设备上下文兼容的位图的对象。
4.从应用程序资源中加载位图对象,有两种形式,可以根据资源名或资源ID加载。
CDlg3:
OnBnClickedButton1()
{
if(number<
0)
{
MessageBox("
没有上一张了"
);
number=1;
return;
}
CRectwRect;
this->
GetWindowRect(&
wRect);
ScreenToClient(&
CDCmdc,TempDC;
BITMAPBmpInfo;
CBitmapClientBmp,*pOldBmp;
mdc.CreateCompatibleDC(&
cdc);
TempDC.CreateCompatibleDC(&
ClientBmp.CreateCompatibleBitmap(&
cdc,wRect.right,wRect.bottom);
mdc.SelectObject(&
ClientBmp);
TempDC.SelectObject(&
bmp[number]);
bmp[number].GetBitmap(&
BmpInfo);
mdc.TransparentBlt(0,0,300,300,&
TempDC,0,0,BmpInfo.bmWidth,BmpInfo.bmHeight,RGB(0,0,0));
cdc.BitBlt(100,50,300,300,&
mdc,0,0,SRCCOPY);
number--;
ClientBmp.DeleteObject();
mdc.DeleteDC();
voidCDlg3:
OnBnClickedButton2()
if(number>
=4)
没有下一张了"
number=2;
return;
//mdc.BitBlt(0,0,wRect.Width(),wRect.Height(),&
TempDC,0,0,SRCCOPY);
TempDC,0,0,BmpInfo.bmWidth,BmpInfo.bmHeight,RGB(0,0,0));
cdc.BitBlt(100,50,300,300,&
number++;
ClientBmp.DeleteObject();
//TODO:
在此添加控件通知处理程序代码
运行结果
位图是储存在计算机内存当中的一个GDI对象,本次的实验让我学会了在BITMAP结构在内存条中创建位图对象,也让我学会了在MFC中位图控件的使用。
让我对计算机中图像的储存方式和绘制有了新的了解,对计算机中MFC的掌握有了更深层次的了解。
在今后的学习中有了更大的帮助。
使用单行、多行编辑框输入显示文本
1.掌握编辑控件的常用形态、CEdit类常用处理函数以及消息处理。
2.掌握SetTextColor函数的应用。
实现流程
(1)设置“password”属性项,即用户输入时,用“*”显示
(2)设置多行文本编辑框,且带水平和垂直滚动条,同时该编辑框为只读的,即不允许用户输入,这时需要为其设置“MultiLine”,“Horizontalscroll”,“Verticalscroll”,“Read-only”
(3)添加EN_CHAGE消息映射和消息响应函数OnChangeUser()
(4)设置按钮的消息响应函数
WINGDIAPICOLORREFWINAPISetTextColor(__inHDChdc,__inCOLORREFcolor);
hdc是当前设备的句柄。
color是设置当前设备字符输出颜色。
voidCTest43BaseEditBoxDlg:
OnSet()
设置“password”属性项,即用户输入时,用“*”显示设置多行文本编辑框,且带水平和垂直滚动条,同时该编辑框为只读的,即不允许用户输入,这时需要为其设置“MultiLine”,“Horizontalscroll”,“Verticalscroll”,“Read-only”
OnChangeUser()
//TODO:
如果该控件是RICHEDIT控件,则它将不会
//发送该通知,除非重写CDialog:
OnInitDialog()
//函数并调用CRichEditCtrl().SetEventMask(),
//同时将ENM_CHANGE标志“或”运算到掩码中。
UpdateData(true);
//获取编辑框值
m_password=m_user;
UpdateData(false);
//更新编辑控件内容
设置按钮的消息响应函数如下:
//获取编辑控件值
if((m_user.IsEmpty())||(m_password.IsEmpty()))
//用户名、密码是否为空
AfxMessageBox(L"
用户名和密码不能为空!
"
return;
CStringstr;
str=L"
用户名为:
+m_user+L"
密码为:
+m_password+L"
\r\n"
;
//\r\n实现文件的换行
CEdit*pEdit=(CEdit*)GetDlgItem(IDC_USERLIST);
//获取多行编辑控件窗口指针
pEdit->
SetSel(0,-1);
//选择全部文本
intnStart,nEnd;
GetSel(nStart,nEnd);
SetSel(nEnd,nEnd);
//将插入符定位到最后的一个字符
ReplaceSel(str);
//插入需要的文本
m_user=m_password=L"
UpdateData(false);
//更新显示编辑控件的内容
GetDlgItem(IDC_USER)->
SetFocus();
//设置用户名编辑框
输入的焦点
运行测试
通过本次的实验,我学会了Windows编辑控件中的功能的使用、CEdit类常用处理函数的使用,对以后的学习有了很大的帮助。
在以后的学习中,会更加加深这方面的学习,对以后有很大的帮助。
设置编辑框控件的背景、文本颜色
1.学习美化控件显示。
3.掌握如何制定各种控件的颜色显示。
(1)定义颜色、画刷。
在对话框头文件“ColorEditBoxDlg.h”中,定义画刷对象和颜色结构。
在对话框的初始化函数OnInitDialg()中,进行相应的初始化。
(2)重载对话框OnCtrlColor函数,修改控件的绘制属性。
使用ClassWizard为对话框添加WM_CTLCOLOR消息映射和消息响应函数OnCtlColor,实现编辑框的颜色设置。
CColorEditBoxDlg:
CColorEditBoxDlg(CWnd*pParent/*=NULL*/)
CDialog(CColorEditBoxDlg:
//{{AFX_DATA_INIT(CColorEditBoxDlg)
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->
LoadIcon(IDR_MAINFRAME);
voidCColorEditBoxDlg:
CDialog:
//{{AFX_DATA_MAP(CColorEditBoxDlg)
BOOLCColorEditBoxDlg:
OnInitDialog();
//Add"
About..."
menuitemtosystemmenu.
//IDM_ABOUTBOXmustbeinthesystemcommandrange.
ASSERT((IDM_ABOUTBOX&
0xFFF0)==IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX<
0xF000);
CMenu*pSysMenu=GetSystemMenu(FALSE);
if(pSysMenu!
=NULL)
CStringstrAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if(!
strAboutMenu.IsEmpty())
{
pSysMenu->
AppendMenu(MF_SEPARATOR);
AppendMenu(MF_STRING,IDM_ABOUTBOX,strAboutMenu);
}
//Settheiconforthisdialog.Theframeworkdoesthisautomatically
//whentheapplication'
smainwindowisnotadialog
SetIcon(m_hIcon,TRUE);
//Setbigicon
SetIcon(m_hIcon,FALSE);
//Setsmallicon
Addextrainitializationhere
m_redcolor=RGB(255,0,0);
//红色
m_bluecolor=RGB(0,0,255);
//蓝色
m_textcolor=RGB(255,255,255);
//白色文本
m_redbrush.CreateSolidBrush(m_redcolor);
//红色画刷
m_bluebrush.CreateSolidBrush(m_bluecolor);
//蓝色画刷
returnTRUE;
//returnTRUEunlessyousetthefocustoacontrol
五、心得分析
本次的实验,我初步学习了Windows中美化控件的使用,初步学会了SetTextColor函数的应用,对编辑函数的使用。
让我对Windows中编辑控件有了更深刻的了解,对未来的学习有很大的帮助。
心____________________________________________________________________________________________________________________________教师签名:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Windows 编程 实验 报告