Надеюсь это поможет.
ю, что это может показаться дублирующим вопросом, но поверьте мне, это не так.
Я сослался на этовопрос, но не очень помог, как я пытаюсь сconsole application
и сам ответчик говорит, что он не знает причину, почему ShowCursor (FALSE) не работает для консольных приложений.
этонить мне тоже не помогло.
Вот что я пробовал:
Использование ShowCursor ():
while(ShowCursor(false)>=0); //did not work
Сначала я подозревал, что это было из-за этого заявления вMSDN : When Windows starts up, it checks if you have a mouse. If so, then the cursor show count is initialized to zero; otherwise, it is initialized to negative one
Я подумал, что, возможно, в последних окнах он не распознает подключенную мышь или трекпад как установленную мышь, и, возможно, именно поэтому он не работает. Следующий код показывает, что это не так:
void UsingShowCursor()
{
CURSORINFO info;
info.cbSize = sizeof(CURSORINFO);
cout << ShowCursor(FALSE);
cout << ShowCursor(FALSE);
cout << ShowCursor(FALSE);
GetCursorInfo( &info ); //info.flags is CURSOR_SHOWING
}
Потому что я получаю -1, -2, -3. Это означает, что начальный счетчик показа курсора, очевидно, равен 0, и он идентифицирует установленную мышь.
И еще одна вещь, которую следует отметить, чтоGetCursorInfo()
также говорит, что курсор показывает.
Использование SetCursor ()
void UsingSetCursor()
{
HCURSOR prev = SetCursor(NULL);
int i = 0;
while(i++<10)
{
cout<<i<<endl;
Sleep(1000);
}
if( SetCursor(prev) == NULL ) //check if the previos cursor was NULL
cout<<"cursor was hidden and shown after 10 secs\n";
}
Тоже не работает Это также не сработало:
SetCursor(LoadCursor(NULL, NULL));
Редактировать:
Использование LoadImage
Тоже не сработало.
void UsingLoadImage()
{
// Save a copy of the default cursor
HANDLE arrowHandle = LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSOR, 0, 0, LR_SHARED);
HCURSOR hcArrow = CopyCursor(arrowHandle);
HCURSOR noCursorHandle = (HCURSOR)LoadImage(NULL, IDC_ARROW, IMAGE_CURSOR,1,1,LR_SHARED); //a single pixel thick cursor so that it wont be visible
HCURSOR noCursor = CopyCursor(noCursorHandle);
SetSystemCursor(noCursor, OCR_NORMAL);
int i =0 ;
while(i++<10)
{
cout<<i<<endl;
Sleep(1000);
}
//revert to previous cursor
SetSystemCursor(hcArrow, OCR_NORMAL);
DestroyCursor(hcArrow);
}
В чем может быть ошибка? Как мы можем скрыть мышь для консольного приложения?