|
|
|
| Помогите, пожалуйста, в программе нужно задать вызов меню по функциональным клавишам, вроде сделала, но при запуске он их не распознаёт помогите в чём ошибка
вот кусок проги:
//Главное меню
void menu()
{
int n;
while(1)
{
printf("\n faily -F1");
printf("\n dobavlenie -F2");
printf("\n udalenie -F3");
printf("\n v_po_atr -F4");
printf("\n sort -F5");
printf("\n udal_vse -F6");
printf("\n prosm -F7");
printf("\n redaktir -F8");
printf("\n vyhod -F10 \n");
scanf("%d",&n);
clear_screen();
n=getch();
switch (n)
{
case 68: return;
case 59: filework();break;
case 60: dobavlenie();prosmotr_zapisey();break;
case 61: udalenie();prosmotr_zapisey();break;
case 62: vyvod_po_atributu();prosmotr_zapisey(); break;
case 63: sortirovka();prosmotr_zapisey(); break;
case 64:fatal_delete();break;
case 65:prosmotr_zapisey();break;
case 66:update();break;
default: printf("\n Nazhata ne ta klavisha!!!");
}
}
} |
| |
|
|
|
|
|
|
|
для: lis'ka
(15.01.2009 в 20:18)
| | И не распознаете при таком коде. Пытаетесь использовать специальные клавиши, а считываете символьные.
Вот что говорит MSDN по этому поводу:
When reading a function key or an arrow key, each function must be called twice; the first call
returns 0 or 0xE0, and the second call returns the actual key code.
These functions lock the calling thread and are therefore thread-safe. For non-locking versions
|
Т.е. отсюда следует, что надо сначала проверить на 0 или 0xE0, и если так, то вызвать функцию еще раз, тогда и получите код нажатой спецклавиши.
Вот так у меня сработало:
.....
// scanf("%d",&n);
// clear_screen();
n=getch();
if ((n==0) || (n==0xE0))
n = getch();
else
continue;
switch (n)
{
.......
|
| |
|
|
|
|
 75.5 Кб |
|
|
для: GeorgeIV
(16.01.2009 в 09:48)
| | ААА, не помогает ничего. вот полная прога , помогите пожалуйста, я уже с этими функциональными клавишами замучалась | |
|
|
|
|
|
|
|
для: Lis'ka
(16.01.2009 в 18:23)
| | так попробуй заменить кусок в меню в своей проге на мой кусок!
PS причем в каждом меню
PPS. Не поленился, заменил, скомпилировал, запустил - работает. Так что меняйте код и вперед! | |
|
|
|