MFC计算器课程设计报告Word格式.docx
- 文档编号:14079116
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:28
- 大小:185.57KB
MFC计算器课程设计报告Word格式.docx
《MFC计算器课程设计报告Word格式.docx》由会员分享,可在线阅读,更多相关《MFC计算器课程设计报告Word格式.docx(28页珍藏版)》请在冰豆网上搜索。
IDC_STATIC3
系统当前时间
3)修改每个button的属性
IDC_BUTTON1
等于(=)
IDC_BUTTON2
全清(C)
IDC_BUTTON3
清除(A)
结果如下图:
4)修改每个button的处理机制
在类向导Classwizard窗口中进行,如下图:
其他button按钮的修改类似
5)修改每个edit的类型和名称
在类向导Classwizard窗口中进行:
单击AddVariable按钮,在如下窗口中进行修改
其他edit的修改类似
最终结果如下:
注:
主要使用到Layout菜单中的Align功能对各个按钮进行对齐,使界面更加整洁。
拖出的控件有上面的一个Edit控件用于显示数字,Button控件用于处理鼠标的消息。
6)系统菜单的添加
在Menu的IDR_MENU1中添加系统菜单:
同理在“帮助”菜单中添加“关于”。
二.设计步骤
1.添加头文件
将Calculate.cpp(见附录)改为Calculate.h将其添加到计算器Dlg.cpp:
implementationfile中,如下:
#include"
Calculate.h"
。
2.成员函数及其释义:
voidCAboutDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialog:
DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg,CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
//CMyDlgdialog
CMyDlg:
CMyDlg(CWnd*pParent/*=NULL*/)
:
CDialog(CMyDlg:
IDD,pParent)
//{{AFX_DATA_INIT(CMyDlg)
//NOTE:
theClassWizardwilladdmemberinitializationhere
//}}AFX_DATA_INIT
//NotethatLoadIcondoesnotrequireasubsequentDestroyIconinWin32
m_hIcon=AfxGetApp()->
LoadIcon(IDR_MAINFRAME);
voidCMyDlg:
//{{AFX_DATA_MAP(CMyDlg)
DDX_Control(pDX,IDC_EDIT3,m_time);
DDX_Control(pDX,IDC_EDIT2,m_result);
DDX_Control(pDX,IDC_EDIT1,m_input);
BEGIN_MESSAGE_MAP(CMyDlg,CDialog)
//{{AFX_MSG_MAP(CMyDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1,OnButton1)
ON_BN_CLICKED(IDC_BUTTON2,OnButton2)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON3,OnButton3)
ON_COMMAND(ID_ABOUT,OnAbout)
ON_COMMAND(ID_QUIT,OnQuit)
////////////////////////////////////////////////////////////////////////////
//CMyDlgmessagehandlers
3.OnButton1()按钮的处理函数
双击“等于(=)”按钮,添加如下代码:
OnButton1()
//TODO:
Addyourcontrolnotificationhandlercodehere
CStringstr;
char*ch;
m_input.GetWindowText(str);
ch=(LPSTR)(LPCTSTR)str;
charch2[50];
strcpy(ch2,ch);
Cala(ch2);
if(!
a.OK)
{m_result.SetWindowText("
表达式不合法!
"
);
//表达式不合法,判别出来并给出相应的错误提示
}
else
{if(a.Sign)
{m_result.SetWindowText("
除数为零!
//表达式不合法,可以判别出来并给出相应的错误提示
}
else
{str.Format("
%lf"
a.GetV());
m_result.SetWindowText(str);
以OnButton1()作为求值处理函数,函数的功能是单击等于(=)按钮,运算结果显示在IDC_EDIT2中
4.OnButton2()按钮的处理函数
双击“清除(C)”按钮,添加如下代码:
OnButton2()
m_result.SetWindowText("
0"
m_input.SetWindowText("
m_input.SetFocus();
}
//函数的功能是把上次输入的表达式清空
5.OnButton3()按钮的处理函数
双击“全清(A)”按钮,添加如下代码:
OnButton3()
//函数的功能是把上次输入的表达式和运算结果都清除
6.OnTimer(UINTnIDEvent)处理函数
CWnd:
SetTimer(1,500,NULL);
//设置时间每隔500ms更新一次。
OnTimer(UINTnIDEvent)
Addyourmessagehandlercodehereand/orcalldefault
CStringch[]={"
日"
"
一"
二"
三"
四"
五"
六"
};
SYSTEMTIMEst;
GetLocalTime(&
st);
CStringstr_temp;
str_temp.Format("
%u/%u/%u星期"
+ch[st.wDayOfWeek]+"
%u:
%u:
%u\n"
st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
m_time.SetWindowText(str_temp);
OnTimer(nIDEvent);
}//函数的功能是把运算结果显示在IDC_EDIT3中
7.OnAbout()处理函数
OnAbout()
Addyourcommandhandlercodehere
CAboutDlgabout;
about.DoModal();
//关于帮助和版权信息
8.OnQuit()处理函数
OnQuit()
OnOK();
//退出主程序菜单
9.全部代码如下:
//计算器Dlg.cpp:
implementationfile
//
stdafx.h"
计算器.h"
计算器Dlg.h"
#ifdef_DEBUG
#definenewDEBUG_NEW
#undefTHIS_FILE
staticcharTHIS_FILE[]=__FILE__;
#endif
//CAboutDlgdialogusedforAppAbout
classCAboutDlg:
publicCDialog
public:
CAboutDlg();
//DialogData
//{{AFX_DATA(CAboutDlg)
enum{IDD=IDD_ABOUTBOX};
//}}AFX_DATA
//ClassWizardgeneratedvirtualfunctionoverrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtualvoidDoDataExchange(CDataExchange*pDX);
//DDX/DDVsupport
//}}AFX_VIRTUAL
//Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
CAboutDlg:
CAboutDlg():
CDialog(CAboutDlg:
IDD)
//{{AFX_DATA_INIT(CAboutDlg)
DoDataE
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MFC 计算器 课程设计 报告