📄 wm_screen2win.lst
字号:
C51 COMPILER V8.05a WM_SCREEN2WIN 04/11/2008 14:19:54 PAGE 1
C51 COMPILER V8.05a, COMPILATION OF MODULE WM_SCREEN2WIN
OBJECT MODULE PLACED IN WM_Screen2Win.obj
COMPILER INVOKED BY: D:\Program Files\keil\C51\BIN\C51.EXE gui\WM\WM_Screen2Win.c LARGE BROWSE MDU_F120 DEBUG OBJECTEXTE
-ND PRINT(.\WM_Screen2Win.lst) OBJECT(WM_Screen2Win.obj)
line level source
1 /*
2 *********************************************************************************************************
3 * uC/GUI
4 * Universal graphic software for embedded applications
5 *
6 * (c) Copyright 2002, Micrium Inc., Weston, FL
7 * (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
8 *
9 * 礐/GUI is protected by international copyright laws. Knowledge of the
10 * source code may not be used to write a similar product. This file may
11 * only be used in accordance with a license and should not be redistributed
12 * in any way. We appreciate your understanding and fairness.
13 *
14 ----------------------------------------------------------------------
15 File : WM_Screen2hWin.c
16 Purpose : Windows manager, add. module
17 ----------------------------------------------------------------------
18 */
19
20 #include "WM_Intern.h"
21
22 #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.
*/
#if defined (__C51__)
C51 COMPILER V8.05a WM_SCREEN2WIN 04/11/2008 14:19:54 PAGE 2
static WM_HWIN _Screen2hWin(WM_HWIN hWin, int x, int y) reentrant {
#else
static WM_HWIN _Screen2hWin(WM_HWIN hWin, int x, int y) {
#endif
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 */
92 void WM_Screen2Win(void) {}
93 #endif /* WM_MAX_WINDOW */
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 1 ----
CONSTANT SIZE = ---- ----
XDATA SIZE = ---- ----
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -