简体   繁体   English

Windows API在GetStdHandle()中不起作用

[英]Windows API doesn't work in GetStdHandle()

I renew my code, but the cursor was still visible. 我更新了我的代码,但光标仍然可见。 Help me, Thanks. 帮帮我,谢谢。 (I am a newbie in C and WinAPI) (我是C和WinAPI的新手)

#define WINVER 0x0500
#include<windows.h>

int main() 
{
 //Get a STD OUTPUT handle
 HWND StdHandle = GetStdHandle(STD_OUTPUT_HANDLE);

 //Set cursor invisible
 CONSOLE_CURSOR_INFO CURSOR;
 CURSOR.bVisible = FALSE;
 SetConsoleCursorInfo(StdHandle, &CURSOR);
 system ("pause>nul");
 return 0;
}

You need to initialise the dwSize member of CONSOLE_CURSOR_INFO : 您需要初始化CONSOLE_CURSOR_INFOdwSize成员:

CONSOLE_CURSOR_INFO CURSOR;
CURSOR.dwSize = 1;
CURSOR.bVisible = FALSE;

From the docs for SetConsoleCursorInfo : SetConsoleCursorInfo的文档:

The dwSize member of the CONSOLE_CURSOR_INFO structure specifies the percentage of a character cell that is filled by the cursor. CONSOLE_CURSOR_INFO结构的dwSize成员指定由游标填充的字符单元格的百分比。 If this member is less than 1 or greater than 100, SetConsoleCursorInfo fails. 如果此成员小于1或大于100,则SetConsoleCursorInfo将失败。

Note also from the same page 另请注意同一页面

Return value 返回值

If the function succeeds, the return value is nonzero. 如果函数成功,则返回值为非零值。
If the function fails, the return value is zero. 如果函数失败,则返回值为零。 To get extended error information, call GetLastError. 要获取扩展错误信息,请调用GetLastError。

Checking the return value would have helped you figure out what was going wrong. 检查返回值可以帮助您找出问题所在。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM