前言

很遗憾,并没有在规定的时间之内完成这项作业。截止目前(2016/6/7)我还剩下输入输出路径的问题没有解决。但是我会把它做完的。本篇随笔是我之前遇到的问题的小结。

在一周过后(6/11)我做出了成品,在断断续续的备考时间里,做出这个小成品感觉很开心,也收获了很多东西。

实现计算器图型界面遇到的问题

1.VS2015的登录问题。

计算器我在上周一的时候就已经着手开始落实,在了解到VS上有MFC的平台之后,决定使用MFC进行本次作业操作的工具,除去中间想使用qt试试的时间,写出雏形也只用了两天不到的时间实现了计算器的大体功能,当时想的很当然,周末的时间内解决掉剩下的两个问题。结果遇到了这个无法登入的问题,花了很长的时间才解决。

VS2015在刚刚下载的时候有一个试用期,是一个月。当它到期之后就需要使用你的微软账号进行登录(使用Windows10的朋友不必担心,当初申请Windows10的登录账号就可以使用了)。然而我是没有的(...),于是使用我的qq邮箱进行注册,不幸的是,在它发送邮件之后点击邮件准备激活的时候,我的百度游览器出现了页面错误,当我重新点开邮件里的链接的时候,微软很贴心的提示我此链接已过期,需要重新发送邮件。重新申请,好,我照办了,邮件也顺利的过来了,再一次点开邮件内的链接,好吧,还是页面错误。这就比较尴尬了。

好吧,可能此路暂时不通,那么我就打算使用别人已经申请好的账号登录。那么出现了最蛋疼的bug,点我
解决方案:升级IE游览器,重启,重启VS。

可能是笔记本的原因,重新打开VS之后又一次加载不出来,当时的心情有些崩溃,于是调整了一下,决定先出去自习一会。晚上回到寝室,重新试了一下,发现可以使用了!!

好了,看一下时间,肯定是做不完了。但是,不代表我永远做不出来。

2.消息响应函数的实现。

写主界面的时候顺风顺水,但是在写键盘消息响应的时候遇到了困难。主要是最后返回时是返回CDialogEx::PreTranslateMessage(pMsg),而我返回了其派生类的PreTranslateMessage函数。但是编译器的纠错却指向了该函数头部,让我找了半天。

下面是我的消息响应函数:

