Я пишу простой текстовый редактор в C, на cygwin, используя проклятия, теперь у меня есть экран, полный строки текста, некоторые строки являются частичными линиями, теперь, когда я перемещаю курсор вверх или вниз по одной строке Я хочу, чтобы он переместился в непустую позицию, если предыдущая/следующая строка является частичной линией, как это сделать? любая помощь будет принята с благодарностью. Благодарю.проклятия, перемещающие курсор в непустую позицию
ответ
curses (и ncurses и PDCurses) поддерживают функцию winch
, которая позволяет приложению читать символ, хранящийся в текущей позиции курсора. Аналогично, все версии проклятий могут и do представляют несколько символов как несколько ячеек. Поэтому сохранение длины строк и попытка использовать их в качестве номеров столбцов на экране могут привести к неудовлетворительным результатам.
В качестве примера, вы могли бы сделать что-то вроде этого (для простоты, все в линии и только для стандартного экрана stdscr
— реальных программ на самом деле не так):
int y, x, xc;
bool partial = TRUE;
getyx(stdscr, y, x);
if (y > 0) {
y--;
for (xc = x; xc < COLS; ++xc) {
move(y, xc);
if ((inch() & A_CHARTEXT) != ' ') {
partial = FALSE;
break; /* found a nonblank cell at or beyond current x */
}
}
if (partial) {
for (xc = x; xc >= 0; --xc) {
move(y, xc);
if ((inch() & A_CHARTEXT) != ' ') {
break; /* found the last nonblank cell on the line */
}
}
}
}
Отлично, но что, если последний символ/символы в частичной строке - это пробел/пробелы? –
Пример кода сначала проверяется (начиная с текущей позиции), если есть незаблокированные, что оставляет X-ординату неизменной. Если не было никаких непустых символов, то он сканирует влево, и на каждом тесте он перемещает текущую позицию в тестируемую ячейку. Если он не находит неблокированные, это оставляет курсор в левой части экрана. –
- 1. C - Проклятия, удаляю мигающий курсор из игры
- 2. Получить курсор-позицию в contenteditable DIV
- 3. llegalStateException: не удалось переместить курсор в позицию
- 4. Роботы, перемещающие коробки
- 5. Мигает строка в приложении проклятия
- 6. Как добавить проклятия в cmake?
- 7. многопроцессорность висит проклятия в python
- 8. Перемещающие переменные API Карт Google
- 9. Проклятия, конец строки сломанной
- 10. Python Проклятия initscr Ошибка
- 11. Использовать проклятия с colorama
- 12. Имена, перемещающие набор классов в node.js
- 13. Невозможно переместить курсор в позицию 0 в Titanium.UI.TextArea
- 14. Как перенести курсор в первую позицию в последней строке RichTextBox?
- 15. Как перебирать непустую строку?
- 16. Скопировать последнюю непустую ячейку
- 17. java.lang.IllegalStateException: не удалось переместить курсор в позицию n
- 18. Как поместить курсор в позицию с помощью jquery?
- 19. Переименовать непустую папку
- 20. Перезапустите непустую функцию
- 21. Проверка пустого файла возвращает как непустую
- 22. Проклятия для PHP на Windows
- 23. Функция getmouse проклятия на Python?
- 24. Как определить позицию экрана найденного текста на веб-странице, чтобы установить курсор мыши в эту позицию?
- 25. Проклятия, получающие клавиши со стрелками
- 26. Как проклятия сохраняют содержимое экрана?
- 27. Нарисуйте простую коробку, используя проклятия
- 28. Контейнеры Windows Server, перемещающие хост/контейнер ОС
- 29. Регулярные выражения, перемещающие подстроки перед определенным символом
- 30. Пользовательские элементы ListView, перемещающие список влево?
Что вы пытаетесь ? Есть много * возможных путей. Прямая идея заключалась бы в том, чтобы хранить длины строк вместе с вашим текстовым буфером. –
Относительная сторона примечания: для приложений консоли Windows вы можете заглянуть в [PDCurses] (http://pdcurses.sourceforge.net/) и скомпилировать их с помощью 'mingw'. Таким образом, вы получите исполняемый файл, независимый от всей среды выполнения «cygwin». –
На самом деле я думал об этом несколько дней и не нашел решения. обыскали в Интернете и не нашли ответа на него. –