资源描述:
《较复杂的计算器的实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、系统的实现4.1窗体设计利用MFCAppWinzard生成计算器应用程序框架具体步骤如下:(1)执行VC程序,选择File
2、New命令,弹出New对话框.单击Projects标签,转到Projects选项卡,选择MFCAppWizard(exe)选项,然后在Projectname文本框中输入Calculator。Lacation文本框是指项目的本地路径。(2)单击OK按钮,弹出MFCAppWinzard_Step1对话框。选中单选按钮,如图所示。(3)单击Next按钮,弹出MFCAppWinzard_Step2of4对话框,如图所示。(4)单击Next按
3、钮,弹出MFCAppWinzard_Step3of4对话框,如图所示。(5)单击Next按钮,弹出MFCAppWinzard_Step4of4对话框,如图所示。单击Finish按钮,创建框架。4.2编辑资源(1)编辑对话框及控件资源利用VisualC++提供的资源编辑器对对话框资源进行编辑。删除对话框中默认的OK和Cancel按钮。添加一个Edit控件,其控件ID为IDC_DSPEDIT。添加若干按钮控件,其ID如表4-1所示。表4-1按钮控件资源清单按钮名称按钮ID用途0BTN_0按键01BTN_1按键12BTN_2按键23BTN_3按键34BTN_4
4、按键45BTN_5按键56BTN_6按键67BTN_7按键78BTN_8按键89BTN_9按键9。BTN_10小数点=BTN_11求值+BTN_12加号-BTN_13减号*BTN_14乘号/BTN_15除号CEBTN_16清屏SqrtBTN_17开方1/xBTN_18倒数sinBTN_19正弦cosBTN_20余弦tanBTN_21正切x^2BTN_22平方x^3BTN_23立方x^yBTN_24以X为底的y次幂expBTN_25以e为底的幂lnBTN_26以e为底的对数logBTN_27对数-/+BTN_29正负号10^xBTN_3010的x次方n!B
5、TN_31N的阶层添加2个单选按钮,按钮资源清单如表4-2所示。表4-2单选按钮控件资源清单控件名设置IDDEGREEBTN_DEGREERADIANBTN_RAD添加4个静态框,将编辑控件,普通计算,高级计算分别分组。其效果如图4.1所示。图4.1编辑对话框资源(2)编辑菜单资源在VisualC++中的Workspace工具栏中,选中ResourceView选项卡。在其中的Menu项上右击,在弹出的快捷菜单中选择Insert命令,如图4.2所示。图4.2添加菜单资源将添加的菜单资源的ID更改为IDR_MENU。利用资源编辑器对菜单进行编辑,编辑后的菜单
6、如图4.3所示。图4.3编辑菜单资源4.3实现高级按钮控件类利用ClassWizard添加一个新类,如图4.4所示。图4.4添加CAdvButton类(1)添加成员变量和成员函数为实现高级按钮控件对鼠标的移动和单击作出相应的颜色变化。首先在CAdvButton的头文件中加入几种预定义颜色,其代码如下:#defineDesiableColorRGB(192,192,192)//灰色,按钮不可用#defineFocusColorRGB(255,0,0)//红色,按钮拥有焦点#defineSelectColorRGB(0,255,0)//绿色,按钮被按下#de
7、fineDefaultColorRGB(0,0,255)//蓝色,默认#defineTextColorRGB(128,128,128)//浅灰色,文本颜色接下来,添加成员变量:public:CRectm_ClientRect;//用来保存按钮的客户的矩形区域CRgnm_ClientRgn;//用来保存按钮的客户区域,非矩形UINTm_State;//按钮所处状态CPointm_Point;//当前鼠标位置BOOLm_IsTimerOn;//标识计时器是否已经打开利用ClassWizard添加消息映射和响应函数,如图4.5所示:图4.5添加响应函数再利用C
8、lassWizard覆盖父类中的两个关键的虚函数://{{AFX_VIRTUAL(CAdvButton)public:virtualvoidDrawItem(LPDRAWITEMSTRUCTlpDrawItemStruct);protected:virtualvoidPreSubclassWindow();//}}AFX_VIRTUAL其中对于所有的对于按钮的绘制工作都是在DrawItem函数中完成的。(2)添加创建按钮控件代码按钮的创建分两步完成。首先,调用构造函数对按钮对象进行初始化;其次,调用Create函数创建按钮。代码如附录1所示。(3)设置按
9、钮形状、外观、颜色、标题PreSubclassWindow函数在窗口被创建之前就