为什么mfc计算器不能计算
1个回答
关注
展开全部
亲,很高兴为您解答,mfc计算器不能计算,MFC只是一个用于开发Windows应用程序的老框架,本身不具备实现计算器功能。要开发具有计算能力的计算器软件,还需要基于MFC或其他更现代的框架进行开发,定义计算逻辑和界面。MFC自身的老旧、开发难度大等缺点,也使其不太适合用于开发现代简单的计算器应用。这就是MFC计算器不能计算的主要原因。
咨询记录 · 回答于2023-06-12
为什么mfc计算器不能计算
亲,很高兴为您解答,mfc计算器不能计算,MFC只是一个用于开发Windows应用程序的老框架,本身不具备实现计算器功能。要开发具有计算能力的计算器软件,还需要基于MFC或其他更现代的框架进行开发,定义计算逻辑和界面。MFC自身的老旧、开发难度大等缺点,也使其不太适合用于开发现代简单的计算器应用。这就是MFC计算器不能计算的主要原因。
我的计算器有两个编辑框,预想是计算结果会出现在另一个编辑框中,但是点击等号没有反应,原来的编辑框也没有出现运算结果,我的运算式子是看着视频跟着打出来的,用messagebox试验过了,等号按钮没有问题,代码能运行,就是不能算……
根据您的进一步描述,我个人判断这个问题的可能原因如下:1. 最有可能的是,您在为等号按钮绑定计算事件时,事件中没有真正编写完成表达式的运算逻辑,只有简单的消息框弹出等测试代码。这会导致点击等号时,由于缺少真正的计算逻辑,不会出现运算结果。2. 您在视频中跟着敲出的运算表达式代码有误,导致无法正确计算。这需要您自己再仔细检查一遍表达式运算的代码逻辑。3. 除了为等号按钮绑定计算事件外,您还为其他按钮或事件绑定了显示计算结果的代码,这与预想的计算流程有出入,导致无法正常显示结果。需检查其他事件代码,确保不影响主计算逻辑。4. 编辑框获取或显示数据的代码有误。获取输入表达式的数据不正确,或显示计算结果的代码无法正常工作,都会导致计算结果不能显示。需检查编辑框相关代码。您在看一下呢亲
亲,对于您所提到的问题我的建议如下:1. 仔细检查您为等号按钮绑定的计算事件,确保已经完整编写了正确的表达式运算逻辑,不只是简单的测试代码。2. 与视频中的表达式运算代码对照,仔细检查您敲出的代码,确保逻辑正确和完整。3. 查看是否绑定了其他对界面有影响的事件或按钮,确保不影响主计算事件的正常触发。4. 检查编辑框的数据获取、转换和显示代码,确保能正常工作。5. 如果上述操作仍无法解决问题,可以考虑在等号按钮的计算事件中加入MessageBox来弹出运算过程中关键变量的值,以检查程序流程和数据是否正确。这可以帮助判断问题所在。计算器的开发涉及到较多代码和逻辑,出现问题时不易迅速定位解决。需要有条理和耐心地逐步排查,才能找到问题根源。如果您已经按上述步骤仔细检查但问题仍未解决,也非常欢迎您提供关键代码,我可对问题进一步分析,找出解决思路。祝您代码测试顺利!并在学习和开发中不断进步。
void CshenmedongxD1g::Calculator ()(//TODO:在此添加控件通知处理程序代码UpdateData(TRUE);num2 = _wtof(str);double result = 0;switch (mflag)[case FLAG_JIA:result = numl + num2;tempstr = tempstr + T("+” + str + T(“=”);//tempstr = tempstr + L"+"+ str;break;.h文件里private:CString str=L"0";[ CString str1;/CString str2;CString tempstr;double num1 = 0;double num2 = 0;//double tempnum = 0; ICalculator_Flag mflag;/运算符enum Calculator_Flag FLAG_JIA,FLAG_JIAN, IFLAG CHENG,FLAG_CHU,相关代码是这样的
亲,您所发的这个文本需要处理吗?
请您把您具体要求跟我讲一下可以嘛
我觉得没有问题,计算的逻辑也很清晰,看过原视频好几次了,然后这是链接CshenmedongxD1g::DoDataExchange(CDataExchange* pD)CDialogEx::DoDataExchange(pDX);DDX_Text(pDX, IDC EDIT1, str);DDX_Text(pDX, IDC_EDIT2, str1);前面代码里面的Calculator有在.h中声明过了,还有个savefirstvalue也声明了
亲,我这边根据您提供的代码和描述,出现计算不工作的原因主要有:1. 计算逻辑代码中,运算符case 语句没有正确获取两个操作数 num1 和 num2 的值。从代码中看,num1 的值获取正确,但 num2 取值使用了_wtof()将 str 转换,这可能出现错误。2. str 或 str1 控件获取的用户输入数据不正确,导致 num2 取值错误。这需要检查 DoDataExchange() 中的 DDX_Text() 是否正确获取数据。3. m_flag 作为运算符判断条件,其取值可能有误。这需要检查 setcalculaotr_flag()函数中 m_flag 的设置逻辑。4. 表达式运算后的结果 result 没有正确显示在界面上。这需要检查结果显示代码 tempstr 是否正确。解决思路如下:1. 在num2 = _wtof(str);这一行加 printf 语句,输出转换后的 num2 值,检查是否正确获取了str中的数据。如果不正确,需要检查 str 数据获取过程。2. 同样在 setcalculaotr_flag()函数中加 printf 语句,输出 m_flag 的值,确认是否正确设置了运算符标识。3. 检查 tempstr 在各个case 语句中的设置值是否正确。并在 Calculator()函数末尾加 printf 语句,输出 tempstr 的最终值,确认结果是否正确显示。4. 逐步调试程序,检查关键变量 num1、num2、m_flag 等的值是否按预期改变,进而判断逻辑错误点。5. 如果上述方法仍未找到问题所在,可以考虑在等号按钮的事件中先不执行计算,先弹出 num1、num2和m_flag 的值,确认这些关键数据是否正确获取,然后再基于此添加计算逻辑,观察程序执行过程中是否出现不符预期的变化。总之,出现计算不工作的问题,首先要确认输入数据和运算符是否正确获取,然后判断计算逻辑和结果显示代码是否准确。可以利用 printf 语句、弹框等方法观察程序运行过程,找到问题所在点。针对您的代码,我认为很有可能是 num2 取值或 m_flag 设置不正确引起的问题。您看我这个方案,您那边在试一下呢