获取鼠标信息速度过慢

请问一下为什么我输出的时候特别慢谢谢


void msg_()
{
    
    MOUSEMSG msg=GetMouseMsg();
while(MouseHit())
        {
            if (msg.uMsg == WM_LBUTTONDOWN && state == BEGIN)
            {
                begin.hang = msg.x / (imgsize + 10);
                begin.lie = msg.y / (imgsize + 10);
                printf("begiin %d %d\n", begin.hang, begin.lie);
                state = END;
            }
            else if (msg.uMsg == WM_LBUTTONDOWN && state == END)
            {
                end.hang = msg.x / (imgsize + 10);
                end.lie = msg.y / (imgsize + 10);
printf("%d %d\n", end.hang, end.lie);
                state = BEGIN;
            }
        
        }

    }

int main()
{
    

initgraph(h,n,SHOWCONSOLE);
    init_();
    while(1)
    {
        BeginBatchDraw();
        gamedraw();
        EndBatchDraw();
        
        msg_();
    
    }
    getchar();
    closegraph();



}

以下答案引用自GPT-3大模型,请合理使用:

示例:

可能是代码中出现了卡顿,如while循环中可能存在大量的数据运算,导致执行缓慢。也可能是图片加载不当限制了CPU的速度,使得函数无法快速得到鼠标信息。要改善该问题,有以下几点可以做到:

1、尝试采用缓存机制,提高图片加载速度,减少CPU训练成本。

2、优化while循环, 尽量精简循环内部代码,减少数据运算量。

3、可以通过增加线程数来提高程序效率,或者做预处理,将一段时间内的鼠标操作信息收集起来,避免大量的处理过程,提高处理速度。

以下是一个示例,使用缓存机制提高图片加载速度:
#include <graphics.h>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>

#define imgsize 32 //定义图片大小

typedef struct point {
    int hang;
    int lie;
} Point;

//声明图片对象
MOUSEMSG msg;
IMAGE map;
int h = 640, n = 480;  //游戏画布大小

//位置变量
Point begin, end;
int state = BEGIN;

//函数声明
void init_();//初始化
void gamedraw();//绘制游戏画面
void msg_();//获取鼠标信息

//缓存机制函数
void readMap()
{
  //预先读取map文件,放入缓存中
    getimage(&map, "map.bmp");
}

//初始化函数
void init_()
{
    initgraph(h,n,SHOWCONSOLE);   //初始化画布
    BeginBatchDraw();             //开始批量绘制
    readMap();
}

//绘制游戏画面
void gamedraw()
{
    putimage(0, 0, &map);   //绘制地图
}

//获取鼠标信息
void msg_()
{
    MOUSEMSG msg=GetMouseMsg();
    while(MouseHit())
    {
        if (msg.uMsg == WM_LBUTTONDOWN && state == BEGIN)
        {
            begin.hang = msg.x / (imgsize + 10);
            begin.lie = msg.y / (imgsize + 10);
            printf("begiin %d %d

如果我的回答解决了您的问题,请采纳我的回答