2015-12-30 88 views
0

ncursesmenu擴展名似乎堅持所有菜單項具有相同的寬度。這意味着,如果一個菜單項非常寬,而其他菜單項很窄,則會浪費大量空間,並且屏幕寬度不足。我想到的帶有ncurses的多行菜單項?

一個解決方法是使用set_menu_spacing功能的長菜單項分成幾行:

set_menu_spacing(myMenu, 1, 2, 1); // all menu items will get two rows 

不過,我不知道如何讓我的廣項目使用這些兩行。我試圖將\n插入到表示該項目的字符串中,但導致隱藏所有以名稱爲\n的項目開始的項目。我應該怎麼做才能讓多排物品起作用?

回答

1

簡答:不,你不能用現有的庫來做到這一點。

注意set_menu_spacing是一個ncurses 擴展,庫不檢查項目名稱或描述中的換行符。

ncurses菜單(和表單和麪板)庫是爲了與System V's menu,窗體,面板庫(本質上是SCO和Solaris,因爲AIX和HPUX沒有這些庫)兼容而編寫的。 Solaris 10的快速檢查表明,它並不期望嵌入換行符。然而,它可能是一個有用的擴展,因爲沒有有用的程序會破壞,如果修改ncurses在這種情況下做一些有用的事情。

+0

那麼,該參數只適用於間距,額外的行不能是非空的,是正確的?當只有一個產品的名稱很長時,是否有其他方法可以使菜單更緊湊? – AlwaysLearning

+0

我看不到一個方法,閱讀'm_post.c'中的代碼 –