_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