Bir ncurses uygulamasının uç genişliği & yüksekliğini nasıl bulabilirim?ncurses klemens boyutu
inanıyorumcevap
void getmaxyx(WINDOW *win, int y, int x);
... ayrıca
, bu yardımcı olabilir
...Ayrıca: Bazı işletim sistemlerinin, terminal yeniden boyutlandırıldığında işleminizin aldığı SIGWINCH özelliği olduğunu unutmayın ... – asveikau
'initscr()' ekranı temizler. Terminal boyutunu alabilecek ve ekranı temizlemeyecek bir yol var mı? – jiandingzhe
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.'" –
Ne SCR_H
ve SCR_W
kullanmaya ne dersiniz?
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);
Bu çok ncurses'ish değil. – einpoklum
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_RESIZE
stdscr
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:
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.
@DylanJ, özellikle cevabı kabul ettikten sonra cevabınızı sormaya gerek yok. – paxdiablo