winlib.c

来自「深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心」· C语言 代码 · 共 2,006 行 · 第 1/4 页

C
2,006
字号
typedef HWND ( WINAPI * PWND_GETTOP )( HWND );
HWND WINAPI Wnd_GetTop( HWND hWnd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETTOP, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_GETTOP pGetTop;// = (PWND_GETTOP)lpWindowAPI[WND_GETTOP];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETTOP, &pGetTop, &cs ) )
	{
		hWndRetv = pGetTop( hWnd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_GET )( HWND, UINT );
HWND WINAPI Wnd_Get( HWND hWnd, UINT uCmd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GET, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (HWND)CALL_SERVER( &cs, uCmd );
#else

	PWND_GET pGet;// = (PWND_GET)lpWindowAPI[WND_GET];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GET, &pGet, &cs ) )
	{
		hWndRetv =  pGet( hWnd, uCmd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_GETNEXT )( HWND, UINT );
HWND WINAPI Wnd_GetNext(HWND hWnd, UINT uCmd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETNEXT, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (HWND)CALL_SERVER( &cs, uCmd );
#else

	PWND_GETNEXT pGetNext;// = (PWND_GETNEXT)lpWindowAPI[WND_GETNEXT];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETNEXT, &pGetNext, &cs ) )
	{
		hWndRetv = pGetNext( hWnd, uCmd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_CLIENTTOSCREEN )( HWND, LPPOINT );
BOOL WINAPI Wnd_ClientToScreen( HWND hWnd, LPPOINT lppt )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_CLIENTTOSCREEN, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, lppt );
#else

	PWND_CLIENTTOSCREEN pClientToScreen;// = (PWND_CLIENTTOSCREEN)lpWindowAPI[WND_CLIENTTOSCREEN];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_CLIENTTOSCREEN, &pClientToScreen, &cs ) )
	{
		lppt = MapProcessPtr( lppt, (LPPROCESS)cs.lpvData );

		bRetv = pClientToScreen( hWnd, lppt );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_SCREENTOCLIENT )( HWND, LPPOINT );
BOOL WINAPI Wnd_ScreenToClient( HWND hWnd, LPPOINT lppt )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SCREENTOCLIENT, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, lppt );
#else

	PWND_SCREENTOCLIENT pScreenToClient;// = (PWND_SCREENTOCLIENT)lpWindowAPI[WND_SCREENTOCLIENT];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SCREENTOCLIENT, &pScreenToClient, &cs ) )
	{
		lppt = MapProcessPtr( lppt, (LPPROCESS)cs.lpvData );

		bRetv = pScreenToClient( hWnd, lppt );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef DWORD ( WINAPI * PWND_MAPPOINTS )( HWND, HWND, LPPOINT, UINT );
DWORD WINAPI Wnd_MapPoints(HWND hwndFrom, HWND hwndTo, LPPOINT lppt, UINT cpt)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_MAPPOINTS, 4 );
    cs.arg0 = (DWORD)hwndFrom;
    return (DWORD)CALL_SERVER( &cs, hwndTo, lppt, cpt );
#else

	PWND_MAPPOINTS pMapPoints;// = (PWND_MAPPOINTS)lpWindowAPI[WND_MAPPOINTS];

	DWORD  dwRetv = 0;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_MAPPOINTS, &pMapPoints, &cs ) )
	{
		lppt = MapProcessPtr( lppt, (LPPROCESS)cs.lpvData );

		dwRetv = pMapPoints( hwndFrom, hwndTo, lppt, cpt );
		API_Leave(  );
	}
	return dwRetv;
#endif
}

typedef HWND ( WINAPI * PWND_FROMPOINT )( POINT pt );
HWND WINAPI Wnd_FromPoint(POINT pt)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_FROMPOINT, 2 );
    cs.arg0 = (DWORD)pt.x;
    return (HWND)CALL_SERVER( &cs, pt.y );
#else

	PWND_FROMPOINT pFromPoint;// = (PWND_FROMPOINT)lpWindowAPI[WND_FROMPOINT];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_FROMPOINT, &pFromPoint, &cs ) )
	{
		hWndRetv = pFromPoint( pt );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_CHILDFROMPOINT )( HWND, POINT, UINT );
HWND WINAPI Wnd_ChildFromPoint(HWND hWnd, POINT pt, UINT uFlags)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_CHILDFROMPOINT, 4 );
    cs.arg0 = (DWORD)hWnd;
    return (HWND)CALL_SERVER( &cs, pt.x, pt.y, uFlags );
#else

	PWND_CHILDFROMPOINT pChildFromPoint;// = (PWND_CHILDFROMPOINT)lpWindowAPI[WND_CHILDFROMPOINT];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_CHILDFROMPOINT, &pChildFromPoint, &cs ) )
	{
		hWndRetv = pChildFromPoint( hWnd, pt, uFlags );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_GETFOREGROUND )( void );