BOOL CMFCApplication1Dlg::PreTranslateMessage(MSG* pMsg)
{if (pMsg->message == WM_KEYDOWN){switch (pMsg->wParam) // wParam 是 消息响应机制{// 小键盘上 为虚拟键VK值 主键盘上 为十六进制// 1.数字 0 ~ 9 键的实现 :case 0x30 : // 主键盘 下同case VK_NUMPAD0 : // 小键盘 下同if (GetKeyState(VK_SHIFT) < 0) // 该函数检取指定SHIFT键的状态{OnBnClickedButtonRight(); // 当SHIFT键处于激活状态时 表示右括号}else // 当SHIFT键未被触发时 表示数字0OnBnClickedButtonNum0();break;case 0x31 :case VK_NUMPAD1 :OnBnClickedButtonNum1();break;case 0x32 :case VK_NUMPAD2 :OnBnClickedButtonNum2();break;case 0x33 :case VK_NUMPAD3 :OnBnClickedButtonNum3();break;case 0x34 :case VK_NUMPAD4 :OnBnClickedButtonNum4();break;case 0x35 :case VK_NUMPAD5 :OnBnClickedButtonNum5();break;case 0x36 :case VK_NUMPAD6 :OnBnClickedButtonNum6();break;case 0x37 :case VK_NUMPAD7 :OnBnClickedButtonNum7();break;case 0x38 :case VK_NUMPAD8 :if (GetKeyState(VK_SHIFT) < 0) // 当SHIFT键处于激活状态时 表示乘法{OnBnClickedButtonmultiply(); }else // 当SHIFT键未被触发时 表示数字8OnBnClickedButtonNum8();break;case 0x39 :case VK_NUMPAD9 :if (GetKeyState(VK_SHIFT) < 0) // 当SHIFT键处于激活状态时 表示左括号{OnBnClickedButtonLeft();}else // 当SHIFT键未被触发时 表示数字9OnBnClickedButtonNum9();break;case VK_BACK : // backspaceOnBnClickedButtonBackspace();break;case VK_RETURN : // enterOnBnClickedOk();break;case 0XBF : // ?/键OnBnClickedButtondivide();break;case VK_OEM_PLUS : // +=键if (GetKeyState(VK_SHIFT) < 0)  // 当SHIFT键处于激活状态时 表示加号{OnBnClickedButtonAdd();}else // 当SHIFT键未被触发时 表示 = OnBnClickedOk();break;case VK_OEM_MINUS: // -键OnBnClickedButtoncut();break;case 0x6E:  // .键 (小数点)OnBnClickedButtonPoint();break;}return FALSE;}return CDialogEx::PreTranslateMessage(pMsg);// return CMFCApplication1Dlg::PreTranslateMessage(pMsg);
}

3.实现界面中的界面(按下按键弹出另一个界面)

这里我利用了DOMODAL()函数,在另一个界面设计好了以后,把他们两个联系在了一起,困难谈不上,纪念一下一直寻找解决方法的自己。

Switch按键的函数

void CMFCApplication1Dlg::OnBnClickedButtonSwitch()
{// TODO: 在此添加控件通知处理程序代码WasMyNewDlg Wasdns;Wasdns.DoModal();
}

4.选择文件路径

先来看代码:

void WasMyNewDlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码//将 szFilter (char *) 转换成 LPCTSTRchar  szFilter[] = "文本文件 (*.txt)|*.txt|All Files (*.*)|*.*||";int num1 = MultiByteToWideChar(0, 0, szFilter, -1, NULL, 0);wchar_t *wide1 = new wchar_t[num1];MultiByteToWideChar(0, 0, szFilter, -1, wide1, num1);//将 txt (char *) 转换成 LPCTSTRchar txt[] = "txt";int num2 = MultiByteToWideChar(0, 0, txt, -1, NULL, 0);wchar_t *wide2 = new wchar_t[num2];MultiByteToWideChar(0, 0, txt, -1, wide2, num2);//打开操作CString filePath("");CFileDialog OpenDlg(true, wide2, NULL, OFN_HIDEREADONLY, wide1); if (OpenDlg.DoModal() == IDOK){VERIFY(filePath = OpenDlg.GetPathName()); //得到完整文件名}INPUTFILE = filePath; //得到文件路径UpdateData(false);
}

很奇怪的是,根据网上的部分资料显示的做法,编译器报错,显示没有该类型的CFileDialog的构造函数,刚刚开始我以为是TRUE出了问题,后来点进类库里面查看了一下,第一个参数确实是BOOL类型的,才发现是最后传入的参数是char *类型的,进行了一次类型转换改正了过来。

界面展示

主界面

副界面(文件操作)

个人感慨

距离我们高考结束已经过去了一年的时间,在这一年的时间里,我自认为是成长了很多,了解了很多的知识,也结识了很多优秀的朋友,像本次作业的完成,离不开朝夕男神和伟鹏男神,还有泉州一霸景钊的帮助,有了他们的经验我少走了很多弯路。

其实结束也是一种新的开始,去年的今天我曾经背过一段语文的作文模板,其中有一句话仍然让我记忆犹新:
其实现在的你在哪里,并不重要,重要的是,你依然站在前进的道路上,做着坚韧上进的自己。

有时候,看似很困难去实现的一件事情,在时间面前也是很微不足道的。

却顾所来径,苍苍横翠微。
---2016/6/11

转载于:https://www.cnblogs.com/qq952693358/p/5568026.html

