c++ - descargar - ncurses ubuntu
Envoltorios de C++ para ncurses? (5)
Prueba este proyecto de forge de origen. Es un kit de desarrollo de NCurses para C ++
¿Alguien puede recomendar un contenedor de C ++ para ncurses?
Hace algunos años escribí el mío ... Lo hice porque una biblioteca compatible con ncurses se instaló en Linux, pero no en Win32. (Podría usar PDCurses, pero en ese momento no pude evitar que PDC_breakout () detuviera una operación de actualización () sin abrir el código fuente).
Este contenedor fue escrito dentro de 7 días, como parte de un desarrollo rápido. Como tal, tiene algunas dependencias (extraíbles) en tipos de datos no de entrada / salida específicos de un programa, pero se pueden eliminar de forma segura.
Básicamente, tengo dos funciones principales: inicialización, que llama a todas las funciones de inicialización de curses y definiciones de color que no planeo modificar más tarde, y la función de actualización, que transfiere el buffer de visualización "interno" a la salida.
En general, puede sentirse más cómodo al crear en una tarjeta de índice o en una hoja de trucos que contenga " initscr (); cbreak (); noecho (); move (y, x); addch (ch); endwin (); ", pero si desea Para usar mi envoltorio, puede enviarme un mensaje o descargarlo desde aquí , siempre que cumpla con la licencia de Creative Commons.
ncurses en sí mismo incluye un conjunto de enlaces C ++. No sé si alguna de las principales distribuciones incluye los enlaces C ++, pero si obtiene el origen ncurses , los encontrará en el directorio c ++.
No sé si los recomendaría necesariamente, pero probablemente sean los mejores enlaces de C ++ e incluye enlaces para las extensiones de Formularios, Panel y Menú. Son un poco rudos en los bordes y no hay mucha documentación.
Hace un par de años, cuando lo necesitaba, revisé los diversos archivos de maldiciones que proporcionan las maldiciones de C ++. Aunque funcionaron bien, me decepcionó; este nuevo código inyecta aún más ''macros malditos''. No reconocí ningún intento de bloquear las macros (sin espacio de nombres, solo unas pocas clases). Supongo que ese no era su objetivo.
Finalmente decidí que estas macros también pisotearon demasiados símbolos útiles, del modo que solo las macros pueden hacer. Terminé refactorizando mi código para minimizar la exposición a estas macros.
Esencialmente, moví varios de mis métodos de aplicaciones que muestran cosas a 2 archivos nuevos. Esta refactorización también creó algunos métodos nuevos y pequeños, que se agregaron a los 2 nuevos archivos de ''visualización''. (11 archivos expandidos a 13)
Como digo, funcionan bien, mi código no se vio afectado por el cambio, los comentarios en cursesw.h sugieren que cambie macros a líneas, y encuentro algunas clases allí.
cursesf.h tiene clases utilizadas en otros lugares como cursesm.h (para el menú) y cursesw.h (para windows), curseslk.h (para el conjunto de teclas soft label), todas las cosas que aún no he usado.
No me gustó cursesapp.h - tal vez esto es algo de Windows?
¿Puedo recomendar esto? Bueno, prefiero este código a las maldiciones anteriores, aunque refactorice para mantener las macros contenidas.
¿Quizás enrolle sus propios envoltorios de c ++?
... He creado algunas envolturas de c ++ para algunos ncurses y funciones y objetos de CDK.
Sin embargo, solo creé wrappers para las funciones y estructuras como soporte necesario para mi pequeño proyecto, que usa CDK y ncurses para su GUI. Sin embargo, es posible que le brinden ideas para crear sus propios envoltorios de c ++ de las llamadas CDK y ncurses que necesita.
Básicamente los usé para evitar fugas de memoria al hacer que los destructores de c ++ eliminen cualquier cadena de caracteres creada dinámicamente, o que usen std::string
lugar de cadenas de caracteres char*
, y cosas así.
Aquí hay un ejemplo muy modesto:
class RXL_ncurses {
public:
static void draw(WINDOW * pWin, int y, int x, std::string lineOfText);
};
void RXL_ncurses::draw(WINDOW * pWin, int y, int x, std::string lineOfText) {
//
// Draw a std::string into the WINDOW*, starting at y,x
//
chtype letter;
unsigned int i;
unsigned int xPos;
unsigned int yPos;
for(i = 0; i < lineOfText.size(); i++) {
letter = (chtype) lineOfText[i];
xPos = i + x;
yPos = y;
mvwaddch(pWin, yPos, xPos, letter);
}
}
http://mrflash818.geophile.net/software/nc_834v5010generator/