easyx运行时弹出控制台

我最近在写easyx时发现总是弹出两个窗口
(windows 11系统)
为什么我用VS2022写easyx的时候总是弹出控制台(dos),使用**_getch**()时必须要一下控制台才能正常输入。各位有没有什么解决办法可以使保持新窗口(非控制台) 置顶同时也能进行输入谢谢

我自己已经解决了:
原因:我读取键盘状态时用的getch()/_getch(),而它的原理是无需回车cin/scanf(),它并不是专门读取键盘信息的函数
解决方法:将**getch()/_getch()改为GetAsyncKeyState()**函数,这个函数可以读取键盘状态,且满足我的需求
感谢各位回答我的问题

  • 这篇博客: 【Easyx库基础用法教程】中的 8.2 getch()–获取键盘消息函数(第一种) 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<conio.h>
    #include<stdio.h>
    #include<easyx.h>
    //#include<graphics.h>//包含图像库头文件,仅仅适用于C++
    int main()
    {
    	//创建一个窗口,initgraph();
    	initgraph(400, 480, EW_SHOWCONSOLE);
    	int x=50;
    	int y=50;
    	while (true)
    	{
    		cleardevice();//清除上一次绘画的图形防止发生重叠
    		solidcircle(x, y, 50);//无边框填充画圆
    		char input;
    		input=_getch();
    		switch (input)
    		{
    		//case 119:
    		case 'w':
    		case 'W':
    			y -= 3;
    			printf("向上移动\n");
    			break;
    		//case 115:
    		case 's':
    		case 'S':
    			y += 3;
    			printf("向下移动\n");
    			break;
    		//case  97:
    		case 'a':
    		case 'A':
    			x -= 3;
    			printf("向左移动\n");
    			break;
    		//case 100:
    		case 'd':
    		case 'D':
    			x += 3;
    			printf("向右移动\n");
    			break;
    		}
    	}
    	getchar();
    	//关闭窗口,closegraph();
    	closegraph();
    	return 0;
    }
    

    这里由于不能发本地视频,所以大家可以拷贝代码在vs上试一试,查看效果😂😂😂😂😂
    如果你尝试之后就可以发现,这种方式只能让图形直线移动,并不能像游戏角色可以斜着移动,那我们紧接着学习下一个函数

取消命令行窗口,代码前加 #pragma comment(linker, "/subsystem:windows /entry:mainCRTStartup")
输入用

ExMessage m;        // 定义消息变量

while(true)
{
    // 获取一条鼠标或按键消息
    m = getmessage(EX_MOUSE | EX_KEY);

    switch(m.message)
    {
        case WM_MOUSEMOVE:
            // 鼠标移动
            break;

        case WM_LBUTTONDOWN:
            // 如果点左键
            break;

        case WM_KEYDOWN:
            // 按键
            if (m.vkcode == VK_ESCAPE)
                return 0;    // 按 ESC 键退出程序
    }
}