Jak zrobić w C++ menu takie jak przy wcisnieciu F8 podczas uruchamiania Windowsa - z polami wyboru i podswietlanymi paskami - w konsoli DOS !!
Dzieki
0
0
np. tak:
#include <iostream>
#include <windows.h>
using namespace std;
int menu(char ** teksty, int ile);
int main()
{
char * opcje1[] = {"Opcja 1", "Opcja 2", "Opcja 3", "Wyjscie"};
char * opcje2[] = {"Opcja 1234", "Powrot"};
while (1)
switch ( menu(opcje1, 4) )
{
case 4:
return 0;
case 2:
while (menu(opcje2, 2) != 2)
Beep(1000, 200);
break;
default:
Beep(1000, 200);
}
}
int menu(char ** teksty, int ile)
{
static HANDLE h_we = GetStdHandle(STD_INPUT_HANDLE),
h_wy = GetStdHandle(STD_OUTPUT_HANDLE);
int wybor = 1;
CONSOLE_CURSOR_INFO cci = {0};
GetConsoleCursorInfo(h_wy, &cci);
cci.bVisible = false;
SetConsoleCursorInfo(h_wy, &cci);
COORD p = {0};
DWORD k;
FillConsoleOutputAttribute(h_wy, 0x07, 80 * 25, p, &k);
FillConsoleOutputCharacter(h_wy, 0x20, 80 * 25, p, &k);
while(1)
{
INPUT_RECORD ipr = {0};
DWORD p = 0;
for (int i = 0; i < ile; i++)
{
COORD poz = {2, 5 + i};
DWORD p;
SetConsoleCursorPosition(h_wy, poz);
SetConsoleTextAttribute(h_wy, (wybor == i + 1) ? 0x80 : 0x08);
cout << teksty[i];
}
if (ReadConsoleInput(h_we, &ipr, 1, &p) && p == 1 &&
ipr.EventType == KEY_EVENT && ipr.Event.KeyEvent.bKeyDown)
switch (ipr.Event.KeyEvent.wVirtualKeyCode)
{
case VK_UP:
wybor = (wybor == 1) ? ile : wybor - 1;
break;
case VK_DOWN:
wybor = (wybor == ile) ? 1 : wybor + 1;
break;
case VK_RETURN:
cci.bVisible = true;
SetConsoleCursorInfo(h_wy, &cci);
return wybor;
}
}
}
0
jaaaa ..........
Zarejestruj się i dołącz do największej społeczności programistów w Polsce.
Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.