2009-11-28 26 views
12

Bir ncurses uygulamasının uç genişliği & yüksekliğini nasıl bulabilirim?ncurses klemens boyutu

inanıyorum
+0

@DylanJ, özellikle cevabı kabul ettikten sonra cevabınızı sormaya gerek yok. – paxdiablo

cevap

13
+1

Ayrıca: Bazı işletim sistemlerinin, terminal yeniden boyutlandırıldığında işleminizin aldığı SIGWINCH özelliği olduğunu unutmayın ... – asveikau

+0

'initscr()' ekranı temizler. Terminal boyutunu alabilecek ve ekranı temizlemeyecek bir yol var mı? – jiandingzhe

+0

Bunun doğru olduğundan emin değilsiniz çünkü 'y' &' x' işaretçiler değildir ve bu nedenle işlev bunlara bir şey kopyalamayacaktır. Ve 'mkssoftware.com 'dan:' 'getbegyx() ve getmaxyx() makroları, belirtilen pencerenin geçerli başlangıç ​​koordinatlarını ve boyutunu depolar.'" –

0

Ne SCR_H ve SCR_W kullanmaya ne dersiniz?

0

ben bu kodu kullanıyorum:

struct winsize size; 
if (ioctl(0, TIOCGWINSZ, (char *) &size) < 0) 
    printf("TIOCGWINSZ error"); 
printf("%d rows, %d columns\n", size.ws_row, size.ws_col); 
+0

Bu çok ncurses'ish değil. – einpoklum

3

ncurses'in uygulamaları normalde SIGWINCH işleyebilir ve Screensize ait sistemin nosyonunu elde etmek TIOCGWINSZ ile ioctl kullanın. Bu ortam değişkenleri LINES ve COLUMNS tarafından geçersiz kılınabilir (bkz. use_env).

göz önüne alındığında, bu LINES ve COLS (a SIGWINCH yanıt olarak) wgetch döner KEY_RESIZEstdscr büyüklüğü (bütün bir terminali temsil eden bir standart elemenin) vermek üzere bir yan etki olarak güncellenir ncurses'in global değişkenler.

getmaxx, getmaxy ve getmaxyx öğelerini kullanarak bir pencerenin x ve y koordinatları için sınırlardan birini veya her ikisini birden edinebilirsiniz. Sadece son standart (ve taşınabilir).

fazla okuma:

0

değişkenler COLS, HATLARI initscr sonra ekran boyutlarına başlatılır().

Kaynak: NCURSES Programming HOWTO

Onlar olsa boyutlandırmak güncellenen almak emin değilim.