使用SetConsoleWindowInfo

时间:2019-09-02 08:00:02

标签: c++ winapi console

我是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;
}

1 个答案:

答案 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;
}

随意问,如果您不了解我已更改的内容(或为什么更改了它),但是这些注释解决了一些问题。