程序设计强化实验报告123文档格式.docx
- 文档编号:21933677
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:82
- 大小:504.73KB
程序设计强化实验报告123文档格式.docx
《程序设计强化实验报告123文档格式.docx》由会员分享,可在线阅读,更多相关《程序设计强化实验报告123文档格式.docx(82页珍藏版)》请在冰豆网上搜索。
二、实验环境
MicrosoftVisualStudio2008
三、实验原理
用C++语言编写。
三、实验步骤
1.编写一个WIN32控制台应用程
2.在屏幕上输出“HelloVisualC++2008!
”
四、实验结果
五、实验结果分析
用W32控制台应用程序,添加相应文件,完成了在屏幕输出“HelloVisualC++2008!
”.
附件1:
程序源代码
//lab1.cpp:
定义控制台应用程序的入口点。
//
#include"
stdafx.h"
#include<
iostream>
usingnamespacestd;
int_tmain(intargc,_TCHAR*argv[])
{
cout<
<
"
HelloVisualC++2008!
endl;
return0;
}
实验二
(1)鼠标实验
09软件三班学号:
一、实验目的
1、了解MFC的基本框架;
2、掌握MFC生成程序框架的基本步骤;
3、熟悉SDI、MDI和基于对话框应用程序的框架
4..熟悉单文档,多文档MFC应用程序的创建;
5、熟悉SDI、MDI和基于对话框应用程序的框架中关键函数;
6..掌握消息的添加;
7、了解各个关键函数调用顺序和作用。
二、实验原理
利用消息映射函数添加代码。
三、实验步骤
1.创建单文档MFC应用程序;
2.为鼠标左键单击消息WM_LBUTTONDOWN和鼠标右键双击消息WM_RBUTTONDBLCLK添加相应的消息映射函数。
当单击时,弹出“左键被按下!
”的对话框;
当双击鼠标右键时,弹出“右键被双击!
3.设置鼠标形状,鼠标在移动过程中变为手形
4.添加WM_MOUSEMOVE消息映射函数,限定鼠标的移动范围,鼠标只能在窗口区域移动,不能移出该区域
实验结果符合实验要求,1、当单击时,弹出“左键被按下!
2、鼠标在移动过程中变为手形;
3、鼠标只能在窗口区域内移动,不能移出该区域。
//CMy2_1View消息处理程序
voidCMy2_1View:
:
OnLButtonDown(UINTnFlags,CPointpoint)
//TODO:
在此添加消息处理程序代码和/或调用默认值
CDC*pDc=GetDC();
CDialogdialog((LPCTSTR)"
lab2_1"
);
//=(CDialog*)GetDC();
CStringstr=(CString)"
左键被按下!
;
dialog.DoModal();
dialog.MessageBox(str);
CView:
OnLButtonDown(nFlags,point);
OnMouseMove(UINTnFlags,CPointpoint)
CDC*pDC=GetDC();
HCURSORcursor;
RECTrcClip;
if((nFlags&
MK_LBUTTON)!
=MK_LBUTTON)
{
GetWindowRect(&
rcClip);
ClipCursor(&
cursor=AfxGetApp()->
LoadStandardCursor(IDC_HAND);
SetCursor(cursor);
}
OnMouseMove(nFlags,point);
OnRButtonDblClk(UINTnFlags,CPointpoint)
右键被双击!
实验二
(2)键盘和窗口控制实验
1、理解基于事件,消息处理的机制
2、掌握各种消息的处理(命令消息、控件消息和自定义消息)
1,.新建建立单文档MFC项目,视图类的基类设为CScrollView
2.用鼠标控制窗口大小,为WM_SIZE(窗口改变大小)编写消息映射函数
3.当窗口大小发生改变时,改变窗口的背景颜色,为WM_DRAW编写消息映射函数,
4.用键盘的按键实现滚动条的控制,为WM_KEYDOWN消息编写消息映射函数
5.计算视图的合计大小,为WM_InitialUpdate消息编写消息映射函数
四、实验结果分析
实验结果符合实验要求,1、当窗口大小发生改变时,改变窗口的背景颜色2、当按下上、下、左、右键时,滚动条会随之上、下、左、右移动。
//lab2_2View.cpp:
Clab2_2View类的实现
lab2_2.h"
lab2_2Doc.h"
lab2_2View.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#endif
//Clab2_2View
IMPLEMENT_DYNCREATE(Clab2_2View,CScrollView)
BEGIN_MESSAGE_MAP(Clab2_2View,CScrollView)
//标准打印命令
ON_COMMAND(ID_FILE_PRINT,&
CScrollView:
OnFilePrint)
ON_COMMAND(ID_FILE_PRINT_DIRECT,&
ON_COMMAND(ID_FILE_PRINT_PREVIEW,&
OnFilePrintPreview)
ON_WM_SIZE()
ON_WM_KEYDOWN()
END_MESSAGE_MAP()
//Clab2_2View构造/析构
Clab2_2View:
Clab2_2View()
在此处添加构造代码
~Clab2_2View()
BOOLClab2_2View:
PreCreateWindow(CREATESTRUCT&
cs)
在此处通过修改
//CREATESTRUCTcs来修改窗口类或样式
returnCScrollView:
PreCreateWindow(cs);
//Clab2_2View绘制
voidClab2_2View:
OnDraw(CDC*pDC)
Clab2_2Doc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
srand(time((unsignedint)NULL));
intcolorNum=rand()%256,cx=rand()%256,cy=rand()%256;
CRectclientRect;
GetClientRect(clientRect);
CBrushbrush;
brush.CreateSolidBrush(RGB(colorNum,cx,cy));
//colorNum++;
cx++;
cy++;
pDC->
DPtoLP(clientRect);
FillRect(clientRect,&
brush);
if(!
pDoc)
return;
在此处为本机数据添加绘制代码
OnInitialUpdate()
CScrollView:
OnInitialUpdate();
CSizesizeTotal;
CSizesizePage=clientRect.Width();
CSizesizeLine=clientRect.Width();
计算此视图的合计大小
sizeTotal.cx=sizeTotal.cy=2500;
SetScrollSizes(MM_TEXT,sizeTotal);
//Clab2_2View打印
OnPreparePrinting(CPrintInfo*pInfo)
//默认准备
returnDoPreparePrinting(pInfo);
OnBeginPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
添加额外的打印前进行的初始化过程
OnEndPrinting(CDC*/*pDC*/,CPrintInfo*/*pInfo*/)
添加打印后进行的清理过程
//Clab2_2View诊断
AssertValid()const
AssertValid();
Dump(CDumpContext&
dc)const
Dump(dc);
Clab2_2Doc*Clab2_2View:
GetDocument()const//非调试版本是内联的
ASSERT(m_pDocument->
IsKindOf(RUNTIME_CLASS(Clab2_2Doc)));
return(Clab2_2Doc*)m_pDocument;
#endif//_DEBUG
//Clab2_2View消息处理程序
OnSize(UINTnType,intcx,intcy)
OnSize(nType,cx,cy);
Invalidate(TRUE);
在此处添加消息处理程序代码
OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags)
switch(nChar)
case38:
//CScrollView*pDc=(CScrollView*)GetDocument();
/制转换用时要小心,很可能出错。
//CPointpoint=pDc->
GetDeviceScrollPosition();
//SendMessage(WM_MOUSEWHEEL);
//pDc->
ScrollToPosition(CPoint(++point.x,++point.y));
//TStringGrida;
//number=37;
SendMessage(WM_VSCROLL);
break;
case40:
//number=40;
SendMessage(WM_VSCROLL,1);
case37:
//number=37;
SendMessage(WM_HSCROLL);
case39:
//number=39;
SendMessage(WM_HSCROLL,1);
OnKeyDown(nChar,nRepCnt,nFlags);
实验三菜单,状态栏,工具栏的设计
09软件三班学号:
095574姓名:
1.了解文档与视图结构程序的工作原理
2.掌握应用程序中的菜单界面设计方法
3.掌握工具栏和状态栏等程序界面的设计方法
4.掌握文档的序列化工作原理
5.掌握使用不同的视图类编程
1.Windows应用程序包括客户区、非客户区。
非客户区包括窗口的边框、标题栏、单栏、工具栏、状态栏和滚动条。
菜单分为两类,一类是依附于框架窗口的一般菜单,包括主菜单和子菜单,另一类是弹出式菜单,也叫快捷菜单或上下文菜单
2.菜单中的每一个菜单项都由菜单项名和命令ID号两个基本要素组成。
3.Windows应用程序是通过消息传递机制运作的,菜单项对命令的激发、调用是通过发送WM_COMMAND消息实现的
4.在程序中可以通过为WM_CONTEXTMENU消息添加消息映射函数来实现弹出式菜单,WM_CONTEXTMENU消息是在收到WM_RBUTTONUP消息后,由windows产生的。
但如果在WM_RBUTTONUP的消息映射函数中没有调用基类的成员函数,则应用程序不会收到WM_CONTEXTMENU消息
5.工具栏是菜单的一种快捷方式。
把最常用的菜单定义为工具栏。
6.状态栏是典型的位于应用程序主窗口底部的窗口,经常在状态栏显示文本提示信息。
当用户浏览菜单项和工具栏按钮时,MFC自动地在状态栏窗口中显示一些提示信息。
1.为程序添加一个“文本”主菜单单项“显示”和“删除”。
点击显示时显示出“欢迎”字样,点击删除时字样消失。
(1)在文档派生类Cwork3Doc添加一个成员变量m_change:
;
(2)修改视图派生类的OnDraw函数,根据m_change的值显示或删除文本;
(3)为菜单项添加命令处理函.
2.为程序work3的“文本”菜单添加弹出式菜单。
在类视图中选择类Cwork3View,在“属性”窗口中单击“消息”按钮,选择“WM_CONTEXTMENU”选项,单击右侧下拉菜单中的“<
添加>
OnContextMenu”选项,即可在视图类Cwork3View中添加消息WM_CONTEXTMENU的消息映射函数.
3.为程序work3的“文本”菜单项添加工具栏按钮。
(1)在资源视图中展开“work3.rc”文件夹,再展开“Toolbar”文件夹,双击其下“IDR_MAINFRAME”选项,打开工具栏编辑器,屏幕上同时显示工具栏设计窗口,选择资源视图里的“work3”菜单项右击,在弹出的快捷菜单中执行“添加”——“资源”命令,会弹出“添加资源”对话框,在“资源类型”列表框中选择“Toolbar”选项,并单击“新建”按钮,系统就会默认添加一个名为“IDR_TOOLBAR1”的工具栏,屏幕上同时显示工具栏设计窗口,用户可自己设计工具栏。
(2)添加工具栏按钮.(3)设置工具栏按钮属性.
4修改的程序work3,在状态栏上显示鼠标的位置,以及当前的状态(是显示文本还是删除文本)。
(1)添加串表;
(2)添加指示器面板;
(3)添加消息映射函数OnMouseMove;
(4)修改OnDraw函数,添加显示当前状态的代码。
.
.
5.设置状态栏显示时间。
(1)在StringTable中添加NewString,在此定义为ID_INDICATOR_CLOCK,将其Caption设为00:
00:
00。
(2)在MainFrm.cpp中indicators声明处添加ID_INDICATOR_CLOCK,;
(3)安装定时器(4)编写时间处理函数(5)销毁定时器。
6.调试,运行。
实验结果符合实验要求。
主菜单的“文本”和它的两个下拉子菜单项“显示”和“删除”。
并添加对应的按钮和弹出菜单。
状态栏显示当前状态、鼠标位置、时间
一:
//work3View.cpp:
Cwork3View类的实现
work3.h"
work3Doc.h"
work3View.h"
//Cwork3View
IMPLEMENT_DYNCREATE(Cwork3View,CView)
BEGIN_MESSAGE_MAP(Cwork3View,CView)
CView:
ON_WM_CONTEXTMENU()
ON_WM_MOUSEMOVE()
//Cwork3View构造/析构
Cwork3View:
Cwork3View()
~Cwork3View()
{}
BOOLCwork3View:
returnCView:
//Cwork3View绘制
voidCwork3View:
Cwork3Doc*pDoc=GetDocument();
return;
switch(pDoc->
m_change)
case1:
pDC->
TextOut(10,10,_T("
欢迎!
));
break;
case2:
CStringstate;
//获取状态栏指针
CStatusBar*pStatus;
pStatus=(CStatusBar*)AfxGetApp()->
m_pMainWnd->
GetDescendantWindow(ID_VIEW_STATUS_BAR);
if(pStatus)
switch(pDoc->
{
case1:
state="
显示"
pStatus->
SetPaneText(2,state);
//显示当前状态
break;
case2:
删除"
}
//Cwork3View打印
//Cwork3View诊断
Cwork3Doc*Cwork3View:
IsKindOf(RUNTIME_CLASS(Cwork3Doc)));
return(Cwork3Doc*)m_pDocument;
//Cwork3View消息处理程序
intCwork3View:
OnDraw(void)
OnContextMenu(CWnd*pWnd,CPointpoint)
在此处添加消
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 强化 实验 报告 123