Помогите разобраться с окнами.
Суть проблемы:
не получается что либо сделать с созданными окнами, даже вывести простой текст
Подскажите что я делаю не так.
Заранее благодарен.
Вот пример моего Makefile и моей программы
===Makefile===
#Makefile for the program window
OBJECTS= window.o
PROGRAMS= window
window: $(OBJECTS)
g++ $(CFLAGS) -o $(PROGRAMS) $(OBJECTS) -lncurses -lm
# Clean up build products.
clean:
rm -f *.o $(PROGRAMS)
===window.cpp===
#include <ncurses.h>
int main() {
if(!initscr()){
printf("ERROR");
return 1;
}
else{
addstr("SCREEN is work\n");//выводится это сообщение
getch();
}
refresh();
noecho();
cbreak();
WINDOW* mywin;
mywin=newwin(0,0,0,0);
for(int i=0; i<COLS; i++){
waddch(mywin,'#');//хочу вывести в окно mywin знаки #
}//но они не выводятся
getch();
endwin();
return 0;
}
>Помогите разобраться с окнами.
>Суть проблемы:
>не получается что либо сделать с созданными окнами, даже вывести простой текст
>
>Подскажите что я делаю не так.
>Заранее благодарен.
>Вот пример моего Makefile и моей программы
>===Makefile===
>#Makefile for the program window
>OBJECTS= window.o
>PROGRAMS= window
>window: $(OBJECTS)
>g++ $(CFLAGS) -o $(PROGRAMS) $(OBJECTS) -lncurses -lm
># Clean up build products.
>clean:
>rm -f *.o $(PROGRAMS)
>===window.cpp===
>#include <ncurses.h>
>int main() {
>
> if(!initscr()){
>printf("ERROR");
>return 1;
> }
> else{
>addstr("SCREEN is work\n");//выводится это сообщение
>getch();
> }
> refresh();
> noecho();
> cbreak();
> WINDOW* mywin;
> mywin=newwin(0,0,0,0);
>
> for(int i=0; i<COLS; i++){
>waddch(mywin,'#');//хочу вывести в окно mywin знаки #
> }//но они не выводятся
> getch();
> endwin();
> return 0;
>}if(!initscr()){ - означает true если initscr возвращает ноль. А при ошибке initscr возвращает NULL, иначе - указатель. В мане ведь написано.
Поэтому эта строчка должна выглядеть так - if (initscr() == NULL) {Удачи!
А символы не выводяться потому что, после вывода сивмовлов нужно обновлять окно - wrefresh(mywin);Плюс размер окошка нужно сделать больше чем 0х0 :) ХОтя бы newwin(LINES, COLS, 0, 0);
wrefresh(mywin); -- помогло, большое спасибо
newwin(0,0, 0, 0); -- это создается окно размером в весь экран
>newwin(0,0, 0, 0); -- это создается окно размером в весь экран
Да, точно, уже увидел. My bad :)