程序设计基础实验大作业一

EasyX函数

putimage

函数putimage()将一个先前保存在内存中的图像输出到屏幕上。

函数原型为void putimage(int left,int top,void *buf,int ops);

image

solidrectangle

这个函数用于画无边框的填充矩形。

函数原型为void solidrectangle(int left,int top,int right,int bottom);,参数分别为左部,顶部,右部,底部的坐标

setfillcolor

这个函数用于设置当前设备填充颜色。

函数原型为void setfillcolor(COLORREF color);

line

此函数用于绘制直线。

函数原型为void line( int x1, int y1, int x2, int y2)

参数:x1,直线起始点的x坐标;y2,直线起始点的y坐标;x2,直线终点的x坐标;y2,直线终点的y坐标;

GetHWnd

这个函数用于获取绘图窗口句柄。

函数原型为HWND GetHWnd();,没有参数,返回值为获取绘图窗口的句柄

DrawText

该函数在指定的矩形里写入格式化文本,根据指定的方法对文本格式化(扩展的制表符,字符对齐、折行等)。

函数原型为intDrawText(HDC hdc, LPCTSTR lpString, int nCount, LPRECT lpRect, UINT uFormat);

参数:
hdc:设备环境句柄。
lpString:指向将被写入的字符串的指针,如果参数nCount是-1,则字符串必须是以\0结束的。如果uFormat包含DT_MODIFYSTRING,则函数可为此字符串增加4个字符,存放字符串的缓冲区必须足够大,能容纳附加的字符。
nCount:指向字符串中的字符数。如果nCount为-1,则lpString指向的字符串被认为是以\0结束的,DrawText会自动计算字符数。
lpRect:指向结构RECT的指针,其中包含正文将被置于其中的矩形的信息(按逻辑坐标)。
uFormat:指定格式化正文的方法。它可以下列值的任意组合,各值描述如下:

image

image

initgraph

initgraph函数是用来初始化绘图窗口的

定义声明如下

HWND initgraph(
	int width,
	int height,
	int flag = NULL
);

参数的意义:

widthheight分别表示绘图窗口的宽度和高度;flag表示绘图窗口的样式,默认为NULL,也可以为以下值

该函数有返回值,返回新建窗口的句柄

SetWindowText

定义声明如下

BOOL SetWindowTextA(
  [in]           HWND   hWnd,
  [in, optional] LPCSTR lpString
);

第一个参数是获得句柄,第二个参数是文本字符串

比如代码中SetWindowText(GetHWnd(), _T("计算器"));GetHWnd()就是获得窗口的句柄,_T("计算器")就是文本字符串,其中_T是用来进行unicode/ansi版本匹配的

GetTickCount

GetTickCount函数返回从操作系统启动到现在所经过的毫秒数,它的返回值是DWORD

MouseHit与GetMouseMsg

首先需要定义一个MOUSEMSG变量,然后可以使用MouseHit函数判断是否有鼠标信息(一般使用嵌套while循环多次判断),然后GetMouseMsg,再根据鼠标信息执行相应操作

鼠标信息有:

WM_LBUTTONDOWN:鼠标左键按下消息

WM_LBUTTONUP:鼠标左键弹起消息参数和按下一样

当用户在窗口的客户区域中按住鼠标左键时,会发布WM_LBUTTONDOWN消息。如果未捕获鼠标,则该消息会发布到光标下方的窗口中。否则,消息将发布到已捕获鼠标的窗口

BeginBatchDraw

这个函数用于开始批量绘图。执行后,任何绘图操作都将暂时不输出到屏幕上,直到执行FlushBatchDrawEndBatchDraw才将之前的绘图输出

setbkmode

SetBkMode是背景模式,参数为

image

对透明的理解:在窗体或控件输出的字符串或图形是有背景色的。而窗体或控件也是有背景色的。这两种背景色一般是不同的, 这样输出图形或字符串时,两种背景(窗体或控件的背景色、符串或图形的背景色)重叠在一起了,影响美观,为了不让这两种背景重叠,可以设置背景模式为TRANSPARENT(透明的),即让输出的字符串或图形的背景色不可见。可以这样理解:把输出的字符串或图形的背景色看成是一物体,窗体或控件看成另一物体,字符串或图形在窗体或控件前面挡住窗体或控件了(因为输出 的字符串或图形是画在窗体或控件上的,所以可以这么类比),但是透过字符串或图形能看到窗体或控件。即字符串或图形的背 景色所代表的物体是透明的。

BeginBatchDraw与EndBatchDraw

运行BeginBatchDraw后,所有的绘图都不再显示在屏幕上,而是在内存中进行
直到碰到EndBatchDraw,之前所有在内存中绘图的成品将一并展示在屏幕中

setfillstyle

函数setfillstyle()为各种图形函数设置填充图样和颜色,调用方式为void setfillstyle(int pattern,int color);

image

settextstyle

