Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

maly problem z oblsuga klawy

Ostatnio zmodyfikowano 2009-01-20 10:41
Autor Wiadomość
wujas
Temat założony przez niniejszego użytkownika
maly problem z oblsuga klawy
» 2009-01-18 01:33:14
Cześć
Słuchajcie mam pewien problem mianowicie chciałbym napisać program coś ala hurtu takich jak wykorzystywane są w magazynach i sklepach .Taki program służy do gromadzenia informacji na temat produktów ,ich ilości ,ceny i takich pierdołek coś jak bardziej rozbudowana ksiażka telefonicza :]
Jednak mam poważny problem mianowicie nie potrafie sobie poradzić z obsługa klawiatury tzw niżej wklejam kod o co nie wiecej mi chodzi.Chcialbym aby to dzialalo tak ze jak się załaduje strona1 to w każdej chwili moge nacisnąc klawisz INSERT i wskoczy mi strona2 i odwrotnie jednak program czeka az wpisze jakas zmienna ,musze zaakceptowac i wtedy dopiero dziala klawisz INSERT
Wiem moze to glupie ale poczatki programowania nie sa latwe a warto sie pytac :)
C/C++
#include<iostream>
#include<conio.h>
#include "console.ddt"
using namespace ddt::console;
using namespace std;
void strona1()
{
    clrscr();
    cout << "test";
    int a;
    cout << "Strona nr 1" << endl;
    cout << "Wpisz cos na test : ";
    cin >> a;
    cout << a;
    return;
}
void strona2()
{
    clrscr();
    int b;
    cout << "Strona nr 2" << endl;
    cout << "Wpisz cos na test : ";
    cin >> b;
    cout << b;
    return;
}
int main()
{
    bool koniec = false;
    while( koniec != true )
    {
        strona1();
        unsigned char znak = getch();
        switch( znak )
        {
        case 224: //klawisze specjalne
            znak = getch();
            switch( znak )
            {
            case 82: //klawisz insert
               
                strona2();
                break;
            }
            znak = 0;
            break;
        case 27: //ESC
            koniec = true;
            break;
        }
    }
   
    return( 0 );
}
P-3707
DejaVu
» 2009-01-18 05:21:35
Jeśli chcesz mieć możliwość wciśnięcia jakiegoś klawisza w każdej chwili musisz mieć jeden mechanizm do obsługi klawiszy. Obecnie masz dwa - jeden: getch();, który umożliwia Ci obsługę klawiszy funkcyjnych (np INSERT); drugi cin>> - czyli wczytywanie wartości, które 'blokuje' w praktyce dalsze działanie programu do momentu wciśnięcia klawisza ENTER. Musisz się pozbyć cin>> i zastąpić go inteligentnie getch(). Innymi słowy musisz napisać sobie kod do wczytywania wartości za pomocą getch()'ów.
P-3708
wujas
Temat założony przez niniejszego użytkownika
» 2009-01-18 12:47:23
moze pomozesz mi jak niewiecej to powinno wygladac? Bo za bardzo neimam idei jak to zrobic:/
P-3710
pekfos
» 2009-01-18 13:51:50
C/C++
#include <conio.h>
#include <iostream>
using namespace std;
int main()
{
    int znak;
    cout << "naciśnij enter" << endl;
    znak = getch();
    switch( znak )
    {
    case 13: //liczba odpowiadająca klawiszowi ENTER
        cout << "dobrze!" << endl;
        break;
    default:
        cout << "naucz sie czytac. enter!" << endl;
        break;
    }
    getch();
    return 0;
}
tak mniej więcej powinno wyglądać użycie getch()
aby wygodnie odczytywać warości liczbowe klawiszy użyj
tego programu:
C/C++
#include <iostream>
#include <conio.h>
int main()
{
    char znak = getch();
    cout << "znak: " << znak << " liczba: " <<( int ) znak;
    getch();
    return 0;
}

zapis
( int ) znak
to to samo co
static_cast < int >( znak )
można używać ich zamiennie

to chyba wszystko:)
P-3711
wujas
Temat założony przez niniejszego użytkownika
» 2009-01-18 14:19:03
dzieki za pomoc ale akurat to wiem i o troche inna rzecz mi chodzi :)
Jak napisał Pan Piotr chce aby klawisz INSERT działał w każdej chwili nieważne ile znaków wprowadziłem czy zaakceptowałem czy co innego. Chce aby program przeszedl do strony2 w dowolnym momencie kiedy tego bede chcial a nie ze musze najpierw czekac na fukcjie cin>>
P-3712
pekfos
» 2009-01-18 14:30:31
C/C++
#include <iostream>
#include <conio.h>
#include <console.ddt>
using namespace std;
using namespace ddt::console;
void str1()
{
    //twoja strona nr 1
}
void str2()
{
    //twoja strona nr 2
}
int main()
{
    int znak;
    do
    {
        clrscr();
        str1();
        znak = getch();
    }
    while( znak != 82 ); //wychodzi po Insercie
   
}
str2();
getch();
return 0;
}
wyświetla pierwsza strona dopóki nie naciśniesz Insert

a jeśli chodzi ci o to żeby wyjść z wykonywania cin>>
naciskając Insert to nie da rady. taka natura cin'a
trzeba zaakceptować i nie ma klawiszy specjalnych
P-3713
wujas
Temat założony przez niniejszego użytkownika
» 2009-01-18 14:38:06
Pan Piotr napisał że muszę zrezygnować z funkcji cin>> to już wiem i napisał że można wczytać do pamięci dane za pomocą funkcji getch();Tylko jak to zrobić :))?
P-3714
DejaVu
» 2009-01-18 16:08:32
1) Tworzysz zmienną typu string
2) Jeśli wciśnięty klawisz z zakresu >=32 do <=127, dopisz znak do zmiennej string
3) Jeśli wciśnięty backspace i string niepusty => usuń ostatni znak
4) Jeśli wciśnięty ENTER => wykonaj konwersji zmiennej string na typ jaki Ciebie interesuje
5) Dorzucić jeszcze własne klawisze jakie chce się mieć obsługiwane (np. insert)
P-3716
« 1 » 2
  Strona 1 z 2 Następna strona