Заносит по адресу 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