14.03.2014, 01:10. Просмотров 955. Ответов 2
Доброго всем времени суток.Пожалуйста подскажите как мне справиться с моей проблемой.Нужно написать функцию выбора пунктов меню стрелками "вверх" "вниз".Вот код
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
| #include <windows.h>
#include <stdio.h>
#include <iostream>
#include <stdlib.h>
#include <conio.h>
using namespace std;
void PrintglMenu(int &);
int funk (int,int &);
int main()
{
system("chcp 1251 > nul");
////////////////////////////////////////////////////////////////////////
int n = 5;// индекс последнего пункта меню
int c;
c = funk (n,c);
//PrintglMenu(c);
while(TRUE)
{
//funk (nLast,c);
//c = funk (nLast,c);
switch (c)
{
case 1:
cout <<" Выбран первый пункт меню.\n";
break;
case 2:
cout <<" Выбран второй пункт меню.\n";
break;
case 3:
cout <<" Выбран третий пункт меню.\n";
break;
case 4:
cout <<" Выбран четвертый пункт меню.\n";
break;
case 5:
cout <<" Выбран пятый пункт меню.\n";
break;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
//getch();
return 0;
}
int funk (int nMenu,int &input)
{
input = 1;//устанавливаем на первый пункт меню
PrintglMenu(input);
while(TRUE)//бесконечный цикл
{
if(GetAsyncKeyState(VK_UP))
{
keybd_event(VK_UP, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
0 < input - 1 ? input = input - 1 : input = nMenu;
PrintglMenu(input);
}
if(GetAsyncKeyState(VK_DOWN))
{
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
input < nMenu ? input = input + 1 : input = 1;
PrintglMenu(input);
}
if(GetAsyncKeyState(VK_RETURN)) //VK_RETURN = 13;
{
keybd_event(VK_DOWN, 0, KEYEVENTF_KEYUP, 0);//Отжимаем кнопку
Sleep(200);//иначе не работает с вложенными меню
PrintglMenu(input);
//Sleep(200);
//cout <<input;
return input;
}
}
//return input;
}
void PrintglMenu(int &b)
{
system("cls");
cout << " Просто двигайте стрелку по пунктам меню и на выбранном жмите Enter.Удачи! "<<"\n";
cout << "\t\t\t Ваш выбор: " << "\n\n";
printf("\t%s Первый пункт меню. \n",b == 1 ? "->" : " ");
printf("\t%s Второй пункт меню. \n",b == 2 ? "->" : " ");
printf("\t%s Третий пункт меню. \n",b == 3 ? "->" : " ");
printf("\t%s Четвертый пункт меню. \n",b == 4 ? "->" : " ");
printf("\t%s Пятый пункт меню. \n",b == 5 ? "->" : " ");
} |
|
Он рабочий,но не отдельной функцией.
А при вызове функции он либо циклится в этом варианте,
либо кратковременно показывает результат и возвращается в начало,
закомментированые строки.
Подскажите что я не так делаю.
Пробовал много различных вариантов,но без успешно.
Буду рад любой подсказке.Обращаться просто больше не куда.