在win32工程下做计算器.doc

上传人:夏** 文档编号:557771888 上传时间:2023-09-08 格式:DOC 页数:29 大小:188.01KB
返回 下载 相关 举报
在win32工程下做计算器.doc_第1页
第1页 / 共29页
在win32工程下做计算器.doc_第2页
第2页 / 共29页
在win32工程下做计算器.doc_第3页
第3页 / 共29页
在win32工程下做计算器.doc_第4页
第4页 / 共29页
在win32工程下做计算器.doc_第5页
第5页 / 共29页
点击查看更多>>
资源描述

《在win32工程下做计算器.doc》由会员分享,可在线阅读,更多相关《在win32工程下做计算器.doc(29页珍藏版)》请在金锄头文库上搜索。

1、 课程设计报告 题目:在win32 application工程下计算器的设计与实现 小组成员: 陈李元 41212204 余 斌 41212202目录1概述1.1课程设计的内容2系统需求分析2.1系统目标2.2重要功能2.3开发环境3设计过程3.1主函数WinMain设计过程3.2窗口过程WndProc4小结5参考文献附录1:程序代码附录2:程序运行部分截图1概述1.1课程设计的内容这次c+课程设计我们组选的是设计一个带界面的计算器,不是用MFC,而是在win32 application工程下做的带界面的计算器。它属于windows程序设计范畴。我们主要是把功夫花在做界面上了,这个计算器本身所

2、具有的功能很少,它只支持少量的算术运算。2系统需求分析2.1系统目标我们在日常生活和学习中,经常会遇到一些关于数值的运算。所以我们组就着手开始做一个计算器方便我们的学习和生活。这个计算器它具有加法,减法,乘法,除法四种基本的算术运算。另外还具有计算N阶阶乘的功能,此外还具有求一个弧度的正弦(余弦和它功能类似要想求余弦事先做一些弧度的转化即可)。该计算器用例图如下:类图如下:2.2重要功能具备四种最基本的算术运算。另外还具有阶乘,求正弦的功能。2.3开发环境本程序是在visual c+ 6.0编译,链接,运行。它是在win32 application工程下所创建。3设计过程3.1主函数WinMa

3、in设计过程首先在界面设计中我们要用到大量的windows API。这些函数都是在windows.h标准库中。在windows程序设计中,它必须要包含一个程序入口主函数WinMain和一个过程函数WndProc。WinMain总是以下面的形式出现。int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShow) WinMain第一个参数一般叫做“实例句柄”,在windows程序中句柄就是一个数值,程序里面用他来标识一些东西。 第二个参数总是定义为NULL(定义为0) 第

4、三个参数是用来运行程序的命令行。有些windows程序在启动时用它来把文件装入内存。 第四个参数用来指明程序最初如何显示。创建一个窗口的步骤:(1)注册窗口类(2)创建窗口(3)在桌面显示窗口(4)更新窗口客户区(5)进入无限的消息获取和处理的循环。首先是获取消息,如果有消息到达,则将消息分派到回调处理函数,如果消息是WM_QUIT,则GetMessage函数返回FALSE,整个消息循环结束。其中消息具体的处理过程是在WndProc函数中1.注册:Windows程序设计中有许许多多的结构体。其中WNDCLASS是用于注册窗口类的。typedef struct _WNDCLASS UINT st

5、yle;/ 窗口类型WNDPROC lpfnWndProc;/窗口处理函数int cbClsExtra;/窗口扩展int cbWndExtra;/窗口实例扩展HINSTANCE hInstance;/实例句柄HICON hIcon;/窗口的最小化图标HCURSOR hCursor;/窗口鼠标光标HBRUSH hbrBackground;/窗口背景色LPCTSTR lpszMenuName;/窗口菜单LPCTSTR lpszClassName;/ 窗口类名 WNDCLASS, *LPWNDCLASS;它定义了窗口的属性,风格等等,如本程序中附图:3创建窗口 创建窗口,用注册窗口类的类名调用Cre

