Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Beraldo

Barra de rolagem com NCURSES

Recommended Posts

Tentei fazer com que a barra de rolagem do terminal funcionasse na NCURSES. Não obtive sucesso. Acho que não dá para faazer isso, mesmo. :(

 

Então tentei usar as funções de rolagem da própria NCURSES. A fim de testes, fiz isyto:

 

#include <curses.h>

int main()
{
	WINDOW *win;
	int i = 0, key;
	
	win = initscr();
	noecho();
	cbreak();
	keypad(win, TRUE);
	scrollok(win, TRUE);
	
	while ( (key = getch()) )
	{
		switch ( key )
		{
			case KEY_UP:
				scrl(-1);
				break;
			case KEY_DOWN:
				scrl(1);
				break;
			default:
				printw("%d................................\n", i++);
		}
		}
	
	endwin();
	
	return 0;
}

Se eu usar as setas UP e DOWN, a rolagem ocorre, mas o texto que estava lá (e foi "rolada" para além dos limites do terminal) somem.

 

Há como fazer essa rolagem mostrar o conteúdo que estava lá? Algo como os comandos more ou less. É possível?

Compartilhar este post


Link para o post
Compartilhar em outros sites

http://opengroup.org/onlinepubs/007908775/xcurses/intov.html

 

"If scrolling is enabled, a scroll occurs. The contents of the first line of the window are lost."

 

A não ser que você use alocação dinâmica (tanto p/ linha 0 quanto pra ultima linha visivel) e imprima você mesmo a linha desaparecida, não.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Beraldo, faça dois char** e implemente uma pilha. Acho que dá pra você usar scanf p/ ler o conteudo da linha antes de fazer scrl e armazenar isso no char**.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.