- 1
- 0
- 约1.68千字
- 约 23页
- 2021-01-11 发布于广东
- 举报
;2;3;4;5;6;7; ; ;
利用ClassWizard 添加消息映射和响应函数:;
通过上面操作,按钮已经具有对鼠标不同的位置和动作改变不同的颜色。并且,按钮的客户区域已经是一个椭 圆,而不再是一个矩形。正是下面的代码将按钮的客户区域设定为椭圆形:
GetClientRect(m_ClientRect); //通到窗口的有效矩形区域
m_ClientRgn.DeleteObject(); //删除区域对象 m_ClientRgn.CreateEllipticRgnIndirect(m_ClientRect); //在矩形区域内创建椭圆
//设置窗口的有效区域为椭圆
SetWindowRgn(m_ClientRgn,FALSE);
至此,一个完整的高级按钮类全部完成。其效果如图 4-7 所示。; ;
CPaintDC dc(this); // device context for painting
OnDraw();
在OnDraw 函数中,在编辑控件客户区域内绘制文本。首先,得到编辑控件客户区的矩形域;其次,得到编辑 控件客户区的设备环境变量;接着,用指定的画刷填充客户区,并且用指定的颜色绘制显示文本。效果如图 4-11 所
示,其代码如附录 2 所示。; ;
在CCalculatorDlg 类的声明中,已经为编辑框、静态框及每一个按钮声明了相应类型的对象与之对应。但这些控
件与对象的关联工作是在DoDataExchange 函数中DDX_Control 宏来完成的。; ; ;
点键没有被单击过,而且当前初始操作数字符串不为空,则将小数点追加到初始操作数末尾,并且修改小数点标识
m_IsCheckPoint 为TRUE。实现代码如下:
if (!m_IsCheckPoint m_StrBegin != ) //如果小数点没有按下,且字符不为空
{
m_StrBegin = m_StrBegin+.;
m_DspEdit.OnDisplay(m_StrBegin); //显示文本 m_IsCheckPoint = true; //改变标识
}
当清除键 CE 被单击时,则对所有的成员变量进行初始化。清除小数点标识,将保存初始操作数和结果操作数的 字符串清空,将保存初始操作数和结果操作数的浮点数清 0,将当前操作符清 0。实现代码如下:
m_IsCheckPoint = false; //消除小数点按下标记
m_StrBegin = ; m_begin = 0.0; //清 0
m_end = 0.0; //清 0
m_bit = 0; //当前操作符为无效操作
当任何一个运算符键被单击时,首先根据当前运算符计算运算结果,再修改记录当前运算符的变量的值。以加 号键被按下为例,实现代码如下:
//以加号为例,其余的操作符也采用类似操作 Result(); //计算运算结果
m_bit = 1; //设置当前运算类型;1 代表加法运算
计算器的核心运算函数——Result。在 Result 中,首先将记录当前操作数的字符串中保存的字符串转化为浮点数; 其次根据当前操作符的类型,选择适当的运算操作;再将记录结果操作数的浮点变量中的值转化为字符串,并显示 在结果编辑框中。Result 函数实现代码如附录 3 所示。
5 程序结果的演示
测试的研究与选择
测试过程中要判断测试是否成功,要分析程序界面的变化和计算数据的结果是否正确以及各功能键是否能正常 使用。
测试环境
测试环境如下:
测试系统: Windows XP
测试工具: Visual Studio C++ 6.0
实例测试结果
首先,在运行界面测试简单运算是否能正常运算,输入“34+87=”见结果图 5-1 所示,观察计算结果是否正确 属实;
其次,展开计算器,选中“度数”输入“30”单击“sin”观察结果,见图 5-2 所示;{;DT_VCENTER|DT_RIGHT);;数;case 18:
原创力文档

文档评论(0)