link9372 link9373 link9374 link9375 link9376 link9377 link9378 link9379 link9380 link9381 link9382 link9383 link9384 link9385 link9386 link9387 link9388 link9389 link9390 link9391 link9392 link9393 link9394 link9395 link9396 link9397 link9398 link9399 link9400 link9401 link9402 link9403 link9404 link9405 link9406 link9407 link9408 link9409 link9410 link9411 link9412 link9413 link9414 link9415 link9416 link9417 link9418 link9419 link9420 link9421 link9422 link9423 link9424 link9425 link9426 link9427 link9428 link9429 link9430 link9431 link9432 link9433 link9434 link9435 link9436 link9437 link9438 link9439 link9440 link9441 link9442 link9443 link9444 link9445 link9446 link9447 link9448 link9449 link9450 link9451 link9452 link9453 link9454 link9455 link9456 link9457 link9458 link9459 link9460 link9461 link9462 link9463 link9464 link9465 link9466 link9467 link9468 link9469 link9470 link9471 link9472 link9473 link9474 link9475 link9476 link9477 link9478 link9479 link9480 link9481 link9482 link9483 link9484 link9485 link9486 link9487 link9488 link9489 link9490 link9491 link9492 link9493 link9494 link9495 link9496 link9497 link9498 link9499 link9500 link9501 link9502 link9503 link9504 link9505 link9506 link9507 link9508 link9509 link9510 link9511 link9512 link9513

Форум — Ответы     (  К темам )
 ?  Игорь: Console Application (20-02-2003 17:00:00)
Друзья! Кто-нибудь подскажет как написать консольное приложение, чтобы в нем
был нормальный полноценный ввод с клавиатуры, как это сделано например в FAR'е.
Поскольку в консольном приложении нет очереди сообщений. Что самому создавать очередь и вещать CALLBACK ?
 Павел (20-02-2003 20:37:57)
Не понял проблемы, что значит "полноценный ввод с клавиатуры" ?
Открываете C++Builder, File->New->Other и на вкладке New выбираете
Concole Wizard.
А для ввода с клавиатуры используете или стандартные функции ввода языка
C или С++ в зависимости от того, что вы выбрали.
 SergeyS (20-02-2003 20:48:38)
Вообще то у консольных программ есть своя особенная очередь сообщений. Она содержит содержит события от клавиатуры, мыши, события об изменения размера буфера и ещё пару типов служедных сообщений. Доступ к этой очереди выполняется функцией ReadConsoleInput. Подробнее функции консоли описаны в Win32 Help в разделе Console Functions.

Хотя я согласен с Павлом: "полноценный ввод" можно реализовать стандартными функциями C или C++.
 Игорь (21-02-2003 09:03:38)
Спасибо Павел и SergeyS! Единственное что мне хотелось бы понять как я получу
код нажатой клавиши это же не BIOS, а языковой ввод фильтрует базар всякие там
стрелочки, функциональные клавиши и контролы он интерпретирует, а мне хотелось
бы какой-нибудь bioskey(), хотя идея насчет ReadConsoleInput мне нравиться
надо почитать в WinAPI
 Павел (21-02-2003 19:56:17)
Не вижу сложностей обработки нажатия стрелок и других клавиш, в чем проблема ?
Функций в C, C++ для этого достаточно, нужно только их узучить.
Если уж Вы хотите писать консольное приложение на С, С++ то это просто
необходимо сделать.
Вот пример ввода с консоли, в том числе нажатие стрелок ВВЕРХ, ВНИЗ,
ВЛЕВО, ВПРАВО.
//---------------------------------------------------------------------------

#pragma hdrstop
#include <stdio.h>
#include <conio.h>

//---------------------------------------------------------------------------

#pragma argsused
int main(int argc, char* argv[])
{
int c;
int extended = 0;
c = getch();
if (!c){
extended = getch();
switch(extended){
case 'H': printf("UP"); break;
case 'P': printf("DOWN"); break;
case 'M': printf ("RIGHT"); break;
case 'K': printf("LEFT"); break;
}}
else printf("The character: %c isn't extended\n",c);
getch();
return 0;
}
//---------------------------------------------------------------------------
 Игорь (26-02-2003 09:57:55)
Спасибо Павел Большое! Я правда пошел путем консольного интерфейса WinAPI там немного посложней, но и возможностей побольше Я правда пока в начале пути
но если будет желание буду рад поделиться своими изысками :-))