📄 wm_screen2win.c
字号:
/*********************************************************************************************************** uC/GUI* Universal graphic software for embedded applications** (c) Copyright 2002, Micrium Inc., Weston, FL* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH** 礐/GUI is protected by international copyright laws. Knowledge of the* source code may not be used to write a similar product. This file may* only be used in accordance with a license and should not be redistributed* in any way. We appreciate your understanding and fairness.*----------------------------------------------------------------------File : WM_Screen2hWin.cPurpose : Windows manager, add. module----------------------------------------------------------------------*/#include "WM_Intern.H"#if GUI_WINSUPPORT /* If 0, WM will not generate any code *//********************************************************************* Static code**********************************************************************/static int _CheckHit(WM_Obj * pWin, int x, int y) { if ( (pWin->Status & WM_SF_ISVIS) && (x >= pWin->Rect.x0) && (x <= pWin->Rect.x1) && (y >= pWin->Rect.y0) && (y <= pWin->Rect.y1)) { return 1; } return 0;}/********************************************************************* _Screen2hWin This routine is recursive. It checks if the given coordinates are in the window or a decendant. Returns: 0: If coordinates are neither in the given window nor a decendent !=0 Handle of the topmost visible decendent in which the given coordinate falls.*/static WM_HWIN _Screen2hWin(WM_HWIN hWin, int x, int y) { WM_Obj* pWin = WM_HANDLE2PTR(hWin); WM_HWIN hChild, hHit; /* First check if the coordinates are in the given window. If not, return 0 */ if (_CheckHit(pWin, x, y) == 0) { return 0; } /* If the coordinates are in a child, search deeper ... */ for (hChild = pWin->hFirstChild; hChild; ) { WM_Obj* pChild = WM_HANDLE2PTR(hChild); if ((hHit = _Screen2hWin(hChild, x, y)) != 0) { hWin = hHit; /* Found a window */ } hChild = pChild->hNext; } return hWin; /* No Child affected ... The parent is the right one */}/********************************************************************* Public code**********************************************************************/WM_HWIN WM_Screen2hWin(int x, int y) { WM_HWIN r; WM_LOCK(); r = _Screen2hWin(WM__FirstWin, x, y); WM_UNLOCK(); return r;}#else /* Avoid empty object files */ void WM_Screen2Win(void) {}#endif /* WM_MAX_WINDOW */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -