我正在编写一个C Windows控制台应用程序,屏幕上有时会出现奇怪的像素。
更具体地说,应用程序在屏幕上以不同颜色写入和删除字符,有时它似乎无法完全删除它们,而是留下一个像素。
我专门用于打印的功能是:
STATIC
STATUS
PositionPrint(
__in COORD tPosition,
__in WORD wColorAttributes,
__in TCHAR cChar
)
{
SNOWFLAKE__STATUS eRetval = STATUS_INVALID;
BOOL bConsoleRetval = FALSE;
bConsoleRetval = SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), tPosition);
RETVAL_CHECK(
bConsoleRetval,
STATUS_SET_CONSOLE_CURSOR_POSITION_FAILED,
"SetConsoleCursorPosition failed"
);
bConsoleRetval = SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE), wColorAttributes);
RETVAL_CHECK(
bConsoleRetval,
STATUS_SET_CONSOLE_TEXT_ATTRIBUTES_FAILED,
"SetConsoleTextAttribute failed"
);
_tcprintf(_T("%c"), cChar);
lblCleanup:
return eRetval;
}
RETVAL_CHECK宏(以防万一):
#ifdef _DEBUG
#define DEBUG_PRINT(message) (printf("%s %d %s %d %s\n", __FILE__, __LINE__, __FUNCTION__, GetLastError(), (message)))
#else
#define DEBUG_PRINT(message)
#endif
#define RETVAL_CHECK(_condition, _error, _message) \
do \
{ \
if (!(_condition)) \
{ \
eRetval = (_error); \
DEBUG_PRINT(_message); \
goto lblCleanup; \
} \
} while (0,0)
要删除字符,我只需在同一位置打印一个空格。
我的电脑上有Windows 10。
有没有人知道导致问题的原因或解决方法?
答案 0 :(得分:0)
我认为这只是我的字体问题 我将默认的CMD字体设置为Courier New(希伯来语支持) 将它改回Lucida Console似乎已经解决了这个问题。