}
};
voidmain()
{
Employeeaa("小明","公安小区1号","徐州","江苏","221000");
aa.display();
aa.changename(aa);
aa.display();
}
(2)总结实验的心得体会,实验中遇到的困难以及解决的方法等
刚开始编写的程序比较复杂,错误很多,不是少个分号就是多个大括号。
其次程序比较不美观,感觉界面很陈旧,所以后来对输出界面做了比较人性化的美化工作。
实验中的一些错误的改正:
(1)在类内不允许对所定义的数据成员进行初始化。
(2)类中的数据成员的类型可以是任意的,包括整型、浮点型、字符型、数组、指针和引用等。
也可以是对象,即另一个类的对象,可以作为该类的成员,但自身类的对象是不可以的。
(3)一般地,在类内先说明公有成员,它们是用户关心的,后面说明私有成员。
(4)一般将类定义的说明部分或者整个定义部分(包含实现部分)放在一个头文件中。
(5)在类的说明部分之后必须加分号“;”。
本次实现我深刻的学习了C++的基本语法规范,学习了关于类的声明与定义,学会了使用strcmp函数,深刻的理解了C++中类的封装的优越性。
实验三Windows图形绘制编程实验
一、实验目的
(1)熟悉VisualC++6.0开发环境;
(2)掌握Windows图形输出的方法;
(3)理解设备环境、画笔、画刷的概念,掌握常用的绘图函数。
二、实验内容
请编写程序,要求如下:
(1)定义一支红色画笔,绘制一个正方形;
(2)用不同颜色的线条连接互不相邻的两个顶点;
(3)用不同颜色的画刷填充用上述方法所形成的图形中的每一个区域。
三、实验报告
(1)列出图形绘制程序代码清单;
#include//包含应用程序中所需的数据类型和数据结构的定义
#include
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//---------------以下初始化窗口类----------------------
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)
{
HWNDhwnd;
MSGMsg;
WNDCLASSwndclass;
//LPCWSTRlpszClassName=_T("窗口");//窗口类名
//LPCWSTRlpszTitle=L"My_Windows";//窗口标题名
charlpszClassName[]="窗口";//窗口类名
charlpszTitle[]="基本绘图练习";//窗口标题名
//窗口类的定义
wndclass.style=0;//窗口类型为缺省类型
wndclass.lpfnWndProc=WndProc;//定义窗口处理函数
wndclass.cbClsExtra=0;//窗口类无扩展
wndclass.cbWndExtra=0;//窗口实例无扩展
wndclass.hInstance=hInstance;//当前实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
//窗口的最小化图标为缺省图标
wndclass.hCursor=LoadCursor(NULL,IDC_ARROW);
//窗口采用箭头光标
wndclass.hbrBackground=(HBRUSH)GetStockObject(WHITE_BRUSH);
//窗口背景为白色
wndclass.lpszMenuName=NULL;//窗口中无菜单
wndclass.lpszClassName=lpszClassName;
//窗口类名为"窗口"
//---------------以下进行窗口类的注册-------
if(!
RegisterClass(&wndclass))//如果注册失败则发出警告
{MessageBeep(0);returnFALSE;}
//----------------创建窗口-------------------
hwnd=CreateWindow
(
//_T("Title"),
lpszClassName,//窗口类名
lpszTitle,//窗口实例的标题名
WS_OVERLAPPEDWINDOW,//窗口的风格
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口左上角坐标为缺省值
CW_USEDEFAULT,
CW_USEDEFAULT,//窗口的高和宽为缺省值
NULL,//此窗口无父窗口
NULL,//此窗口无主菜单
hInstance,//创建此窗口的应用程序的当前句柄
NULL//不使用该值
);
//---------------显示窗口----------------------
ShowWindow(hwnd,nCmdShow);
//--------------绘制用户区---------------------
UpdateWindow(hwnd);
//---------------消息循环----------------------
while(GetMessage(&Msg,NULL,0,0))
{
TranslateMessage(&Msg);
DispatchMessage(&Msg);
}
returnMsg.wParam;//消息循环结束即程序终止时将信息返回系统
}
//窗口函数
LRESULTCALLBACKWndProc
(HWNDhwnd,
UINTmessage,
WPARAMwParam,
LPARAMlParam
)
{
HDChDC;//定义指向设备的句柄
HBRUSHhBrush;//定义指向画刷的句柄
HPENhPen;//定义指向画笔的句柄
PAINTSTRUCTPtStr;//定义指向包含绘图信息的结构变量
POINTpoints1[3],points2[3],points3[3],points4[3];
points1[0].x=10;
points1[0].y=10;
points1[1].x=100;
points1[1].y=10;
points1[2].x=55;
points1[2].y=55;
points2[0].x=55;
points2[0].y=55;
points2[1].x=100;
points2[1].y=10;
points2[2].x=100;
points2[2].y=100;
points3[0].x=100;
points3[0].y=100;
points3[1].x=55;
points3[1].y=55;
points3[2].x=10;
points3[2].y=100;
points4[0].x=10;
points4[0].y=100;
points4[1].x=55;
points4[1].y=55;
points4[2].x=10;
points4[2].y=10;
switch(message)
{
caseWM_PAINT:
//处理绘图消息
hDC=BeginPaint(hwnd,&PtStr);
SetMapMode(hDC,MM_ISOTROPIC);//设置映像模式
SetWindowExtEx(hDC,50,50,NULL);
SetViewportExtEx(hDC,100,500,NULL);
hBrush=(HBRUSH)CreateSolidBrush(RGB(0,100,100));
SelectObject(hDC,hBrush);
Polygon(hDC,points1,3);
hBrush=(HBRUSH)CreateSolidBrush(RGB(100,0,100));
SelectObject(hDC,hBrush);
Polygon(hDC,points2,3);
hBrush=(HBRUSH)CreateSolidBrush(RGB(100,100,100));
SelectObject(hDC,hBrush);
Polygon(hDC,points3,3);
hBrush=(HBRUSH)CreateSolidBrush(RGB(100,100,0));
SelectObject(hDC,hBrush);
Polygon(hDC,points4,3);
hPen=CreatePen(PS_SOLID,2,RGB(0,255,255));
SelectObject(hDC,hPen);
MoveToEx(hDC,10,10,NULL);
LineTo(hDC,100,10);
hPen=CreatePen(PS_SOLID,2,RGB(0,255,0));
SelectObject(hDC,hPen);
MoveToEx(hDC,100,10,NULL);
LineTo(hDC,100,100);
hPen=CreatePen(PS_SOLID,2,RGB(0,0,255));
SelectObject(hDC,hPen);
MoveToEx(hDC,100,100,NULL);
LineTo(hDC,10,100);
hPen=CreatePen(PS_SOLID,2,RGB(255,255,0));
SelectObject(hDC,hPen);
MoveToEx(hDC,10,100,NULL);
LineTo(hDC,10,10);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,255));
SelectObject(hDC,hPen);
MoveToEx(hDC,10,10,NULL);
LineTo(hDC,100,100);
hPen=CreatePen(PS_SOLID,2,RGB(255,0,0));
SelectObject(hDC,hPen);
MoveToEx(hDC,100,10,NULL);
LineTo(hDC,10,100);
hBrush=(HBRUSH)GetStockObject(DKGRAY_BRUSH);//深灰色刷
SelectObject(hDC,hBrush);
Rectangle(hDC,150,100,200,150);
DeleteObject(hBrush);
DeleteObject(hPen);
EndPaint(hwnd,&PtStr);//结束绘图
return0;
caseWM_DESTROY:
PostQuitMessage(0);
default:
//缺省时采用系统消息缺省处理函数
returnDefWindowProc(hwnd,message,wParam,lParam);
}
return(0);
}
(2)总结在Windows程序中绘制图形的基本操作步骤;
(1)分别定义指向设备上下文、画刷、画笔的句柄,定义指向包含绘图信息的结构体变量。
(2)在处理绘图消息的时候首设置好映像模式,编写绘图程序时先选择画笔与画刷。
(3)在编写绘图程序。
(4)绘图程序写完后释放画刷画笔句柄,结束绘图程序。
(3)总结实验的心得体会,实验中遇到的困难以及解决的方法等。
实验刚开始,对于实验的基本操作不够熟悉。
尤其是在对画笔和画刷的初始化上没有足够的认识,导致浪费了一些时间。
经过一节课的摸索逐渐的熟悉了画刷和画笔的使用。
有了对画笔的使用基础,对于各种绘图函数都能灵活运用。
在绘制多边形时,对于其中要求的坐标表示的概念比较模糊,在同学的帮助下才知道需要先定义一个包含坐标的数组,然后在绘制图形时进行引用便行了。
实验四鼠标和键盘编程实验
一、实验目的
(1)掌握键盘和鼠标的消息传递机制;
(2)掌握在Windows程序中处理键盘和鼠标消息的方法;
(3)掌握在VisualC++的程序调试方法。
二、实验内容
请编写程序,要求如下:
(1)在屏幕上绘制一个矩形,并分成4个区域;
(2)在矩形内移动鼠标时,在4个区域中显示不同的光标,并在屏幕上打印光
标坐标;
(3)处理SHIFT和CTRL键消息,按下键时,显示一个消息框。
三、消息处理程序代码清单
#include//包含应用程序中所需的数据类型和数据结构的定义
#include
#include
LRESULTCALLBACKWndProc(HWND,UINT,WPARAM,LPARAM);//窗口函数说明
//---------------以下初始化窗口类----------------------
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInst,LPSTRlpszCmdLine,intnCmdShow)
{
HWNDhwnd;
MSGMsg;
WNDCLASSwndclass;
//LPCWSTRlpszClassName=_T("窗口");//窗口类名
//LPCWSTRlpszTitle=L"My_Windows";//窗口标题名
charlpszClassName[]="窗口";//窗口类名
charlpszTitle[]="My_Windows";//窗口标题名
//窗口类的定义
wndclass.style=0;//窗口类型为缺省类型
wndclass.lpfnWndProc=WndProc;//定义窗口处理函数
wndclass.cbClsExtra=0;//窗口类无扩展
wndclass.cbWndExtra=0;//窗口实例无扩展
wndclass.hInstance=hInstance;//当前实例句柄
wndclass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
//窗口的最小化图标为缺省图标
wndclass.hCursor=Load