6、ateWindow函数HWNDCreateWindow(LPCTSTRlpClassName,/指向已注册窗口类名称的指针 LPCTSTRlpWindowName,/指向窗口名称的指针 DWORDdwStyle,/窗口的风格 intx,/窗口位置的X坐标 inty,/窗口位置的Y坐标 intnWidth,/窗口的宽度 intnHeight,/窗口的高度 HWNDhWndParent,/父窗口的句柄 HMENUhMenu,/窗口菜单句柄 HINSTANCEhInstance,/应用程序使用句柄 LPVOIDlpParam/应用程序数据区句柄);在本程序中代码如图:3显示:调用显示函数 ShowW

7、indow (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) 分发一个消息到对应窗口的窗口函数。3.2窗口过程WndProc:窗口过程总是按照如

8、下方式来定义:LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)程序的功能就是在这里面实现。在这里面调用CreateWindow函数来实现按钮的创建例如下图:这就是创建了一个按钮。上面代码是创建了一个文本框按钮,用来显示输进去的字符以及输出结果。重复上面的过程便得一个计算器界面,如下图: 接下来要做的就是响应这些按钮并实现算术运算。在windows中要做的是为每个按钮设置一个ID号(在创建时已经设置),这就使得每个按钮都区别开了。详情请见代码。switch(LOWORD(wParam)

9、语句就是响应每个按钮在用case语句分别来响应每个按钮以及所实现的功能。例如 case ID_BUTTON2: lstrcat(szBuffer, 3); SetWindowText(hwndEdit,szBuffer); return 0; 该语句的功能是响应数字3按钮,并将字符3显示到文本框中。在这里要用到两个函数lstrcat()和SetWindowText()函数。 首先我们要定义一个缓冲区static TCHAR szBuffer 1024 = 0;并初始化为0.用来暂时存放响应按钮并输出到文本框里的字符串。接下来调用lstrcat()函数将字符存放到缓冲区szBuffer里面。然后

10、调用SetWindowText()函数将缓冲区里面的字符串输出到文本框里。(这是在做计算器程序的最重要的一个过程)另外一个很重要的操作就是全在响应等于号按钮里面完成的。程序代码附图:大概阐述一下等号里面的过程。在这里面先将文本框里的字符串用GetWindowText()函数提取出来。并用GetWindowTextLength()函数计算出字符串的长度。然后再把字符串复制到另一数组String中,随后用memset()函数将缓冲区szBuffer清零。 接下来就是对String的处理(String里面存放的是字符串而不是数值和运算符)。用isdigit()函数找出运算符的位置。接下来就是调用ss

11、canf()函数。该函数的原型 :定义函数 int sscanf (const char *str,const char * format,.);函数说明 sscanf()会将参数str的字符串根据参数format字符串来转换并格式化数据。格式转换形式请参考scanf()。转换后的结果存于对应的参数内。返回值 成功则返回参数数目,失败则返回-1,错误原因存于errno中。 返回0表示失败 否则,表示正确格式化数据的个数 例如:sscanf(str,%d%d%s, &i,&i2, &s); 如果三个变成都读入成功会返回3。 将运算符前后转化成数值厚分别存放在FirstNumber,NextNum

12、ber变量中。 并对这两个变量实行相对应的四则运算并把结果存放在ResultNumber变量中。调用sprintf()函数将实型变量转化为字符串变量并存放到StringResult里面中。 然后在调用SetWindowText()函数将StringResult里面里面的字符串输出到文本框中。上面只是程序中一些很重要的东西,还有很多就不具体说明,许多函数的参数也是很复杂在这里就没一一写上,你想知道可以百度。4小结Windows程序设计对我们来说是新知识,刚开始什么都不懂,就去图书馆借了两本书啃,不懂得就上网搜找答案。那段时间几乎就是天天在弄这东西因为是新知识什么都不懂。过程真的很煎熬,但做完了就

13、觉得收获了很多。知道了很多东西了解了很多东西。5参考文献 Windows程序设计第五版 珍藏版 Charles Petzold 著 方敏 张胜 梁路平 赵勇等译 windows程序设计第二版 王艳平 张铮编著附录1:程序代码#include #include #include #include #include #include #define IDC_EDITTEXT 1000#define ID_BUTTON0 100#define ID_BUTTON1 101#define ID_BUTTON2 102#define ID_BUTTON3 103#define ID_BUTTON4 104#define ID_BUTTON5 105#define ID_BUTTON6 106#define ID_BUTTON7 107#define ID_BUTTON8 108#define ID_BUTTON9 109

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号