#c #winapi
Вопрос:
Как я понял, WriteConsole()
функция записывает массив символов в буфер экрана. Это работает до тех пор, пока я не попытаюсь сделать цикл.
#include <iostream>
#include <Windows.h>
int main() {
HANDLE hScreenBuffer;
hScreenBuffer = GetStdHandle(STD_OUTPUT_HANDLE);
char map[100];
LPDWORD number_of_chars_to_write;
for (int i = 0; i < 100; i ) {
map[i] = '#';
}
while (1) {
WriteConsole(
hScreenBuffer,
map,
100,
number_of_chars_to_write,
NULL
);
}
}
Комментарии:
1. Вызывайте
WriteConsoleA
вместоWriteConsole
.2. Ничего не изменилось
Ответ №1:
В вашем коде есть две проблемы:
Во-первых, как указано в комментарии, вам нужно использовать WriteConsoleA
, так как вы пишете узкие char
буквы s.
Во-вторых, вы передаете неинициализированный указатель LPDWORD number_of_chars_to_write;
на WriteConsole
, что, скорее всего, приведет к сбою.
Это исправленный код:
#include <iostream>
#include <Windows.h>
int main() {
HANDLE hScreenBuffer;
hScreenBuffer = GetStdHandle(STD_OUTPUT_HANDLE);
char map[100];
DWORD number_of_chars_to_write;
for (int i = 0; i < 100; i ) {
map[i] = '#';
}
while (1) {
WriteConsoleA(
hScreenBuffer,
map,
100,
amp;number_of_chars_to_write,
NULL
);
}
}