HWND WINAPI Wnd_GetForeground(void)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETFOREGROUND, 0 );
    cs.arg0 = 0;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_GETFOREGROUND pGetForeground;// = (PWND_GETFOREGROUND)lpWindowAPI[WND_GETFOREGROUND];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETFOREGROUND, &pGetForeground, &cs ) )
	{
		hWndRetv = pGetForeground();
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_SETFOREGROUND )( HWND );
BOOL WINAPI Wnd_SetForeground( HWND hWnd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETFOREGROUND, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (DWORD)CALL_SERVER( &cs );
#else

	PWND_SETFOREGROUND pSetForeground;// = (PWND_SETFOREGROUND)lpWindowAPI[WND_SETFOREGROUND];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETFOREGROUND, &pSetForeground, &cs ) )
	{
		bRetv = pSetForeground( hWnd );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef HWND ( WINAPI * PWND_SETACTIVE )( HWND );
HWND WINAPI Wnd_SetActive(HWND hWnd)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETACTIVE, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_SETACTIVE pSetActive;// = (PWND_SETACTIVE)lpWindowAPI[WND_SETACTIVE];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETACTIVE, &pSetActive, &cs ) )
	{
		hWndRetv = pSetActive( hWnd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef UINT ( WINAPI * PWND_SETTIMER )( HWND, UINT, UINT, TIMERPROC );
UINT WINAPI Wnd_SetTimer(HWND hWnd, UINT uID, UINT uElapse, TIMERPROC lpTimerProc)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETTIMER, 4 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, uID, uElapse, lpTimerProc );
#else

	PWND_SETTIMER pSetTimer;// = (PWND_SETTIMER)lpWindowAPI[WND_SETTIMER];

	UINT  uiRetv = 0;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETTIMER, &pSetTimer, &cs ) )
	{
		uiRetv = pSetTimer( hWnd, uID, uElapse, lpTimerProc );
		API_Leave(  );
	}
	return uiRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_KILLTIMER )( HWND, UINT );
BOOL WINAPI Wnd_KillTimer( HWND hWnd, UINT uID )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_KILLTIMER, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, uID );
#else

	PWND_KILLTIMER pKillTimer;// = (PWND_KILLTIMER)lpWindowAPI[WND_KILLTIMER];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_KILLTIMER, &pKillTimer, &cs ) )
	{
		bRetv = pKillTimer( hWnd, uID );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef UINT ( WINAPI * PWND_SETSYSTIMER )( HWND, UINT, UINT, TIMERPROC );
UINT WINAPI Wnd_SetSysTimer( HWND hWnd, UINT uID, UINT uElapse, TIMERPROC lpTimerProc )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETSYSTIMER, 4 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, uID, uElapse, lpTimerProc );
#else

	PWND_SETSYSTIMER pSetSysTimer;// = (PWND_SETSYSTIMER)lpWindowAPI[WND_SETSYSTIMER];

	UINT  uiRetv = 0;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETSYSTIMER, &pSetSysTimer, &cs ) )
	{
		uiRetv = pSetSysTimer( hWnd, uID, uElapse, lpTimerProc );
		API_Leave(  );
	}
	return uiRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_KILLSYSTIMER )( HWND, UINT );
BOOL WINAPI Wnd_KillSysTimer( HWND hWnd, UINT uID )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_KILLSYSTIMER, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, uID );
#else

	PWND_KILLSYSTIMER pKillSysTimer;// = (PWND_KILLSYSTIMER)lpWindowAPI[WND_KILLSYSTIMER];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_KILLSYSTIMER, &pKillSysTimer, &cs ) )
	{
		bRetv = pKillSysTimer( hWnd, uID );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef HWND ( WINAPI * PWND_GETACTIVE )( void );
HWND WINAPI Wnd_GetActive( void )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETACTIVE, 0 );
    cs.arg0 = 0;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_GETACTIVE pGetActive;// = (PWND_GETACTIVE)lpWindowAPI[WND_GETACTIVE];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETACTIVE, &pGetActive, &cs ) )
	{
		hWndRetv = pGetActive();
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_GETTOPLEVELPARENT )( HWND );
HWND WINAPI Wnd_GetTopLevelParent( HWND hWnd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETTOPLEVELPARENT, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_GETTOPLEVELPARENT pGetTopLevelParent;// = (PWND_GETTOPLEVELPARENT)lpWindowAPI[WND_GETTOPLEVELPARENT];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETTOPLEVELPARENT, &pGetTopLevelParent, &cs ) )
	{
		hWndRetv = pGetTopLevelParent( hWnd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_SETFOCUS )( HWND );
HWND WINAPI Wnd_SetFocus( HWND hWnd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETFOCUS, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_SETFOCUS pSetFocus;// = (PWND_SETFOCUS)lpWindowAPI[WND_SETFOCUS];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETFOCUS, &pSetFocus, &cs ) )
	{
		hWndRetv = pSetFocus( hWnd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_GETFOCUS )( void );
HWND WINAPI Wnd_GetFocus(void)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETFOCUS, 0 );
    cs.arg0 = 0;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_GETFOCUS pGetFocus;// = (PWND_GETFOCUS)lpWindowAPI[WND_GETFOCUS];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETFOCUS, &pGetFocus, &cs ) )
	{
		hWndRetv = pGetFocus();
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef HWND ( WINAPI * PWND_SETCAPTURE )( HWND );
HWND WINAPI Wnd_SetCapture(HWND hWnd)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETCAPTURE, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (HWND)CALL_SERVER( &cs );
#else

	PWND_SETCAPTURE pSetCapture;// = (PWND_SETCAPTURE)lpWindowAPI[WND_SETCAPTURE];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETCAPTURE, &pSetCapture, &cs ) )
	{
		hWndRetv = pSetCapture( hWnd );
		API_Leave(  );
	}
	return hWndRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_RELEASECAPTURE )( void );
BOOL WINAPI Wnd_ReleaseCapture(void)
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_RELEASECAPTURE, 0 );
    cs.arg0 = 0;
    return (DWORD)CALL_SERVER( &cs );
#else

	PWND_RELEASECAPTURE pReleaseCapture;// = (PWND_RELEASECAPTURE)lpWindowAPI[WND_RELEASECAPTURE];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_RELEASECAPTURE, &pReleaseCapture, &cs ) )

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?