Freigeben über


_FindWindow( ), API-Bibliotheksroutine

Legt das Fensterhandle, zu der der Punkt pt auf dem Bildschirm gehört, in wh ab.

int _FindWindow(WHANDLE FAR *wh, Point pt)
WHANDLE FAR *wh;      /* Pointer to window handle. */
Point pt;                     /* Point. */

Hinweise

_FindWindow( ) gibt eine ganze Zahl zurück, die den Fensterbereich angibt, in dem sich der Punkt befindet. Wenn sich der Punkt z. B. innerhalb des Fensters befindet, gibt _FindWindow( ) den Wert inContent zurück.

Die folgende Tabelle enthält eine Auflistung der möglichen Rückgabewerte, wie sie in PRO_EXT.H definiert sind.

Rückgabewerte _FindWindow( )

Value Position des Punktes
inBorder Im Fensterrahmen
inHelp Im Hilfebereich
inContent Im Inhalts-/Textbereich
inDrag Auf der Titelleiste
inGrow Auf dem Größen-Steuerelement (Size)
inGoAway Auf dem Schließfeld
inZoom Auf dem Zoom-Steuerelement
inVUpArrow Auf dem aufwärts zeigenden Pfeil der vertikalen Bildlaufleiste
inVDownArrow Auf dem abwärts zeigenden Pfeil der vertikalen Bildlaufleiste
inVPageUp Im Bereich der vertikalen Bildlaufleiste für einen Bildlauf nach oben
inVPageDown Im Bereich der vertikalen Bildlaufleiste für einen Bildlauf nach unten
inVThumb Auf dem Bildlauffeld der vertikalen Bildlaufleiste
inHUpArrow Auf dem rechten horizontalen Bildlaufpfeil
inHDownArrow Auf dem linken horizontalen Bildlaufpfeil
inHPageUp Im Bereich der horizontale Bildlaufleiste für einen Bildlauf nach rechts
inHPageDown Im Bereich der horizontalen Bildlaufleiste für einen Bildlauf nach links
inHThumb Auf dem Bildlauffeld der horizontalen Bildlaufleiste
inMenuBar Auf der Menüleiste

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 gewartet, bis mit der linken Maustaste geklickt wird. Dann wird mit _FindWindow( ) das Fensterhandle für die Mausposition ermittelt, wenn die Maustaste gedrückt wird.

Visual FoxPro-Code

WAIT WINDOW  "Click mouse on a window" NOWAIT
SET LIBRARY TO FINDWIND

C-Code

#include <pro_ext.h>

void putLong(long n, int width)
{
   Value val;

   val.ev_type = 'I';
   val.ev_long = n;
   val.ev_width = width;

   _PutValue(&val);
}
FAR FindWindowFn(ParamBlk FAR *parm)
{
   WHANDLE wh;
   Point mousePos;
   int where;

//  Get mouse position when left button goes down
   while (_InKey(0, MOUSEACTIVE | HIDECURSOR) != 151);
   while (!_MousePos(&mousePos));

   switch (where = _FindWindow(&wh, mousePos))
   {
      case inBorder:
         _PutStr("\nMouse down inBorder"); break;
      case inHelp:
         _PutStr("\nMouse down inHelp"); break;
      case inContent:
         _PutStr("\nMouse down inContent"); break;
      case inDrag:
         _PutStr("\nMouse down inDrag"); break;
      case inGrow:
         _PutStr("\nMouse down inGrow"); break;
      case inGoAway:
         _PutStr("\nMouse down inGoAway"); break;
      case inZoom:
         _PutStr("\nMouse down inZoom"); break;
      case inVUpArrow:
         _PutStr("\nMouse down inVUpArrow"); break;
      case inVDownArrow:
         _PutStr("\nMouse down inVDownArrow"); break;
      case inVPageUp:
         _PutStr("\nMouse down inVPageUp"); break;
      case inVPageDown:
         _PutStr("\nMouse down inVPageDown"); break;
      case inVThumb:
         _PutStr("\nMouse down inVThumb"); break;
      case inHUpArrow:
         _PutStr("\nMouse down inHUpArrow"); break;
      case inHDownArrow:
         _PutStr("\nMouse down inHDownArrow"); break;
      case inHPageUp:
         _PutStr("\nMouse down inHPageUp"); break;
      case inHPageDown:
         _PutStr("\nMouse down inHPageDown"); break;
      case inHThumb:
         _PutStr("\nMouse down inHThumb"); break;
      case inMenuBar:
         _PutStr("\nMouse down inMenuBar"); break;
      default:
         _PutStr("\nMouse down someplace else"); break;
   }
   _GlobalToLocal(&mousePos, wh);
   _PutStr("\nPosition relative to window:");
   putLong(mousePos.v, 5);
   _PutChr(' ');
   putLong(mousePos.h, 5);
}

FoxInfo myFoxInfo[] = {
   {"ONLOAD", (FPFI) FindWindowFn, CALLONLOAD, ""},
};
FoxTable _FoxTable = {
   (FoxTable FAR *) 0, sizeof(myFoxInfo)/sizeof(FoxInfo), myFoxInfo
};

Siehe auch

_MousePos( ), API-Bibliotheksroutine | Zugreifen auf die Visual FoxPro-API | _FindWindowP( ), API-Bibliotheksroutine