winapi FillConsoleOutputAttribute 程序崩溃
winapi FillConsoleOutputAttribute program crash
有这些功能
void setPixel(SHORT x, SHORT y, WORD color) {
COORD pos = {x, y};
LPDWORD out;
FillConsoleOutputAttribute(console,color,1,pos,out);
}
void setScreenSize(SHORT x, SHORT y) {
COORD size = {x, y};
SetConsoleScreenBufferSize(console,size);
}
我在 screenSize()
:
之后尝试调用 setPixel()
时收到错误消息
int main() {
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
setScreenSize(120,40); // works well if setPixel is not called after
setPixel(40,12,GREEN); // works well if setScreenSize is not called
}
上面的程序崩溃了。我无法在 FillConsoleOutputAttribute()
之后调用 GetLastError()
,这似乎会导致错误并立即使程序崩溃。我在 the reference.
中没有找到任何内容
什么可能导致程序崩溃,如何解决?
你的 setPixel
函数应该是这样的:
void setPixel(SHORT x, SHORT y, WORD color) {
COORD pos = {x, y};
DWORD out;
FillConsoleOutputAttribute(console,color,1,pos, &out);
}
在您的版本中,您将未初始化的指针 out
传递给 FillConsoleOutputAttribute
。
有这些功能
void setPixel(SHORT x, SHORT y, WORD color) {
COORD pos = {x, y};
LPDWORD out;
FillConsoleOutputAttribute(console,color,1,pos,out);
}
void setScreenSize(SHORT x, SHORT y) {
COORD size = {x, y};
SetConsoleScreenBufferSize(console,size);
}
我在 screenSize()
:
setPixel()
时收到错误消息
int main() {
HANDLE console = GetStdHandle(STD_OUTPUT_HANDLE);
setScreenSize(120,40); // works well if setPixel is not called after
setPixel(40,12,GREEN); // works well if setScreenSize is not called
}
上面的程序崩溃了。我无法在 FillConsoleOutputAttribute()
之后调用 GetLastError()
,这似乎会导致错误并立即使程序崩溃。我在 the reference.
什么可能导致程序崩溃,如何解决?
你的 setPixel
函数应该是这样的:
void setPixel(SHORT x, SHORT y, WORD color) {
COORD pos = {x, y};
DWORD out;
FillConsoleOutputAttribute(console,color,1,pos, &out);
}
在您的版本中,您将未初始化的指针 out
传递给 FillConsoleOutputAttribute
。