设置图形文本当前字体、文本显示方向(水平显示或垂直显示)以及字符大小,此函数调用方式为void settextstyle(int font,int direction,int charsize);font为文本字体参数,direction为文本显示方向,charsize为字符大小参数

image

image

outtextxy

该函数在屏幕上的指定点\((x,y)\)上显示文本或字符串。

函数原型为void outtextxy(int x,int y,const char *str),分别为坐标与要输出的字符串

settextcolor

这个函数用于设置当前文字颜色

setlinecolor

这个函数用于设置当前画线颜色

InputBox

显示一个输入框,并提示用户在文本框中输入文本、数字或选中某个单元格区域,当按下确定按钮后返回包含文本框内容的字符串。

InputBox(Prompt[,Title][,Default][,Xpos][,Ypos][,Helpfile,Context])

参数说明:

(1) Prompt,必需的参数,作为输入框中提示信息出现的字符串,其最大长度约为1024个字符,由所使用字符的宽度决定。如果Prompt包含多个行,则可在各行之间用回车符(Chr(13))、换行符(Chr(10))或回车换行符的组合(Chr(13)&Chr(10))来分隔。

(2) Title,可选的参数,作为输入框标题栏中的字符串。若省略该参数,则在标题栏中显示应用程序名称。

(3) Default,可选的参数,作为输入框中默认的字符串,在没有其它输入时作为缺省值。若省略该参数,则文本框为空。

(4) Xpos,可选的参数,为数值,成对出现,指定输入框的左边与屏幕左边的水平距离。若省略该参数,则输入框在水平方向居中。

(5) Ypos,可选的参数,为数值,成对出现,指定输入框的上边与屏幕上边的距离。若省略该参数,则输入框在屏幕垂直方向距下边约三分之一的位置。

(6) Helpfile,可选的参数,为字符串,表示帮助文件,用该文件为输入框提供上下文相关的帮助。若有Helpfile,则必须有Context。

(7) Context,可选的参数,为数值,帮助文件中某帮助主题的上下文编号。若有Context,则必须有Helpfile。

SetWorkingImage

这个函数用于设定当前的绘图设备。

void SetWorkingImage(IMAGE* pImg = NULL);

将要绘图的设备的句柄放入函数参数即可

核心函数

全局的核心函数(三个模块都涉及的)

执行计算器功能函数void updatewithinput_()

读取鼠标信息,修改变量的值并改变结果然后输出到计算器上

图形化界面函数void showscreen_()

构造计算器的图形化界面

standard

中缀表达式转后缀表达式函数void change()

通过栈这一数据结构将人类习惯的中缀表达式转化为计算机习惯的后缀表达式

计算后缀表达式函数void calculate()

通过栈这一数据结构计算后缀表达式的值

入栈函数void push(T c)

形参T c是即将进入栈顶的元素

出栈函数void pop()

将栈顶元素弹出

判断栈空函数bool empty()

判断栈是否为空,返回值为\(1\)表示空,为\(0\)表示非空

取出栈顶函数T top()

取出栈顶的元素,返回栈顶元素

清空栈函数void clearstack()

将栈清空

science

运算函数void judge(int &n, int &m, int k = 0)

n表示上一次运算的方式,m表示这一次运算的方式

bignumber

清空函数void memsenumber()

将数组全部清空以便进行运算

小数部分相减函数MyChar *numbersubx(MyChar *ss, MyChar *ss1)

这一个函数用来在小数部分将两个数相减,其中*ss是被减数,*ss1是减数;返回结果的指针

整数部分相减函数MyChar *numbersub(MyChar *ss, MyChar *ss1)

这一个函数用来在整数部分将两个数相减,其中*ss是被减数,*ss1是减数;返回结果的指针

整数部分相加函数MyChar *numberadd(MyChar *ss, MyChar *ss1)

这一个函数用来在整数部分将两个数相加,其中*ss*ss1是两个加数;返回结果的指针

小数部分相加函数MyChar *numberaddx(MyChar *ss, MyChar *ss1)

这一个函数用来在小数部分将两个数相加,其中*ss*ss1是两个加数;返回结果的指针

高精度加法函数void bignumberadd()

这一个函数用来进行高精度加法,其中的辅助函数是上述提到的四个函数。首先将整数部分和小数部分各自分开,然后进行加法(其中正数加负数可以等价于正数减去负数的绝对值,所以要用到MyChar *numbersubxMyChar *numbersub两个函数)

高精度减法函数void bignumbersubtract()

这一个函数用来进行高精度减法

高精度乘法函数void bignumbermuit()

这一个函数用来进行高精度乘法

高精度除法函数void bignumberdiv()

这一个函数用来进行高精度除法

存在的问题

standard

乘除法无法正常运行

左括号无法输入

删除键无法删除上面一行

science

无法显示符号

image

直接点击cos会出现1

image

posted @ 2024-03-23 18:16  最爱丁珰  阅读(5)  评论(0编辑  收藏  举报