第六次程序设计作业 计算器图型界面的设计相关推荐

  1. 利用 Tkinter 打造专属图形化界面:设计签名

    大家好,今天本期带着大家制作一个属于自己的GUI图形化界面:用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢? 限于篇幅,今天我们首先详细讲述一下Tkinter的使用方法.本来不准备 ...

  2. zedboard(三)--实现linaro图型界面

    xilinx官网为我们提供了最简单的linux镜像文件系统ramdisk8M,通常能够满足我们进行开发应用.但是这个文件系统支持命令行操作,对于习惯图像界面操作的人来说很不方便.下面我们搭建基于zed ...

  3. AS第一次作业:实现APP门户界面框架设计

    实验内容:请根据课程实操实现APP门户界面框架设计,至少包含4个tab页,能实现tab页之间的点击切换: 技术:使用布局(layouts)和分段(fragment),对控件进行点击监听: 目录 App ...

  4. 《面向对象程序设计》第六次作业(图形化界面)

    作业要求: 实现计算器GUI界面 接收数字键.括号和加减乘除按键并处理计算 支持文件输入输出批量处理 除按钮监听处理外能接收按键信号 因为选择的是Qt,然后写c++项目惯用的IDE是eclipse,所 ...

  5. java仿windows7计算器界面,java制作仿win7计算器之一计算器的图形界面的设计

    再结合网上各路神人及之前写的博客Swing编程方面步骤,如下: package calPack; import javax.swing.*; import java.awt.*; import jav ...

  6. java制作仿win7计算器之一计算器的图形界面的设计

    参考一 java仿win7计算器布局 参考二 Swing布局管理器介绍 参考三hw1287789687 大侠的帖子回复 再结合网上各路神人及之前写的博客Swing编程方面步骤,如下: package ...

  7. 基于Qt的ui图形化界面进行的界面设计

    qt初学者往往会发现这样的一个问题--无论是我买的相关的书,还是网上博客的内容,基本全都是利用纯代码的形式来进行界面设计的.而初学者对各种控件的代码实现并不熟悉,往往在这里耗费大量时间.故本篇文章介绍 ...

  8. 肝货,详解 tkinter 图形化界面制作流程!

    作者 | 黄伟呢 来源 | 数据分析与统计学之美 本期案例是带着大家制作一个属于自己的GUI图形化界面->用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢?限于篇幅,今天我们首 ...

  9. 又一个4000字肝货,详解tkinter图形化界面制作流程!

    本期案例是带着大家制作一个属于自己的GUI图形化界面->用于设计签名的哦(效果如下图),是不是感觉很好玩,是不是很想学习呢?限于篇幅,今天我们首先详细讲述一下Tkinter的使用方法.本来不准备 ...

最新文章

  1. was服务器编码修改,两种was容器下应用乱码问题的解决方案.doc
  2. 关于宝塔下的项目中的php不能访问的问题
  3. 关于CMS垃圾回收器的几个问题
  4. Python ATM实战
  5. js获取页面传来参数的方法
  6. c#调用c语言的自定义函数,[转]在C#中调用C语言函数(静态调用Native DLL,Windows Microsoft.Net平台)...
  7. 使用Python写入docx文件并控制字体颜色
  8. Word2Vec在中文的应用
  9. 全球首个用户分享区块链+AI大数据体系,专业跨境医疗机构“海医通”发布XMC“海医链”
  10. bat批处理文件转成exe应用程序安装及乱码解决
  11. USB Type C 接口引脚详解
  12. 2021 OpenCV人工智能竞赛优秀项目团队介绍集锦(六)
  13. 对JS中this的理解
  14. 企业私有云建设需求分析
  15. Ansible Tests详解
  16. 数值分析正割法python3实现并绘图
  17. Springboot 注解类里面public @interface xxx 什么意思
  18. EXCEL表格-VLOOKUP多对一结果匹配方法(通配符)
  19. HAL库配置STM32F1系列定时器驱动步进电机(三)
  20. 苹果笔记本开不了机的解决措施有哪些

热门文章

  1. 提高SQL执行效率的几点建议
  2. javaScript js 可滑动的div块
  3. 入侵检测系统的性能的辨别(3)
  4. 计算机视觉,不可能凉!
  5. 微软开源了一个用TF实现的GNN例程库
  6. 近期机器学习竞赛汇总~总奖池超千万人民币!
  7. 商汤科技62篇论文入选CVPR 2019!多个竞赛项目夺冠!
  8. 择天记服务器维护中,择天记修仙正统
  9. 进行数据清洗_[经验漫谈]使用Python进行数据表格清洗和分析
  10. 【TensorFlow】TensorFlow从浅入深系列之八 -- 教你学会变量管理