今天主要解决了全屏状态下按钮无法顺利点击的问题

起初我以为是程序运行代码过多导致的卡顿,多点几次才能顺利交互,后来多调试了几次发现是判定区的问题

全屏后本来按钮的判定区是按照窗体比例放大且移动到指定位置范围的,但实际全屏后所有按钮的判定区都向上偏移了,所以才导致点击原来的位置没有反映

原先的按钮的判定区的xy范围是根据背景的像素点加上当前的窗口大小换算的,具体换算函数如下:

double changex(int x) {return x*2.0 / WindowWidth -1;
}double changey(int y) {return y*2.0 / WindowHeight-1;
}

坐标换算

此时的窗口大小WindowWidth和WindowHeight是包含了上面标题框的,所以后面有个-1

然而当用了全屏函数glutFullScreen()后,上面的标题框没了,也不算在当前窗口大小里了,自然所有按钮判定区都向上移动了

所以需要一个全屏标识符,来区分此时是窗口化还是全屏,来根据此时实际游戏画面内容的大小来改变窗口大小,具体更改了getWindowsSize()函数

void getWindowsSize() {                                    //记录当前窗口大小*                                    HWND windows = GetActiveWindow();                    //获取当前活动窗口句柄
    RECT rc;GetWindowRect(windows, &rc);                        //获取窗口大小信息if(Fullscreen==true){WindowHeight = rc.bottom - rc.top;                //改变当前窗口高度(全屏)WindowWidth = rc.right - rc.left;                    //改变当前窗口宽度
    }else {WindowHeight = rc.bottom - rc.top - 39;                //改变当前窗口高度(窗口化)WindowWidth = rc.right - rc.left - 16;                    //改变当前窗口宽度
    }
}

getWindowsSize()

转载于:https://www.cnblogs.com/hesoyamlyf/p/5634222.html

Slimer软工课设日报-2016年7月1日相关推荐

  1. Slimer软工课设日报-2016年6月30日

    根据上期预告,今天的主要工作是增加了初始界面和设置界面 初始界面 点击start按钮,若在设置中已成功连接服务器,则会进入账号登录界面,否则弹窗报错 void start() { //开始游戏按钮if ...

  2. 用starUML画的软工课设:外卖点餐管理系统

    软件工程课设:外卖点餐管理系统 一.概述 二.可行性分析 2.1技术的可行性 2.2经济的可行性 2.3操作的可行性 2.4法律的可行性 2.5结论 三.需求分析 3.1功能性需求 3.2非功能性需求 ...

  3. 软考信息系统监理师2016年3月18日作业

    第四章监理单位的组织建设 1.监理单位的体系建设分为哪3部分? 答:1.业务体系,2.质保体系建设,3.管理体系建设 2.监理单位监理服务质量管理的方式有2种,哪2种?优缺点是什么? 答:有2种方式, ...

  4. 软考信息系统监理师:2016年4月1日作业

    软考信息系统监理师:2016年4月1日作业 一.合同管理 1.合同按照信息系统工程范围划分哪几类? 答:从信息系统工程的不同范围和数量进行划分,可以分为信息系统工程总承建 合同.信息系统工程承建合同. ...

  5. 软考信息系统监理师:2016年4月1日(冬青子)作业

    软考信息系统监理师:2016年4月1日作业 第十章  合同管理 1.合同按照信息系统工程范围划分哪几类? 答:(1)项目总承包合同:(2)项目单项承包合同:(3)项目分包合同. 2.签订分包合同,应具 ...

  6. 薛老师软考高项学员:2016年4月27日作业

    薛老师软考高项学员:2016年4月27日作业 1.写全文:论信息系统项目的范围管理 2.写架构:论项目的计划与监控:论项目的进度管理. 转载于:https://blog.51cto.com/xueda ...

  7. 软考中高项学员:2016年3月14日作业

    软考中高项学员:2016年3月14日作业 第四章:项目管理一般知识 1.核心知识域有哪些.保障域有哪些?伴随域有哪些?过程域有哪些? 2.有效的项目管理要求项目管理团队,至少要使用哪六个方面知识? 3 ...

  8. 2016年7月6日,阿里巴巴集团和上汽联合发布全球首款互联网汽车

    一段试车视频广为传播:阿里巴巴集团董事局主席马云和上汽集团董事长陈虹坐在一辆SUV的后排,副驾驶的位置上是阿里巴巴集团技术委员会主席王坚,司机则是阿里巴巴集团CEO张勇. 7 月6 日,杭州西湖区云栖 ...

  9. 2016年4月1日作业

    软考信息系统监理师:2016年4月1日作业 一.合同管理 1.合同按照信息系统工程范围划分哪几类? 答:1)总承包合同:2)单项项目承包合同:3)分包合同 2.签订分包合同,应具备的2个条件是什么? ...

最新文章

  1. 自建28核树莓派集群,顺便学学docker,这里有一个500美元的搭建方案
  2. seo外链优化需要规避的那些坑
  3. 常见OJ评判结果对照表
  4. 关闭服务器 找不到文件,在服务器上找不到文件时阻止代码崩溃的方法?
  5. SAP Spartacus里unit list tree节点collapse all按钮的实现逻辑
  6. leetcode-回文链表
  7. [转] 撞车之后,不要傻里傻气的!
  8. AcWing 1801. 蹄子剪刀布(思维+暴力)
  9. 13.业务层的事务操作
  10. laravel文档——文件夹结构
  11. 乡土中国思维导图精华版
  12. Qt::WA_DeleteOnClose
  13. Android studio下的DNK开发JNI详解流程
  14. 基于阿里云的API简介
  15. 刷屏了的为什么:为什么12306时不时要崩那么一下下?
  16. vue框架中使用高德地图自定义icon问题
  17. CSDN 编程竞赛二十八期题解
  18. im即时聊天离线消息php,IM-demo
  19. 孙青椒排版八法 和 黄金分割0.618法则和构图法
  20. 戳破中台泡沫,软件定义让数字中台脱虚入实

热门文章

  1. 关于SQLServer2005的学习笔记——SQL查询解析步骤
  2. springboot定时删除log4j_SpringBoot整合log4j2进行日志配置及防坑指南
  3. 模型算法_推荐算法之隐语义模型
  4. python调整图像大小_使用Python调整图像大小
  5. 报错 hint: Updates were rejected because the remote contains work that you do 解决方法
  6. C/C++ 随机数生成器的 随机化
  7. NBA Top Shot过去24小时二级市场交易额突破630万美元
  8. Filecoin Gas基础费率涨至4.78 nanoFIL
  9. SAP License:SAP自学SAP常见的问题二
  10. Pandas高级操作