我一直在尝试在ncurses中进行简单的线条绘制(例如盒子),但是我无法让它工作。我正在尝试打印扩展的ASCII字符,如下所示:http://www.theasciicode.com.ar/ascii-table-codes/ascii-codes-219.html 我已经看过wchar_t的一些提及,但它显然需要ncursesw,我无法弄清楚如何包含(我知道它已安装)
我在OS X 10.6.2和GCC 4.2下使用XCode。
有什么想法吗?
答案 0 :(得分:4)
您不需要wchar_t。 “扩展”代码(c.1985)小于255.例如,要绘制双线框的左下角,请使用代码200十进制,310八进制(“\ 310”)或0xc8(“\ xc8 “)。
这些角色需要您正在使用的终端模拟器的支持,但它应该可以正常工作。
修改强>
对于旧的诅咒,我对7位与8位模式有一个模糊的记忆,但我在FSF ncurses 1.190(2008/12/20)中找不到它,也被认为是v5.7.3.20090207我在Linux上。 man page for curs_addch提到了线条绘制字符的符号常量,所以也许你应该使用那些而不是文字的线条绘制字符:
addch (ACS_ULCORNER); // upper left corner
for (int j = 0; j < boxwidth-2; ++j)
addch (ACS_HLINE);
addch (ACS_URCORNER); // upper right
...
答案 1 :(得分:0)
void boxAround( int y, int x, int h, int w ) {
move( y, x );
addch (ACS_ULCORNER); // upper left corner
int j;
for (j = 0; j < w; ++j)
addch (ACS_HLINE);
addch (ACS_URCORNER); // upper right
for( j = 0; j < h; ++j ) {
move( y+1+j, x );
addch (ACS_VLINE);
move( y+1+j, x+w+1 );
addch (ACS_VLINE);
}
move( y+h+1,x );
addch (ACS_LLCORNER); // lower left corner
for (j = 0; j < w; ++j)
addch (ACS_HLINE);
addch (ACS_LRCORNER); // lower right
}