Заносит по адресу wh дескриптор окна, которому принадлежит точка pt на экране.
int _FindWindow(WHANDLE FAR *wh, Point pt) WHANDLE FAR *wh; /* Указатель на дескриптор окна. */ Point pt; /* Точка. */ |
Примечания
_FindWindow( ) возвращает целое число, которое указывает, какой именно части окна принадлежит данная точка. Например, _FindWindow( ) возвращает значение inContent, если указатель находится внутри окна.
В следующем таблице перечислены возможные возвращаемые значения, которые определены в файле PRO_EXT.H.
| Значение | Местоположение точки |
|---|---|
|
inBorder |
На границе окна |
|
inHelp |
В регионе справки |
|
inContent |
В области содержимого/текста |
|
inDrag |
В строке заголовка |
|
inGrow |
На кнопке управления размером |
|
inGoAway |
На кнопке закрытия |
|
inZoom |
На кнопке управления увеличением |
|
inVUpArrow |
На стрелке вверх, принадлежащей вертикальной линейке прокрутки |
|
inVDownArrow |
На стрелке вниз, принадлежащей вертикальной линейке прокрутки |
|
inVPageUp |
На вертикальной линейке прокрутки выше бегунка |
|
inVPageDown |
На вертикальной линейке прокрутки ниже бегунка |
|
inVThumb |
На бегунке вертикальной линейки прокрутки |
|
inHUpArrow |
На стрелке вправо, принадлежащей горизонтальной линейке прокрутки |
|
inHDownArrow |
На стрелке влево, принадлежащей горизонтальной линейке прокрутки |
|
inHPageUp |
На горизонтальной линейке прокрутки правее бегунка |
|
inHPageDown |
На горизонтальной линейке прокрутки левее бегунка |
|
inHThumb |
На бегунке горизонтальной линейки прокрутки |
|
inMenuBar |
В строке меню |
Для получения дополнительной информации о том, как создавать библиотеку API и интегрировать её в Visual FoxPro, смотрите Доступ к API Visual FoxPro.
Пример
В следующем примере программа ждет нажатия левой кнопки мыши, а затем с помощью _FindWindow( ) получает дескриптор окна, для которого нажата кнопка мыши.
Код Visual FoxPro
Copy Code | |
|---|---|
WAIT WINDOW "Click mouse on a window" NOWAIT SET LIBRARY TO FINDWIND | |
Код C
Copy 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
}; | |
Смотрите также
Справочное руководство
Процедура библиотеки API _MousePos( )Процедура библиотеки API _FindWindowP( )
Прочие ресурсы
Конструкции библиотеки APIДоступ к API Visual FoxPro