在win32工程下做计算器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告
题目:在win32 application工程下计算器的设计与实现
小组成员:陈李元41212204
余斌41212202
目录1概述
1.1课程设计的内容
2系统需求分析
2.1系统目标
2.2重要功能
2.3开发环境
3设计过程
3.1主函数WinMain设计过程3.2窗口过程WndProc
4小结
5参考文献
附录1:程序代码
附录2:程序运行部分截图
1概述
1.1课程设计的内容
这次c++课程设计我们组选的是设计一个带界面的计算器,不是用MFC,而是在win32 application工程下做的带界面的计算器。它属于windows程序设计范畴。
我们主要是把功夫花在做界面上了,这个计算器本身所具有的功能很少,它只支持少量的算术运算。
2系统需求分析
2.1系统目标
我们在日常生活和学习中,经常会遇到一些关于数值的运算。所以我们组就着手开始做一个计算器方便我们的学习和生活。这个计算器它具有加法,减法,乘法,除法四种基本的算术运算。另外还具有计算N阶阶乘的功能,此外还具有求一个弧度的正弦(余弦和它功能类似要想求余弦事先做一些弧度的转化即可)。
该计算器用例图如下:
类图如下:
2.2重要功能
具备四种最基本的算术运算。另外还具有阶乘,求正弦的功能。
2.3开发环境
本程序是在visual c++ 6.0编译,链接,运行。它是在win32 application工程下所创建。
3设计过程
3.1主函数WinMain设计过程
首先在界面设计中我们要用到大量的windows API。这些函数都是在windows.h标准库中。
在windows程序设计中,它必须要包含一个程序入口主函数WinMain和一个过程函数WndProc。
WinMain总是以下面的形式出现。
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) WinMain第一个参数一般叫做“实例句柄”,在windows 程序中句柄就是一个数值,程序里面用他来标识一些东西。
第二个参数总是定义为NULL(定义为0)
第三个参数是用来运行程序的命令行。有些windows程序在启动时用它来把文件装入内存。
第四个参数用来指明程序最初如何显示。
创建一个窗口的步骤:
(1)注册窗口类
(2)创建窗口
(3)在桌面显示窗口
(4)更新窗口客户区
(5)进入无限的消息获取和处理的循环。首先是获取消息,如果有消息到达,则将消息分派到回调处理函数,如果消息是WM_QUIT,则GetMessage函数返回FALSE,整个消息循环结束。其中消息具体的处理过程是在WndProc 函数中
1.注册:Windows程序设计中有许许多多的结构体。其中
WNDCLASS是用于注册窗口类的。
typedef struct _WNDCLASS {
UINT style;// 窗口类型
WNDPROC lpfnWndProc;//窗口处理函数
int cbClsExtra;//窗口扩展
int cbWndExtra;//窗口实例扩展
HINSTANCE hInstance;//实例句柄
HICON hIcon;//窗口的最小化图标
HCURSOR hCursor;//窗口鼠标光标
HBRUSH hbrBackground;//窗口背景色
LPCTSTR lpszMenuName;//窗口菜单
LPCTSTR lpszClassName;// 窗口类名
} WNDCLASS, *LPWNDCLASS;
它定义了窗口的属性,风格等等,如本程序中附图:
3创建窗口
创建窗口,用注册窗口类的类名调用CreateWindow函数HWND CreateWindow(LPCTSTRlpClassName,//指向已注册窗口类名称的指针
LPCTSTRlpWindowName,//指向窗口名称的指针
DWORDdwStyle,//窗口的风格
intx,//窗口位置的X坐标
inty,//窗口位置的Y坐标
intnWidth,//窗口的宽度
intnHeight,//窗口的高度
HWNDhWndParent,//父窗口的句柄
HMENUhMenu,//窗口菜单句柄
HINSTANCEhInstance,//应用程序使用句柄
LPVOIDlpParam//应用程序数据区句柄 );
在本程序中代码如图:
3显示:
调用显示函数ShowWindow (hwnd, iCmdShow) ;
4更新窗口客户区:
调用UpdateWindow (hwnd) ;函数
5消息循环:
在这里又要涉及一个结构体MSG定义如下:
typedef struct tagMSG {
HWND hwnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
DWORD time;
POINT pt;
} MSG;
调用TranslateMessage (&msg)函数把键盘输入翻译成为可传递的消息。
调用DispatchMessage (&msg) 分发一个消息到对应窗口的