gpt4 book ai didi

c - Ncurses 在 Ubuntu Mate 上不显示任何内容

转载 作者:太空宇宙 更新时间:2023-11-04 01:25:18 25 4
gpt4 key购买 nike

我正在尝试进入 ncurses 库,但似乎无论我编写什么代码,我都会在 ncurses 中得到这个: screenshot

使用此代码:

#include <stdio.h>
#include <ncurses.h>

void main()
{
WINDOW *vin;
initscr();
start_color();
init_pair(1,COLOR_YELLOW,COLOR_BLUE);
init_pair(2,COLOR_BLUE,COLOR_YELLOW);
init_pair(3,COLOR_BLUE,COLOR_WHITE);
vin=newwin(12,40,13,0);
wmove(vin,0,5);
wprintw(vin,"Hello, World.");
wbkgd(vin,COLOR_PAIR(1));
wrefresh(vin);
getch();
delwin(vin);
endwin();
}

但是,再一次,无论我用这个编译什么代码,这似乎都是一个问题:

gcc main.c -lncurses

这是 Ubuntu 版本的 ncurses 的错误吗?还是我忘记了图书馆?

最佳答案

您需要调用 wgetch(vin) 而不是 getch()。 (而且,由于 wgetch 将自动调用 wrefresh,您可以删除前面的 wrefresh(vin)。)

ncurses 不允许您使用重叠窗口。或者,也许更好地说,您可以使用重叠窗口,但您有责任以正确的顺序显示它们。

所有非 w 函数——包括 getch——都在主窗口上工作(由 initscr 返回),它包括整个屏幕。如果您刷新主窗口,您将覆盖任何其他窗口。因此,您需要确保在主窗口刷新后其他窗口也随之刷新。如果使用多个窗口,一般最好避免使用主窗口;只需在开始时刷新一次,然后就不用管它了。

因为 (w)getch 会自动刷新它所应用的任何窗口,所以对 getch() 的调用隐式调用了 refresh();因为那是在调用 wrefresh(vin) 之后发生的,所以您的子窗口被覆盖了。

关于c - Ncurses 在 Ubuntu Mate 上不显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32554801/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com