根据之前用户反馈的调整窗口大小后按钮失灵的问题,我设计了如下的解决方案:
由于按钮响应是通过判断是否点击在该按钮相应的xy坐标范围里来判定的,按钮的xy坐标则是通过窗口大小换算的
double changex(int x) { return x*2.0 / WindowWidth - 1; } double changey(int y) { return y*2.0 / WindowHeight - 1; }
而原先的游戏窗口大小是固定的,所以当用户改变窗口大小时,按钮还是原来的判定区域,也就造成了按钮无法点击的情况
所以在绘制窗体内容前,先利用函数获取窗口大小,实时改变窗口大小相应的全局变量,按钮判定区也就可以实时根据窗口大小更新了
void getWindowsSize() { //记录当前窗口大小 int tempw, temph; HWND windows = GetActiveWindow(); //获取当前活动窗口句柄 RECT rc; GetWindowRect(windows, &rc); //获取窗口大小信息 WindowWidth=rc.right - rc.left-16; //改变当前窗口宽度 WindowHeight = rc.bottom - rc.top-39; //改变当前窗口高度 }
具体参考了百度知道的一个回答
今天还进行了其他的改动,将在明天的版本中发布以下内容:
初始界面的更新
由原先的一打开游戏就输入ip变得更像一个网络游戏
start:点击该按钮首先会判断是否连接到服务器(ip地址改为在settting中输入),如果已成功连接则顺利进入游戏操作界面,否则将提示未连接到服务器
setting:设置选项,具体下面介绍
exit:直接关闭游戏
设置界面的添加
IP:仍为原先的ip输入,输入完ip地址后点击右侧回车图标按键以连接
music:可选择开关背景音乐
fullscreen/window:全屏和窗口化
back:返回初始界面
首先感谢同组美工同学手绘的酷炫背景,其次由于个人的家事问题导致耽误了昨天的课设开发感到十分抱歉,我将会在接下来的几天加倍努力,让团队项目逐步尽善尽美。