编辑: 被控制998 2013-06-02

m_result = n_result;

char sz[20];

sprintf(sz, %f ,m_result);

m_CResult.SetWindowText(sz);

} UpdateData() 是MFC 的窗口函数,用来刷新数据的 由于我们进行基本运算需要更新数据 所以必须添加这个函数.(可以认为是必须的) n_result = m_num1 + m_num2;

m_result = n_result;

char sz[20];

sprintf(sz, %f ,m_result);

以上代码是进行 加法的基本语句,然后数组保存并格式化打印输出. m_CResult.SetWindowText(sz);

此句是把结果输出在之前用 CEdit 类创建的对象 m_CResult,m_CResult 调用 SetWindowText(sz);

把结果显示在编辑框中. 手把手教你 MFC 编程计算器 第13页/共23页 无独有偶 剩下的减法 乘法 和除法 也是大同小异(只是把 符号小改一下便可~~) 这里贴出所有加减乘除的代码 void CMyDlg::OnButton1() { // TODO: Add your control notification handler code here UpdateData();

double n_result;

n_result = m_num1 + m_num2;

m_result = n_result;

char sz[20];

sprintf(sz, %f ,m_result);

m_CResult.SetWindowText(sz);

} void CMyDlg::OnButton2() { // TODO: Add your control notification handler code here UpdateData();

double n_result;

n_result = m_num1 - m_num2;

m_result = n_result;

char sz[20];

sprintf(sz, %f ,m_result);

m_CResult.SetWindowText(sz);

手把手教你 MFC 编程计算器 第14页/共23页}void CMyDlg::OnButton3() { // TODO: Add your control notification handler code here UpdateData();

double n_result;

n_result = m_num1 * m_num2;

m_result = n_result;

char sz[20];

sprintf(sz, %f ,m_result);

m_CResult.SetWindowText(sz);

} void CMyDlg::OnButton4() { // TODO: Add your control notification handler code here UpdateData();

double n_result;

n_result = m_num1 / m_num2;

m_result = n_result;

char sz[20];

sprintf(sz, %f ,m_result);

m_CResult.SetWindowText(sz);

} 手把手教你 MFC 编程计算器 第15页/共23页 这里我特地说明一下 由于我们预设了

2 个编辑框所想实现的功能是,如在编辑框

1 内输入一个输入 30,然 后再编辑框

2 内输入另一个数字 20,并且再进行运算.那么存在一个问题.这个问题其实 困惑了我很久,那就是,如何用判断用户是在哪个编辑框上输入了数字,所以我们需要给 程序加入一个功能,那便是判断用户是在编辑框

1 输入,还是编辑框

2 内输入. 那么我们想,在日常我们用电脑的过程中,一般都是用鼠标去点击编辑框来进行一系 列操作.那么我可以加入一个鼠标左键点击 WM_LBUTTONDOWN 消息和一个 EN_SETFOCUS 事 手把手教你 MFC 编程计算器 第16页/共23页 件来响应这个鼠标消息. EN_SETFOCUS 为判断焦点事件(通俗点说,那便是判断光标在什 么地方) 这样一来,一切逻辑都理顺了.我们用户用鼠标选择并点击编辑框的时候,我们用 WM_LBUTTONDOWN 消息去响应,然后与此同此,我们把响应的和 EN_SETFOCUS 联系起来,我 们预设一个全局变量 nEditFlag ,作为在 EN_SETFOCUS 函数里的一个 标记,并在鼠标点 下的时候用 nEditFlag 去表示编辑框目前被选定的状态,nEditFlag ==1 的时候我们就判 断用户选择了编辑框

1 ,再者当 nEditFlag ==2 的时候说明编辑框

2 被选定. 这里我告诉大家如何添加 事件 EN_SETFOCUS,由于 EN_SETFOCUS 是一个判断焦点的,所以 对象应该是编辑框

1 和编辑框

2 里添加,所以我们回到对话框编辑页面. 右键编辑框

1 ->

点击 事件 ->

选择 EN_SETFOCUS (这里程序默认的响应函数是 OnsetfocusEdit1) 依次类推我们也给编辑框

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题