C++ Auswahl Stil?

Hallo!
Ich hab da mal eine Frage bezüglich Menüs in C++ Konsolen:
Bisher hab ich immer Menü's al? 1. 2. 3. .... usw und dann mit cin eine Zahl eingeben gemacht.
Jetzt hab ich ein Problem mit einer Festplatte gehabt und mir ein Testtool runtergeladen. Das Tool sieht mir schwer nach C++ Konsole aus und hat ein sehr schönes Auswahlmenü, in dem man mit den Pfeiltasten navigieren kann und der jeweilige Eintrag dann hinterlegt wird.
Das sieht viel besser und professioneller aus und verhindert auch Fehleingaben.
(eine Fehleingabe währe wenn die Variable integer ist und durch cin mit einem Buchstaben belegt wird. Das mag C++ garnicht...)
Ihr könnt euch das Programm am besten mal ansehen. Es ist Freeware und nur 1,4MB groß. Braucht auch nicht installiert zu werden, einfach mal im Ordner "win" die "testdisk_win.exe" starten und das Menü bewundern. =)
http://www.cgsecurity.org/testdisk-6.5.win.zip
Weis jemand wie man sowas umsetzt?
Würd mich freuen :rolleyes:
 
ich seh nur in win kopieren und die *.exe starten sry das ich da bissl misstrauisch werd^^

-->
virustotal ergebnis:







ich test das net aus sry hab da schlechte erfahrungen :)
 
*hust*
ähm, das Programm scannt grad meine Festplatte. Mit sicherheit fällt die ein paar scannern auf, weil es ja auch mit den Festplatten arbeitet, das Dateisystem neu strukturieren und alle dateien im Quickformat löschen kann.
Aber naja, musst du ja wissen. Ich befürchte nur, dass du sonst nicht aus meiner Erklärung schlau wirst, ich kenn mich doch ^^
Ich lade evtl mal ein paar bilder hoch, wenn das tool fertig ist, atm gehts nicht. Sorry.

edit:
Hat sich erledigt.
Hab da nen Lösungsansatz gefunden: (hier: ohne includes)
Code:
HANDLE  hStdout;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE); 
SetConsoleTextAttribute(hStdout, FOREGROUND_GREEN | FOREGROUND_BLUE);

edit:
Habe eine sehr elegante Lösung gefunden, in der ich die Menüeinträge in einem Vector speichere:
(man braucht dafür aber die console.h, bei mir war sie nicht dabei!)
Code:
#include "stdafx.h"
#include <iostream>
#include <vector>
#include <string>
using namespace std;
#include "Console.h"
#include <time.h>
namespace con = JadedHoboConsole;
#include <conio.h>
vector<string> vec_menu;
int count=0,menu=1,ch,selected=0;

inline void ldm()
{
if (vec_menu.size()>0)
	{
	for (count=0;vec_menu.size()+2>count;count=count+1)
		{
		vec_menu.pop_back();
		}
	}
if (ch==72) {selected=selected-1;};
if (ch==80) {selected=selected+1;};

if (menu==1)
	{
	vec_menu.push_back("[PUNKT]\n");
	vec_menu.push_back("[KOMMA]\n");
	vec_menu.push_back("[MINUS]\n");
	if (selected<0){selected=2;};
	if (selected>2){selected=0;};
	}

for (count=0;vec_menu.size()>count;count=count+1)
	{
	if (count==selected)
		{
		cout << con::bg_white << con::fg_black << vec_menu[count] 
			<< con::fg_white << con::bg_black;
		}
	if (count!=selected)
		{cout << vec_menu[count];
		}
	}
}

int main()
{
	cout << con::fg_white;
	ldm();
   do
   {
      ch = _getch();
	  if (ch !=224)
		{
		Sleep(200);
		system("cls");
		ldm();
		}
	  //cout << "\n" << ch;
   } while( ch != 13 );

   _putch( ch );
   _putch( '\r' );
   _putch( '\n' );
}
 
Zurück
Oben