Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
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