Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Текстовый курсор в Win32-консоли, проблемы при изменении параметров 
:(
    Опции темы
BreakPointMAN
  Дата 15.9.2004, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Есть такая функция под C++, называется она _setcursortype:
Цитата
Syntax

#include <conio.h>
void _setcursortype(int cur_t);

Description

Selects cursor appearance.
Sets the cursor type to

_NOCURSOR  Turns off the cursor
_NORMALCURSOR Normal underscore cursor
_SOLIDCURSOR Solid block cursor

Note: Do not use this function for Win32s or Win32 GUI applications.

Return Value

None.


Всё было бы прекрасно, если бы она работала... вернее, если работала бы корректно. В оконном режиме все замечательно: курсор меняет свой внешний вид, как положено, или отключается вовсе... Но при переходе в полноэкранный режим _setcursortype(_NOCURSOR) не срабатывает ВООБЩЕ: текстовый курсор никуда не исчезает, а остается таким же, каким был до вызова данной функции.

Протестировано на нескольких платформах (MS Win2k SP4/ MS WinXP SP1/ MS Win98 SE), под несколькими компиляторами (Borland Turbo C++ 3.0 / Borland C++ 5.02 / Borland C++ Builder 6.0) и с разными видеокарточками (S3 Savage 4 32MB/GeForce 2 MX 400 32MB). Результаты получаются интересные: при компиляции под DOS все работает корректно в любых комбинациях платформа/компилятор/видеокарта... при компиляции в Win32-console под всеми NT-подобными системами _setcursortype(_NOCURSOR) не имеет никакого эффекта, а под Win9x начинается другой глюк: так называемый normal cursor приподнимается и показывается не в нижней, а в верхней позиции знакоместа.

Быть может, кто-нибудь сталкивался с подобным???

Вот, например, текст программки для экспериментов:
Код
#include <conio.h>

void main()
  {
   textmode(C80); window(1,1,80,25); clrscr();
   cprintf("*****");
   while(1)
      {
       _setcursortype(_NORMALCURSOR);
       getch();
       _setcursortype(_SOLIDCURSOR);
       getch();
       _setcursortype(_NOCURSOR);
       getch();
      }
  }



--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
Конструктор
Дата 16.9.2004, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 641
Регистрация: 12.5.2004
Где: Москва

Репутация: нет
Всего: 10



Попробуй win32 функцию SetConsoleCursorInfo. Может ей получится?
PM MAIL WWW ICQ   Вверх
BreakPointMAN
Дата 18.9.2004, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 15.9.2004
Где: Saratov

Репутация: 14
Всего: 24



Цитата
Попробуй win32 функцию SetConsoleCursorInfo. Может ей получится?

Может быть, и получится... хотя, народ тут говорил, что и у нее такие же глюки.......


--------------------
"Разруха не в клозетах, а в головах." © Ф.Ф. Преображенский (М.Булгаков, "Собачье сердце")
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0384 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.