Slimer软工课设日报-2016年7月1日

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

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

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

原先的按钮的判定区的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值