Помощь - Поиск - Пользователи - Календарь
Полная версия: Курсор
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
shadoof
Есть задача, но по ходу её выполнения в активном окне маргает курсор, как это лечить? <_<
volvo
Лечить "отключением" курсора. Т.к. само мигание курсора реализовано аппаратно, и отключить его нельзя, то будем просто менять размеры курсора, отображаемого на экране:
procedure SetCursorSize(cStart, cEnd: byte); assembler;
asm
  mov ah, 1
  mov ch, cStart
  mov cl, cEnd
  int 10h
end

{ Установить нормальный курсор }
procedure SetNormalCursor;
var start_end: word;
begin
  if LastMode > Font8x8 then start_end := $0507
  else
    if LastMode = Mono then start_end := $0b0c
    else start_end := $0607;
  SetCursorSize(hi(start_end), lo(start_end));
end;

{ Установить "блочный" курсор (как в режиме OverWrite) }
procedure SetBlockCursor;
var c_end: byte;
begin
  if (LastMode > font8x8) or (LastMode <> Mono)
  then c_end := 7 else c_end := 13;
  SetCursorSize(0, c_end);
end;

{ Отключить курсор }
procedure SetNoCursor;
begin
  SetCursorSize(32, 0);
end;


И теперь:
SetNoCursor; { в первой строке программы }
...
SetNormalCursor; { в последней строке }
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.