Freigeben über


_InKey( ), API-Bibliotheksroutine

Gibt die erste während der timeout-Periode gedrückte Taste zurück.

int _InKey(int timeout, int flag)
int timeout;                  /* Timeout period. */
int flag;                     /* Option(s). */

Hinweise

Die timeout-Periode wird als eine Anzahl von Zeitgeberticks vom Betriebssystem (1000/Sekunde) angegeben. Eine Timeout (Zeitüberschreitung)-Periode von 0 veranlasst Visual FoxPro zu warten, bis eine Taste gedrückt wird. Ein negativer Zeitüberschreitungswert sorgt dafür, dass _InKey( ) sofort zum aufrufenden Programm zurückkehrt, wenn keine Taste gedrückt wird.

Sie können flag mit einer oder beiden der folgenden Optionen angeben:

  • SHOWCURSOR oder HIDECURSOR
  • MOUSEACTIVE

Mit Hilfe von SHOWCURSOR können Sie den Cursor einblenden. Mit Hilfe von HIDECURSOR können Sie den Cursor ausblenden. Ohne Angabe verhält sich der Cursor entsprechend der SYS(2002)-Einstellung. Der zusätzliche Attributwert MOUSEACTIVE bewirkt, dass _InKey( ) Mausklicks als Tastenanschläge behandelt. _InKey gibt 151 für einen Mausklick zurück. Wenn Sie zwei Attributwerte spezifizieren möchten, verwenden Sie den C-Operator | oder den +-Operator.

Anmerkung   Leerlaufroutinen dürfen _InKey( ) nicht aufrufen.

Sie können Ereignisbehandlungsroutinen schreiben, die _InKey( ) aufrufen. Dabei sollten Sie jedoch vorsichtig vorgehen, da _InKey( ) die Ereignisbehandlungsroutinen rekursiv aufruft.

Weitere Informationen zum Erstellen einer API-Bibliothek und ihrer Integration in Visual FoxPro finden Sie unter Zugreifen auf die Visual FoxPro-API.

Beispiel

Im folgenden Beispiel wird _InKey( ) von Visual FoxPro mit zwei Attributen aufgerufen.

Visual FoxPro-Code

SET LIBRARY TO INKEY
#define SHOWCURSOR   1
#define HIDECURSOR   2
#define MOUSEACTIVE 4
= XINKEY(0, SHOWCURSOR + MOUSEACTIVE)

C-Code

#include <pro_ext.h>

FAR Example(ParamBlk FAR *parm)
{
   _RetInt(_InKey((int) parm->p[0].val.ev_long,
      (int) parm->p[1].val.ev_long), 10);
}

FoxInfo myFoxInfo[] = {
   {"XINKEY", (FPFI) Example, 2, "I,I"},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Siehe auch

INKEY( )-Funktion | Zugreifen auf die Visual FoxPro-API | ReadTimeout-Eigenschaft