我是C ++的新手,因此决定通过一个小型控制台游戏挑战自我。避免典型的闪烁。 从我从MSDN文档获得的内容来看,我应该使用控制台缓冲区,但是我很轻松,并且从更改窗口标题和调整其大小等简单操作开始。 我编写的小程序就是这样做的,但是由于某种原因,当我执行SetConsoleWindowInfo时,我得到了错误代码6(应该是“无效的句柄”)。
有人能为此指出正确的方向吗?预先谢谢你
#include <windows.h>
#include <stdio.h>
#include <iostream>
HANDLE wHandle, bHandle;
SMALL_RECT wSize = { 0,0,100,100 };
int main() {
wHandle = GetConsoleWindow();
if (wHandle == NULL) {
printf("Handle is Null");
}
SetConsoleTitle(L"NewTitle");
if (!SetConsoleWindowInfo(wHandle, TRUE, &wSize)) {
printf("SetConsoleWindowInfo (%d)\n", GetLastError());
}
getchar();
return 0;
}
答案 0 :(得分:0)
也许这会有所帮助:
#include <windows.h>
#include <stdio.h>
#include <iostream>
HANDLE wHandle, bHandle;
//SMALL_RECT wSize = { 0,0,100,100 }; // If SetConsoleWindow fails with code 87, then this is too big!
SMALL_RECT wSize = { 0,0,60,20 }; // Works on my screen!
int main() {
// wHandle = GetConsoleWindow();
wHandle = GetStdHandle(STD_OUTPUT_HANDLE); // See comment by RbMm
if (wHandle == NULL) {
printf("Handle is Null");
}
// SetConsoleTitle(L"NewTitle"); // Don't use a wide character string!
SetConsoleTitle("NewTitle");
if (!SetConsoleWindowInfo(wHandle, TRUE, &wSize)) {
printf("SetConsoleWindowInfo (%d)\n", GetLastError());
}
getchar();
return 0;
}
随意问,如果您不了解我已更改的内容(或为什么更改了它),但是这些注释解决了一些问题。