Я использую функцию FillConsoleOutputCharacter, но приложение перестало работать - PullRequest
0 голосов
/ 11 июля 2020

Я хочу создать консольное приложение, поэтому я поискал Windows API и получил этот код, но он перестал работать, когда я его запустил, что мне делать?

Исходный код:

#include "windows.h"
#include "stdio.h"
#include <conio.h>  //console  i/o

int main()
{
 HANDLE hOut;
 // 获取标准输出设备句柄
 hOut = GetStdHandle(STD_OUTPUT_HANDLE);
 // 窗口信息
 CONSOLE_SCREEN_BUFFER_INFO bInfo;
 // 获取窗口信息
 GetConsoleScreenBufferInfo(hOut, &bInfo );

 printf("\n\nThe soul selects her own society,\n");
 printf("Then shuts the door;\n");
 printf("On her devine majority\n");
 printf("Obtrude no more.\n\n");
 _getch();
 COORD pos = {0, 0};
 // 向窗口中填充字符以获得清屏的效果
 FillConsoleOutputCharacter(hOut, ' ', bInfo.dwSize.X * bInfo.dwSize.Y, pos, NULL);
 // 关闭标准输出设备句柄
 CloseHandle(hOut);
 return 0;
}

Может кто подскажет как решить? PLZPLZ !!

1 Ответ

0 голосов
/ 11 июля 2020

Вы передаете NULL параметру lpNumberOfCharsWritten в FillConsoleOutputCharacter(), но в документации указано:

lpNumberOfCharsWritten [out] Указатель на переменную , которая получает количество символов, фактически записанных в экранный буфер консоли.

Это не говорит о том, что NULL является допустимым для этого параметра. Так что дайте ему то, что он хочет - указатель на переменную, например:

DWORD dwNumWritten;
FillConsoleOutputCharacter(hOut, ' ', bInfo.dwSize.X * bInfo.dwSize.Y, pos, &dwNumWritten);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...