_FindWindow( ) API Library Routine
Places the handle of the window that the point pt belongs to on the screen into wh.
int _FindWindow(WHANDLE FAR *wh, Point pt)
WHANDLE FAR *wh; /* Pointer to window handle. */
Point pt; /* Point. */
Remarks
_FindWindow( ) returns an integer indicating the portion of the window where the point is located. For example, _FindWindow( ) returns the value inContent if the point is inside the window.
Possible return values, as defined in PRO_EXT.H, are listed in the following table.
_FindWindow( ) Return Values
Value | Point Location |
---|---|
inBorder | In the window border |
inHelp | In the help region |
inContent | In the content/text area |
inDrag | On the title bar |
inGrow | On the size control |
inGoAway | On the close box |
inZoom | On the zoom control |
inVUpArrow | On the up arrow in the vertical scroll bar |
inVDownArrow | On the down arrow in the vertical scroll bar |
inVPageUp | In the page up region of the vertical scroll bar |
inVPageDown | In the page down region of the vertical scroll bar |
inVThumb | On the thumb in the vertical scroll bar |
inHUpArrow | On the right arrow in the horizontal scroll bar |
inHDownArrow | On the left arrow in the horizontal scroll bar |
inHPageUp | In the page right region of the horizontal scroll bar |
inHPageDown | In the page left region of the horizontal scroll bar |
inHThumb | On the thumb in the horizontal scroll bar |
inMenuBar | On the menu bar |
For more information on how to create an API library and integrate it with Visual FoxPro, see Accessing the Visual FoxPro API.
Example
The following example waits for a left mouse button click and then uses _FindWindow( ) to get the window handle for the mouse down position.
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
};
See Also
_MousePos( ) API Library Routine | Accessing the Visual FoxPro API | _FindWindowP( ) API Library Routine