TUI generation library for C on Windows.
This repository has been archived on 2021-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Go to file
Kai S. K. Engelbart 0138aa5e5f Removed precompiled header pch.h and framework.h 2020-01-30 08:57:03 +01:00
.github/ISSUE_TEMPLATE Update issue templates 2020-01-14 08:23:21 +01:00
.gitignore Modified border logic to support user-defined border structures 2020-01-09 09:24:13 +01:00
LICENSE Initial commit 2019-12-19 14:43:20 +01:00
MenuLib.sln Removed dependency to local testing project 2019-12-21 20:19:42 +01:00
MenuLib.vcxproj Removed precompiled header pch.h and framework.h 2020-01-30 08:57:03 +01:00
MenuLib.vcxproj.filters Removed precompiled header pch.h and framework.h 2020-01-30 08:57:03 +01:00
MenuLib.vcxproj.user Added existing project 2019-12-19 14:51:51 +01:00
README.md Update README.md 2020-01-16 08:07:43 +01:00
menu.c Removed precompiled header pch.h and framework.h 2020-01-30 08:57:03 +01:00
menu.h Removed precompiled header pch.h and framework.h 2020-01-30 08:57:03 +01:00

README.md

MenuLib

CUI generation library for C on Windows

Einbindung in eine Visual Studio Projektmappe:

Repository klonen und das Projekt "MenuLib" zur Projektmappe hinzufügen:

Rechtsklick auf Projektmappe -> Hinzufügen -> Vorhandenes Projekt...

Verweis auf die Bibliothek im Aufruferprojekt anlegen:

Rechtsklick auf Aufruferprojekt -> Hinzufügen -> Verweis... Haken bei "MenuLib" setzen.

Zusätzliches Includeverzeichnis hinzufügen:

Rechtsklick auf Aufruferprojekt -> Eigenschaften -> C/C++ -> Allgemein -> Zusätzliche Includeverzeichnisse -> Bearbeiten...

Ordner, der "menu.h" enthält, auswählen

Diese Einstellung muss für die Konfiguration erfolgen, die später compiliert werden soll.

Headerdatei einbinden:

Zeile #include "menu.h" zur Quelldatei hinzufügen

Anwendungsbeispiel

struct MenuItem items[] = {
	{"Euklidscher Algorithmus",	'1', (void*)&euklid},	// String = Name des Menüpunktes
	{"Gerstenkorn",			'2', (void*)&gerste},	// Char = Taste zum Aufrufen
	{"Osterdatum ausrechnen",	'3', (void*)&ostern},	// (void*)&MethodenName = Methode, die aufgerufen wird
	{"ASCII Tabelle",		'4', (void*)&ascii},	// Methode MUSS nicht vom Typ void sein! 
	{"DB-Pruefziffer",		'5', (void*)&db},	// (void*)& MUSS immer davor stehen!
	{"Modulo 11",			'6', (void*)&mod11},
	{"BLANK",			NULL, (void*)NULL},	// Fügt einen leere Zeile hinzu -> Gliederung
	{"Namen TEST",			'7', (void*)&namen},
	{"BLANK",			NULL, (void*)NULL},
	{"Exit",			'q', (void*)&exit}	// exit beendet das Programm
};

struct MenuItem stringsEX[] = {
	{"strcat()",	'1', (void*)&strcatEx},
	{"strlen()",	'2', (void*)&strlenEx},
	{"strncpy()",	'3', (void*)&strncpyEx},
	{"strchr()",	'4', (void*)&strchrEx},
	{"strstr()",	'5', (void*)&strstrEx},
	{"strtok()",	'6', (void*)&strtokEx},
	{"BLANK",	NULL, (void*)NULL},
	{"Ersetzen",	'7', (void*)&replace}
};

struct MenuPage pages[] = {
	{items, sizeof(items) / sizeof(struct MenuItem), "Vorlesungsaufgaben", true, true, &SOLID},
	{stringsEX, sizeof(stringsEX) / sizeof(struct MenuItem), "String - Beispiele", true, true, &SOLID}
	
	/*
	 * 1. Argument: Vorher angelegtes struct; Enthält alle Items der Seite
	 * 2. Argument: Anzahl der Elemente der Seite; Einfach so lassen
	 * 3. Argument: Titel der Seite
	 * 4. Argument: Menü im Loop; Nach beenden der Methode wieder Menü aufrufen	
 	 * 5. Argument: Pause nach dem Ausführen der Methode; Ausgaben lesbar
	 * 6. Argument: Style des Menüs: Standardmäßig wird DEFAULT, MODERN, SOLID und NO_BORDER unterstützt
	 */
};
show_menu(pages, sizeof(pages) / sizeof(struct MenuPage), true);

/* 
 * 1. Argument: Vorher angelegtes struct; Enthält alle Seiten des Menüs
 * 2. Argument: Anzahl der Seiten; Einfach so lassen
 * 3. Argument: Gesamtes Menü in einer unendlich-Schleife
 */

Border hinzufügen

Eigene Border-Styles können wie folgt hinzugefügt werden:

const struct MenuBorder NAME = {	 
 'a', 	// Char für den rechten und linken Rand
 'b', 	// Char für den oberen und unteren Rand
 'c', 	// Char für die linke obere Ecke
 'd', 	// Char für die rechte obere Ecke
 'e', 	// Char für die linke untere Ecke
 'f', 	// Char für die rechte untere Ecke
 'g', 	// Char zwischen Border und Titel - links
 'h'	// Char zwischen Border und Titel - rechts
}

Neue Border am Besten direkt unter den #include Anweisungen einfügen. Die neue Border kann über den angegebenen Namen, wie im obigen Beispiel erläutert, verwendet werden.