在win32工程下做计算器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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) 分发一个消息到对应窗口的

相关文档
最新文档