Как бороться с getch() ???
От: yu  
Дата: 29.04.02 09:18
Оценка:
Подскажите пожалуйста, как в консольной программе на VC++ 6.0 бороться с getch(). Суть: надо обработать стрелочки, а getch возвращает на стрелочки код 224 — причем на любые. В досовском BC++ 3.1 было нормально — сначала 0 потом код = 72,75,77,80 ...
Re: Как бороться с getch() ???
От: KA it-knowledge-base.blogspot.com
Дата: 29.04.02 13:57
Оценка:
Здравствуйте yu, Вы писали:

yu>Подскажите пожалуйста, как в консольной программе на VC++ 6.0 бороться с getch(). Суть: надо обработать стрелочки, а getch возвращает на стрелочки код 224 — причем на любые. В досовском BC++ 3.1 было нормально — сначала 0 потом код = 72,75,77,80 ...

Это фича Q57888.
//
#import <windows.bas>
class IWindows9x:protected DOS { private: virtual HANDLE EnumClouds()=0; };
Re[2]: Как бороться с getch() ???
От: yu  
Дата: 30.04.02 05:21
Оценка:
KA>Это фича Q57888.
Оно конечно может и фича, но проблемы не решает Второй getch, который должен возвращать скан код, возвращает опять же 224. Такая вот зараза ((
Re[3]: Как бороться с getch() ???
От: Алекс Россия http://wise-orm.com
Дата: 30.04.02 06:40
Оценка:
Здравствуйте yu, Вы писали:

KA>>Это фича Q57888.

yu>Оно конечно может и фича, но проблемы не решает Второй getch, который должен возвращать скан код, возвращает опять же 224. Такая вот зараза ((
    printf("Press ESC for quit!\n");
    int ch;
    do{
        ch = getch();
        int scan = 0;
        if (ch == 0 || ch == 0xE0){
            scan = getch();
            printf("scan code = %d\n",scan);
            continue;
        }
    }
    while (ch != 27);
    return 0;
Re[4]: Как бороться с getch() ???
От: yu  
Дата: 30.04.02 07:07
Оценка:
Здравствуйте Алекс, Вы писали:

А>
А>    printf("Press ESC for quit!\n");
А>    int ch;
А>    do{
А>        ch = getch();
А>        int scan = 0;
А>        if (ch == 0 || ch == 0xE0){
А>            scan = getch();
А>            printf("scan code = %d\n",scan);
А>            continue;
А>        }
А>    }
А>    while (ch != 27);
А>    return 0;
А>


Те же яйца — вид сбоку ... Ну конечно я проверил и код по ссылке и этот код. Второй getch на стрелочки возвращает тоже 224. Сами проверьте ... Неужто getch в VC++ не работает для некоторых клавиш ?????
Re[5]: Как бороться с getch() ???
От: ak_alex Россия  
Дата: 30.04.02 07:26
Оценка:
Здравствуйте yu, Вы писали:

yu>Те же яйца — вид сбоку ... Ну конечно я проверил и код по ссылке и этот код. Второй getch на стрелочки возвращает тоже 224. Сами проверьте ... Неужто getch в VC++ не работает для некоторых клавиш ?????


У меня на VC60 код Алекс'а на второй getch() возвращает:

влево  - 75
вверх  - 72
вправо - 77
вниз   - 80
Re[6]: Как бороться с getch() ???
От: Аноним  
Дата: 30.04.02 07:29
Оценка:
Здравствуйте ak_alex, Вы писали:
AA>У меня на VC60 код Алекс'а на второй getch() возвращает:

AA>
AA>влево  - 75
AA>вверх  - 72
AA>вправо - 77
AA>вниз   - 80
AA>


Ну тогда расскажите где я не прав, вот таким батником компилю:
echo Компилится ...
d:\hlam\vc\cl.exe /nologo /TP /MD /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /FD /c /Id:\hlam\vc\include /Id:\hlam\vc\x86lib /Id:\hlam\vc\incl /Id:\hlam\vc\lib /Os %1.c |more >> file.000
echo Линкуется ...
d:\hlam\vc\link.exe %1.obj kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib rasapi32.lib netapi32.lib mpr.lib wininet.lib w3btrv7.lib /LIBPATH:d:\hlam\vc\lib /SUBSYSTEM:CONSOLE /RELEASE >> file.000
Re[6]: Как бороться с getch() ???
От: yu  
Дата: 30.04.02 07:57
Оценка:
Здравствуйте ak_alex, Вы писали:
AA>У меня на VC60 код Алекс'а на второй getch() возвращает:

AA>
AA>влево  - 75
AA>вверх  - 72
AA>вправо - 77
AA>вниз   - 80
AA>


Попробовал из IDE сделать console проект, засунул туда этот код — результат никакой. Второй getch возвращает 224 !!!! (VC++ 6.0)
Re[7]: Как бороться с getch() ???
От: ak_alex Россия  
Дата: 30.04.02 08:03
Оценка:
Здравствуйте yu, Вы писали:

yu>Попробовал из IDE сделать console проект, засунул туда этот код — результат никакой. Второй getch возвращает 224 !!!! (VC++ 6.0)


У меня и с батником твоим результат OK. Если не веришь, могу мылом проект скинуть с exe.
Re[8]: Как бороться с getch() ???
От: Dront Россия  
Дата: 30.04.02 08:06
Оценка:
Здравствуйте ak_alex, Вы писали:

AA>Здравствуйте yu, Вы писали:


yu>>Попробовал из IDE сделать console проект, засунул туда этот код — результат никакой. Второй getch возвращает 224 !!!! (VC++ 6.0)


AA>У меня и с батником твоим результат OK. Если не веришь, могу мылом проект скинуть с exe.


может, в сервиспаках дело? Сравните версии!
WBR, Andrey Reznik (2:5020/2999, Andrey_Reznik@rambler.ru)
Re[9]: Как бороться с getch() ???
От: ak_alex Россия  
Дата: 30.04.02 08:09
Оценка:
Здравствуйте Dront, Вы писали:

D>может, в сервиспаках дело? Сравните версии!


У меня SP 5.0
Re[10]: Как бороться с getch() ???
От: yu  
Дата: 30.04.02 08:50
Оценка:
Здравствуйте ak_alex, Вы писали:

AA>У меня SP 5.0

Только что накатил все сервиспаки до SP 5.0 включительно ... Результат не изменился ...
Re[11]: Как бороться с getch() ???
От: KA it-knowledge-base.blogspot.com
Дата: 30.04.02 12:57
Оценка:
Здравствуйте yu, Вы писали:

AA>>У меня SP 5.0

yu>Только что накатил все сервиспаки до SP 5.0 включительно ... Результат не изменился ...

А операционка какая?
//
#import <windows.bas>
class IWindows9x:protected DOS { private: virtual HANDLE EnumClouds()=0; };
Re[12]: Как бороться с getch() ???
От: yu  
Дата: 01.05.02 09:17
Оценка:
Здравствуйте KA, Вы писали:

KA>А операционка какая?


W98 на работе и дома. Дома на VC++ стоит SP4, результат одинаковый. Может дело в какой-нибудь dll-ке (типа crtdll или как там её ...)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.