tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
JA
ANTWORTEN
19
ZUGRIFFE
616
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Du mußt einfach die Eingabe auslesen (ReadConsoleInput).

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  2. #17
    july july ist offline Mitglied Gold
    Registriert seit
    May 2011
    Beiträge
    103
    ich hab jetzt im update-Thread folgendes eingebaut:
    Code cpp:
    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
    
    DWORD WINAPI update(LPVOID attr)
    {      
        INPUT_RECORD irInBuf;
        DWORD changeEvent, cNumRead;
    while(1){
    ...
          if (meldungscounter > 0)
            {
              ausgabe();
     
              changeEvent = WaitForMultipleObjects(2, events, FALSE, INFINITE);
              switch (changeEvent)
                {
              case WAIT_OBJECT_0 + 0: //es ist eine neue Meldung eingetroffen
                {
                  break;
                }
              case WAIT_OBJECT_0 + 1: //es gab eine Konsoleneingabe
                {
                  if (! ReadConsoleInput(
                                  stdinHandle,      // input buffer handle
                                  &irInBuf,     // buffer to read into
                                  1,         // size of read buffer
                                  &cNumRead) ) // number of records read
     
                    {
                      cerr << "Lesen von der Konsole hat nicht funktionniert"<<endl;
                    }
                             /// ErrorExit("ReadConsoleInput");
                //  cin >> eingabe;
                      switch (irInBuf.EventType)
                        {
                        case KEY_EVENT: // keyboard input
                          {
                            cin >>eingabe;
                          break;
                          }
                        default:
                          {
                            break;
                          }
                        }
                  if (eingabe > 0 && eingabe <= 7)
                    {
                      choice = eingabe;
                    }
                //  ResetEvent(stdinHandl);
                  break;
                }
                }
            }
          else
            {
              WaitForSingleObject(anzevent, INFINITE);
             /* if(ResetEvent(anzevent)==0)
                {
                  cout << "Zurücksetzen des Events hat nicht geklappt: " + GetLastError();
                }*/
              choice = 0;
            }
    }
    }

    und jetzt läuft das ganze in Endlosschleife und wird gar nicht blockiert...
     

  3. #18
    july july ist offline Mitglied Gold
    Registriert seit
    May 2011
    Beiträge
    103
    irgendwie werd ich aus dem ganzen nicht schlauer...
     

  4. #19
    july july ist offline Mitglied Gold
    Registriert seit
    May 2011
    Beiträge
    103
    Gibt's eigentlich bei Windows vielleicht Event KeyPressed? auf den man abfragen kann?
     

  5. #20
    cwriter cwriter ist offline Mitglied Gold
    Registriert seit
    Mar 2010
    Beiträge
    242
    Bitte nicht so viele Doppelposts. Es gibt den "Edit" Knopf...
    GetKeyState ist eine Möglichkeit. Oder wenn's auch reagieren soll, wenn das Fenster minimiert ist: GetAsyncKeyState(). Und falls du dann auch noch irgendeine Taste willst:
    Code c:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    BYTE bKeys[256];
    while(TRUE){
        if(!GetKeyboardState(&bKeys)) break;
        for(int i = 0; i < 256; i++){
            if(bKeys[i] & 0x80){
                // Button Pressed (i == Virtual Key-Code)
            }else(bKeys[i] & 0x01){
                // Button Toggled (Caps Lock, Num Lock, ...)
            }
        }
        Sleep(1);
    }

    Gruss
    cwriter
    Geändert von cwriter (03.09.11 um 15:56 Uhr)
    july bedankt sich. 
    Intel inside - Idiot outside :-)

    Ich schreibe in C und bin Anfänger.
    ______________________________

    Falls ich eines Tages einen guten Beitrag schreiben werde, bitte bewerten und/oder Danke sagen.
    Danke

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 28.07.11, 18:32
  2. exe geht - exe geht nicht - eine Idee
    Von olek im Forum Visual Basic 6.0
    Antworten: 18
    Letzter Beitrag: 14.09.05, 20:13
  3. es geht und geht dennoch nicht
    Von rolgal im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 15.05.05, 13:37
  4. swf in einem Flashfilm geht, aber maus geht nicht...
    Von ksk im Forum Flash Plattform
    Antworten: 10
    Letzter Beitrag: 26.10.04, 00:05
  5. Antworten: 0
    Letzter Beitrag: 01.07.04, 11:26

Stichworte