所以我正在制作一个游戏,一个ASCII地牢探险家,我有一个计划来获取窗口大小并将显示缩放到地下城旁边的库存。我继续google找到一个可以返回窗口大小的函数,这样我就可以在旁边打印inv了......注释掉的部分是我找到的代码,所以我试着把它放在我的main.cpp中试试看吧。我打算使用我发现的其他函数来获取窗口的最大大小并设置大小。我粘贴到我的代码中的这段代码在我运行游戏时给了我很多错误,大约180个错误来自一个名为wingdi.h的头文件。我google了一点,发现人们改变了我尝试的项目属性中的一些定义,它给了我大约130个来自不同标题的错误。有人说其中一个变量已经在windows.h中声明了,那个问这个问题的人应该改成别的东西,所以我把csbi改成了my_csbi,两者都没有用。有些人还说这是代码的问题,所以我决定暂时离开它,回到我的旧代码,现在做一些其他事情(我感到很沮丧,哈哈)。我全力评论,希望以后再回来。当我试图用所有代码运行我的游戏时,它给了我同样的错误。我是否必须重新安装Visual Studio 2015?从头开始我的代码或更改一些定义?
#include <iostream>
#include <conio.h>
//#include <Windows.h>
#include "GameSystem.h"
using namespace std;
int main()
{
//int x = 0;
//int y = 0;
//CONSOLE_SCREEN_BUFFER_INFO my_csbi;
//GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &my_csbi);
//x = my_csbi.srWindow.Right -my_csbi.srWindow.Left + 1;
//y = my_csbi.srWindow.Bottom -my_csbi.srWindow.Top + 1;
//printf("columns: %d\n", x);
//printf("rows: %d\n", y);
GameSystem gameSystem("level1.txt");
gameSystem.playGame();
printf("Enter any key to exit...\n");
int tmp;
cin >> tmp;
return 0;
}
我对编程很陌生,所以如果我的问题很愚蠢或者简单的话,我很抱歉。如果那冒犯了某种形状或形式的你。 :)
谢谢,笨蛋。
编辑:所有&#34;解决方案&#34;其他人没有为我工作,我决定问这个,因为在我评论完所有代码后,我的旧代码甚至没有运行(之前完美)。
答案 0 :(得分:1)
您永远不会直接包含<WinGdi.h>
。您始终包含<Windows.h>
,它会隐式提取所需的标头。
如果您正在编写控制台应用程序,GDI函数(来自<WinGdi.h>
)对您没有任何帮助。 GetConsoleScreenBufferInfo
函数可能是您想要使用的函数,但它不是GDI函数。它是一个核心功能。同样,虽然它在<WinCon.h>
中在技术上声明,但您不应该直接包含该标头。只需加入<Windows.h>
。
以下代码适用于我
(std::cin
实际上并不适用于&#34;输入任何键以退出......&#34;):
#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;
int main()
{
CONSOLE_SCREEN_BUFFER_INFO csbi;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
int x = csbi.srWindow.Right - csbi.srWindow.Left + 1;
int y = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
printf("columns: %d\n", x);
printf("rows: %d\n", y);
printf("Enter any key to exit...\n");
int tmp;
cin >> tmp;
return 0;
}
输出:
columns: 90
rows: 33
Enter any key to exit...
如果它不起作用,则必须满足下列条件之一:
<击> 1。问题出在"GameSystem.h"
,您没有向我们展示过。
(很好 - 将来,请将代码作为文本发布,而不是图片。)
2。您创建了错误类型的项目(使用Win32控制台应用程序模板重新创建新项目)。
3。您安装Visual Studio时出现问题(尝试重新安装)。