VC程序设计实验指导Word格式.docx
- 文档编号:22415511
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:28
- 大小:30.63KB
VC程序设计实验指导Word格式.docx
《VC程序设计实验指导Word格式.docx》由会员分享,可在线阅读,更多相关《VC程序设计实验指导Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
5.学会在VisualC++6.0中编译、调试、发布应用程序。
【实验性质】
验证性实验(学时数:
2H)
【实验要求】
1.在Windows下启动VisualC++6.0,创建工程文件。
2.编写一个简单的Windows应用程序,并在程序中创建句柄,学会使用句柄。
3.分析上面的程序,在程序中使用注释语句标识出Windows程序的基本构成部分,并在注释语句中注明各部分的作用。
4.在上面程序中添加消息处理函数,使用程序完成如下功能:
(1)定义一只红色的画笔,绘制一个等边五边形;
(2)用不同颜色的线条连接互不想念的两个点;
(3)用不同颜色的画笔填充用上述方法所形成的图形中的每一个区域。
【参考程序】
#include<
windows.h>
stdlib.h>
string.h>
math.h>
#definePi3.1415926
longWINAPIWndProc(HWNDhWnd,
UINTiMessage,
UINTwParam,
LONGlParam);
//消息处理函数声明.
BOOLInitWindowsClass(HINSTANCEhInstance);
//初始化窗口类声明
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow);
//初始化窗口声明.
HWNDhWndMain;
intWINAPIWinMain(HINSTANCEhInstance,
HINSTANCEhPrevInstance,
LPSTRlpCmdLine,
intnCmdShow)//主函数
{
MSGMessage;
if(!
InitWindowsClass(hInstance))//初始化窗口类.
returnFALSE;
InitWindows(hInstance,nCmdShow))//初始化窗口.
while(GetMessage(&
Message,0,0,0))
{
TranslateMessage(&
Message);
//消息循环.
DispatchMessage(&
}
returnMessage.wParam;
}
LONGlParam)//消息处理函数.
HDChDC;
//定义设备环境句柄.
HBRUSHhBrush;
//定义画刷句柄
HPENhPen;
//定义画笔句柄
PAINTSTRUCTPtStr;
//定义包含绘图信息的结构体变量
doubledfRadious0=200.0,dfRadious1;
//定义外部和内部正五边形外接圆半径.
POINTlpOuterPoints[5],lpInnerPoints[5];
//定义外,内正五边形点结构数组.
POINTlpTriangle[3];
//定义三角形点结构数组.
dfRadious1=dfRadious0*sin(0.1*Pi)/sin(126.0/180*Pi);
//根据外圆半径计算内园半径.
//计算内外正五边形的点坐标.
for(inti=0;
i<
5;
i++)
lpOuterPoints[i].x=(long)(dfRadious0*cos(i*72.0/180*Pi))+200;
lpOuterPoints[i].y=(long)(dfRadious0*sin(i*72.0/180*Pi))+200;
lpInnerPoints[i].x=(long)(dfRadious1*cos(i*72.0/180*Pi+36.0/180*Pi))+200;
lpInnerPoints[i].y=(long)(dfRadious1*sin(i*72.0/180*Pi+36.0/180*Pi))+200;
switch(iMessage)
caseWM_PAINT:
//处理绘图消息.
hDC=BeginPaint(hWnd,&
PtStr);
//得到设备环境句柄
SetMapMode(hDC,MM_ANISOTROPIC);
//设置映射模式.
SetWindowOrgEx(hDC,-100,-100,NULL);
//设置坐标原点.
hPen=CreatePen(PS_SOLID,1,RGB(255,0,0));
//创新红色画笔.
SelectObject(hDC,hPen);
//将画笔选入.
Polygon(hDC,lpOuterPoints,5);
//画正五边形.
//填充正五边形的不同区域.
for(i=0;
{
lpTriangle[0]=lpOuterPoints[i%5];
//生成图形中的三角形区域的坐标.
lpTriangle[1]=lpInnerPoints[i%5];
lpTriangle[2]=lpOuterPoints[(i+1)%5];
//创新新画刷.
hBrush=CreateSolidBrush(RGB(i*10,i*20,i*30));
SelectObject(hDC,hBrush);
//选入新画刷.
Polygon(hDC,lpTriangle,3);
//画三角形区域.
lpTriangle[2]=lpInnerPoints[(i+4)%5];
hBrush=CreateSolidBrush(RGB(i*40,i*30,i*20));
//创新画刷.
//选入画刷.
//画三角形区域.
}
hBrush=CreateSolidBrush(RGB(255,255,255));
//创新白画刷.
SelectObject(hDC,hBrush);
Polygon(hDC,lpInnerPoints,5);
//画中心的五边形.
//用不同种颜色的画笔来绘制五角星.
MoveToEx(hDC,lpOuterPoints[0].x,lpOuterPoints[0].y,NULL);
for(i=1;
=5;
hPen=CreatePen(PS_SOLID,1,RGB(0,i*51,0));
SelectObject(hDC,hPen);
LineTo(hDC,lpOuterPoints[(i+2)%5].x,lpOuterPoints[(i+2)%5].y);
hPen=(HPEN)(GetStockObject(PS_NULL));
DeleteObject(hPen);
//删除画笔.
DeleteObject(hBrush);
//删除画刷.
EndPaint(hWnd,&
//结束绘图.
return0;
caseWM_DESTROY:
//处理关闭窗口信息.
PostQuitMessage(0);
//向应用程序发送WM_QUIT消息.
default:
return(DefWindowProc(hWnd,iMessage,wParam,lParam));
BOOLInitWindows(HINSTANCEhInstance,intnCmdShow)//初始化
HWNDhWnd;
//定义窗口句柄.
hWnd=CreateWindow("
Polygon"
//窗口类名.
"
五边形"
//窗口实例标题.
WS_OVERLAPPEDWINDOW,//窗口风格.带边框,标题栏,系统菜单和最大和最小按钮.
CW_USEDEFAULT,//窗口左上角坐标.
0,//窗口左上角坐标.
CW_USEDEFAULT,//窗口宽度
0,//窗口高度
NULL,//无父窗口.
NULL,//无主菜单.
hInstance,//创建此窗口的应用程序的当前句柄.
NULL);
//指向一个传递给窗口的参数值从指针.
//不使用该值.
hWnd)//如果窗口创建失败,返回false.
hWndMain=hWnd;
//将窗口句柄传递给全局变量.
ShowWindow(hWnd,nCmdShow);
//显示窗口.
UpdateWindow(hWnd);
//更新并绘制用户区.
returnTRUE;
BOOLInitWindowsClass(HINSTANCEhInstance)//初始化窗口类.
WNDCLASSWndClass;
//定义窗口类.
WndClass.cbClsExtra=0;
//窗口类无扩展.
WndClass.cbWndExtra=0;
//窗口实例无扩展.
WndClass.hbrBackground=(HBRUSH)(GetStockObject(WHITE_BRUSH));
//窗口背景为白色.
WndClass.hCursor=LoadCursor(NULL,IDC_ARROW);
//窗口采用箭头光标.
WndClass.hIcon=LoadIcon(NULL,IDI_APPLICATION);
//窗口的最小化图标为缺省图标.
WndClass.hInstance=hInstance;
//当前实例句柄.
WndClass.lpfnWndProc=WndProc;
//窗口处理函数.
WndClass.lpszClassName="
;
//窗口类名.
WndClass.lpszMenuName=NULL;
//无菜单
WndClass.style=0;
//窗口类型为缺省类型.
returnRegisterClass(&
WndClass);
//返回注册窗口的值.
实验二简单界面设计
使用MFC应用程序向导,生成Windows基本对话框。
通过对Windows基本对话框的学习和使用,了解MFC的类库结构,掌握CDialog的基本组成,了解对话框程序的工作过程,学习使用常用的Windows控件,学会编写消息处理函数。
使用MFC应用程序向导编写一个基本对话框程序。
在程序综合运用静态文本框、编辑框、按钮控件,在程序练习使用文件对话框、颜色选择对话框、字体对话框、打印对话框等常用类。
【实验内容】
编写一个简单的计算器程序,要求有两个操作数,实现加、减、乘、除。
参考界面如下图:
//对话框定义(部分)
//CMy11_4Dlgdialog
classCMy11_4Dlg:
publicCDialog
//Construction
public:
CMy11_4Dlg(CWnd*pParent=NULL);
//standardconstructor
//DialogData
//{{AFX_DATA(CMy11_4Dlg)
enum{IDD=IDD_MY11_4_DIALOG};
CEditm_Item1_Edit;
CEditm_Item2_Edit;
CStringm_sResult_Edit;
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CMy11_4Dlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
HICONm_hIcon;
//Generatedmessagemapfunctions
//{{AFX_MSG(CMy11_4Dlg)
virtualBOOLOnInitDialog();
afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam);
afx_msgvoidOnPaint();
afx_msgHCURSOROnQueryDragIcon();
afx_msgvoidOnDevideButton();
afx_msgvoidOnDifferenceButton();
afx_msgvoidOnExitButton();
afx_msgvoidOnMultipleButton();
afx_msgvoidOnAddButton();
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
//对话框实现(部分)
#include"
stdafx.h"
11_4.h"
11_4Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
CAboutDlg();
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//{{AFX_VIRTUAL(CAboutDlg)
//{{AFX_MSG(CAboutDlg)
CAboutDlg:
:
CAboutDlg():
CDialog(CAboutDlg:
IDD)
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
voidCAboutDlg:
DoDataExchange(CDataExchange*pDX)
CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//Nomessagehandlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
CMy11_4Dlg:
CMy11_4Dlg(CWnd*pParent/*=NULL*/)
:
CDialog(CMy11_4Dlg:
IDD,pParent)
//{{AFX_DATA_INIT(CMy11_4Dlg)
m_sResult_Edit=_T("
"
);
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->
LoadIcon(IDR_MAINFRAME);
voidCMy11_4Dlg:
//{{AFX_DATA_MAP(CMy11_4Dlg)
DDX_Control(pDX,IDC_ITEM1_EDIT,m_Item1_Edit);
DDX_Control(pDX,IDC_ITEM2_EDIT,m_Item2_Edit);
DDX_Text(pDX,IDC_RESULT_EDIT,m_sResult_Edit);
BEGIN_MESSAGE_MAP(CMy11_4Dlg,CDialog)
//{{AFX_MSG_MAP(CMy11_4Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_DEVIDE_BUTTON,OnDevideButton)
ON_BN_CLICKED(IDC_DIFFERENCE_BUTTON,OnDifferenceButton)
ON_BN_CLICKED(IDC_EXIT_BUTTON,OnExitButton)
ON_BN_CLICKED(IDC_MULTIPLE_BUTTON,OnMultipleButton)
ON_BN_CLICKED(IDC_ADD_BUTTON,OnAddButton)
//CMy11_4Dlgmessagehandlers
BOOLCMy11_4Dlg:
OnInitDialog()
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
//TODO:
Addextrainitializationhere
//returnTRUEunlessyousetthefocustoacontrol
void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- VC 程序设计 实验 指导