ege娘吧 关注:795贴子:3,183
  • 2回复贴,共1

【求教】关于13.04ege库里的mouse_msg结构体

只看楼主收藏回复

做选择,然后鼠标第一次点有效,然后做第二次选择,鼠标怎么点都进不去
我断点一步步去看msg的变化
第一次getmouse()后 是msg_down();
第二次getmouse()后是msg_move();
就很懵
mouse_msg m = { 0 };
int x, y;
while (1)
{
m = getmouse();
mousepos(&x, &y);
if (m.is_left() && x>780 && y>300 && x<1082 && y<602)
{
cleardevice();
xyprintf(200, 200, "你真的要离开游戏吗?");
getimage(img, "c:\\文件代码\\离开游戏.png");
putimage(780, 300, img);
img = newimage();
getimage(img, "c:\\文件代码\\再来一局.png");
putimage(380, 300, img);
while (1)
{
m = getmouse();
mousepos(&x, &y);
if (m.is_down()&&x>780 && y>300 && x<1082 && y<602)/////这个if语句就是进不去
{
cleardevice();
xyprintf(200, 200, "拜拜");
getch();
exit(0);
}
getch();
exit(0);
}
}
else if (m.is_left() && x > 380 && y > 300 && x < 682 && y < 602)
{
cleardevice();
xyprintf(200, 200, "欢迎进入游戏");
getch();
exit(0);
}
}
这个msg_move()怎么来的,我第一次按下去以后都是msg_down的状态,为啥第二次按下去,就是move呢?
或者我应该怎么把它清去,让它成为msg_down,以便进入if语句
我是vs2013的编译环境 13.04的ege库


IP属地:广东1楼2017-09-14 18:36回复
    主页->入门基础示例->用户交互——鼠标2
    #include <graphics.h>
    #include <stdio.h>
    int main()
    {
    initgraph(640, 480);
    mouse_msg msg = {0};
    for ( ; is_run(); delay_fps(60))
    {
    char str[128];
    while (mousemsg())
    {
    msg = getmouse();
    }
    sprintf(str, "x=%10d y=%10d msg=%10d\r\n flag=%10d wheel=%10d",
    msg.x, msg.y,
    msg.msg, msg.flags, msg.wheel);
    cleardevice();
    outtextrect(0, 0, 640, 480, str);
    }
    closegraph();
    return 0;
    }
    版本12.08这个示例会崩溃
    13.04解决了吗


    IP属地:浙江2楼2017-09-16 15:19
    回复
      getmouse()这个函数是有缺陷的,
      getmouse()不应该放在主循环中,可以放在一个函数中
      估计 它会不停的取得资源,如果放到函数里,函数结束后,自然释放了


      IP属地:浙江3楼2017-09-19 18:55
      回复