winlib.c

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

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

	PWND_GETTEXTLENGTH pGetTextLength;// = (PWND_GETTEXTLENGTH)lpWindowAPI[WND_GETTEXTLENGTH];

	int  iRetv = 0;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETTEXTLENGTH, &pGetTextLength, &cs ) )
	{
		iRetv = pGetTextLength( hWnd );
		API_Leave(  );
	}
	return iRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_GETCLIENTRECT )( HWND, LPRECT );
BOOL WINAPI Wnd_GetClientRect( HWND hWnd, LPRECT lprc )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETCLIENTRECT, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, lprc );
#else

	PWND_GETCLIENTRECT pGetClientRect;// = (PWND_GETCLIENTRECT)lpWindowAPI[WND_GETCLIENTRECT];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETCLIENTRECT, &pGetClientRect, &cs ) )
	{
		lprc = MapProcessPtr( lprc, (LPPROCESS)cs.lpvData );

		bRetv = pGetClientRect( hWnd, lprc );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_GETWINDOWRECT )( HWND, LPRECT );
BOOL WINAPI Wnd_GetWindowRect( HWND hWnd, LPRECT lprc )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETWINDOWRECT, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, lprc );
#else

	PWND_GETWINDOWRECT pGetWindowRect;// = (PWND_GETWINDOWRECT)lpWindowAPI[WND_GETWINDOWRECT];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETWINDOWRECT, &pGetWindowRect, &cs ) )
	{
		lprc = MapProcessPtr( lprc, (LPPROCESS)cs.lpvData );

		bRetv = pGetWindowRect( hWnd, lprc );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_SETPOS )( HWND, HWND, int, int, int, int, UINT );
BOOL WINAPI Wnd_SetPos( HWND hWnd, 
					    HWND hwndAfter, 
						int x, 
						int y, 
						int width, 
						int height, 
						UINT uFlags )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETPOS, 7 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, hwndAfter, x, y, width, height, uFlags );
#else

	PWND_SETPOS pSetPos;// = (PWND_SETPOS)lpWindowAPI[WND_SETPOS];
	
	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETPOS, &pSetPos, &cs ) )
	{
		bRetv = pSetPos( hWnd, hwndAfter, x, y, width, height, uFlags );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_MOVE )( HWND, int, int, int, int, BOOL );
BOOL WINAPI Wnd_Move( HWND hWnd, int x, int y, int width, int height, BOOL bRepaint )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_MOVE, 6 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, x, y, width, height, bRepaint );
#else

	PWND_MOVE pMove;// = (PWND_MOVE)lpWindowAPI[WND_MOVE];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_MOVE, &pMove, &cs ) )
	{
		bRetv = pMove( hWnd, x, y, width, height, bRepaint );
		API_Leave(  );
	}
	return bRetv;
#endif
}

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

	PWND_BRINGTOTOP pBringToTop;// = (PWND_BRINGTOTOP)lpWindowAPI[WND_BRINGTOTOP];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

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


typedef BOOL ( WINAPI * PWND_ADJUSTRECTEX )( LPRECT, DWORD, BOOL, DWORD ); 
BOOL WINAPI Wnd_AdjustRectEx( LPRECT lprc, DWORD dwMainStyle, BOOL fMenu, DWORD dwExStyle )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_ADJUSTRECTEX, 4 );
    cs.arg0 = (DWORD)lprc;
    return (DWORD)CALL_SERVER( &cs, dwMainStyle, fMenu, dwExStyle );
#else

	PWND_ADJUSTRECTEX pAdjustRectEx;// = (PWND_ADJUSTRECTEX)lpWindowAPI[WND_ADJUSTRECTEX];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_ADJUSTRECTEX, &pAdjustRectEx, &cs ) )
	{
		lprc = MapProcessPtr( lprc, (LPPROCESS)cs.lpvData );

		bRetv = pAdjustRectEx( lprc, dwMainStyle, fMenu, dwExStyle );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_FLASH )( HWND, BOOL );
BOOL WINAPI Wnd_Flash(HWND hWnd, BOOL  bInvert )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_FLASH, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, bInvert );
#else

	PWND_FLASH pFlash;// = (PWND_FLASH)lpWindowAPI[WND_FLASH];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_FLASH, &pFlash, &cs ) )
	{
		bRetv = pFlash( hWnd, bInvert );
		API_Leave(  );
	}
	return bRetv;
#endif
}

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

	PWND_CLOSE pClose;// = (PWND_CLOSE)lpWindowAPI[WND_CLOSE];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_CLOSE, &pClose, &cs ) )
	{
		bRetv = pClose( hWnd );
		API_Leave(  );
	}
	return bRetv;
#endif
}
///////////////////////////////////////////////////////////////////////////
typedef BOOL ( WINAPI * PWND_ISICONIC )( HWND );
BOOL WINAPI Wnd_IsIconic( HWND hWnd )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_ISICONIC, 1 );
    cs.arg0 = (DWORD)hWnd ;
    return (DWORD)CALL_SERVER( &cs );
#else

	PWND_ISICONIC pIsIconic;// = (PWND_ISICONIC)lpWindowAPI[WND_ISICONIC];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

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

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

	PWND_ISZOOMED pIsZoomed;// = (PWND_ISZOOMED)lpWindowAPI[WND_ISZOOMED];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_ISZOOMED, &pIsZoomed, &cs ) )
	{
		bRetv = pIsZoomed( hWnd );
		API_Leave(  );
	}
	return bRetv;

#endif
}

typedef LONG ( WINAPI * PWND_GETLONG )( HWND, int );
LONG WINAPI Wnd_GetLong( HWND hWnd, int nIndex )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETLONG, 2 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, nIndex );
#else

	PWND_GETLONG pGetLong;// = (PWND_GETLONG)lpWindowAPI[WND_GETLONG];

	LONG  lRetv = 0;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETLONG, &pGetLong, &cs ) )
	{
		lRetv = pGetLong( hWnd, nIndex );
		API_Leave(  );
	}
	return lRetv;
#endif
}

typedef LONG ( WINAPI * PWND_SETLONG )( HWND, int, LONG );
LONG WINAPI Wnd_SetLong( HWND hWnd, int nIndex, LONG dwNewLong )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_SETLONG, 3 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, nIndex, dwNewLong );
#else

	PWND_SETLONG pSetLong;// = (PWND_SETLONG)lpWindowAPI[WND_SETLONG];

	LONG  lRetv = 0;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_SETLONG, &pSetLong, &cs ) )
	{
		lRetv = pSetLong( hWnd, nIndex, dwNewLong );
		API_Leave(  );
	}
	return lRetv;
#endif
}

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

	PWND_GETDESKTOP pGetDesktop;// = (PWND_GETDESKTOP)lpWindowAPI[WND_GETDESKTOP];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

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

typedef HWND ( WINAPI * PWND_FIND )( LPCSTR, LPCSTR );
HWND WINAPI Wnd_Find( LPCSTR lpcClassName, LPCSTR lpcWindowName )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_FIND, 2 );
    cs.arg0 = (DWORD)lpcClassName;
    return (HWND)CALL_SERVER( &cs, lpcWindowName );
#else

	PWND_FIND pFind;// = (PWND_FIND)lpWindowAPI[WND_FIND];

	HWND  hWndRetv = NULL;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_FIND, &pFind, &cs ) )
	{
		lpcClassName = MapProcessPtr( lpcClassName, (LPPROCESS)cs.lpvData );
		lpcWindowName = MapProcessPtr( lpcWindowName, (LPPROCESS)cs.lpvData );

		hWndRetv = pFind( lpcClassName, lpcWindowName );
		API_Leave(  );
	}
	return hWndRetv;

#endif
}

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

	PWND_UPDATE pUpdate;// = (PWND_UPDATE)lpWindowAPI[WND_UPDATE];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_UPDATE, &pUpdate, &cs ) )
	{
		bRetv = pUpdate( hWnd );
		API_Leave(  );
	}
	return bRetv;

#endif
}

typedef BOOL ( WINAPI * PWND_GETUPDATERECT )( HWND, LPRECT, BOOL );
BOOL WINAPI Wnd_GetUpdateRect( HWND hWnd, LPRECT lprc, BOOL bErase )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETUPDATERECT, 3 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, lprc, bErase );
#else

	PWND_GETUPDATERECT pUpdateRect;// = (PWND_GETUPDATERECT)lpWindowAPI[WND_GETUPDATERECT];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETUPDATERECT, &pUpdateRect, &cs ) )
	{
		lprc = MapProcessPtr( lprc, (LPPROCESS)cs.lpvData );

		bRetv = pUpdateRect( hWnd, lprc, bErase );
		API_Leave(  );
	}
	return bRetv;
#endif
}

typedef int ( WINAPI * PWND_GETUPDATERGN )( HWND, HRGN, BOOL );
int WINAPI Wnd_GetUpdateRgn( HWND hWnd, HRGN hrgn, BOOL bErase )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_GETUPDATERGN, 3 );
    cs.arg0 = (DWORD)hWnd;
    return (DWORD)CALL_SERVER( &cs, hrgn, bErase );
#else

    PWND_GETUPDATERGN pGetUpdateRgn;// = (PWND_GETUPDATERGN)lpWindowAPI[WND_GETUPDATERGN];

	int iRetv = ERROR;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_GETUPDATERGN, &pGetUpdateRgn, &cs ) )
	{
		iRetv = pGetUpdateRgn( hWnd, hrgn, bErase );
		API_Leave(  );
	}
	return iRetv;
#endif
}

typedef BOOL ( WINAPI * PWND_ENUM )( WNDENUMPROC, LPARAM );
BOOL WINAPI Wnd_Enum( WNDENUMPROC lpProc, LPARAM lParam )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_ENUM, 2 );
    cs.arg0 = (DWORD)lpProc;
    return (DWORD)CALL_SERVER( &cs, lParam );
#else

	PWND_ENUM pEnum;// = (PWND_ENUM)lpWindowAPI[WND_ENUM];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_ENUM, &pEnum, &cs ) )
	{
		bRetv = pEnum( lpProc, lParam );
		API_Leave(  );
	}
	return bRetv;

#endif
}

typedef BOOL ( WINAPI * PWND_ENUMCHILD )( HWND, WNDENUMPROC, LPARAM );
BOOL WINAPI Wnd_EnumChild( HWND hwndParent, WNDENUMPROC lpProc, LPARAM lParam )
{
#ifdef CALL_TRAP
    CALLTRAP cs;
    cs.apiInfo = CALL_API( API_WND, WND_ENUMCHILD, 3 );
    cs.arg0 = (DWORD)hwndParent;
    return (DWORD)CALL_SERVER( &cs, lpProc, lParam );
#else

	PWND_ENUMCHILD pEnumChild;// = (PWND_ENUMCHILD)lpWindowAPI[WND_ENUMCHILD];

	BOOL  bRetv = FALSE;
	CALLSTACK cs;

	if( API_Enter( API_WND, WND_ENUMCHILD, &pEnumChild, &cs ) )
	{
		bRetv = pEnumChild( hwndParent, lpProc, lParam );
		API_Leave(  );
	}
	return bRetv;
#endif
}

⌨️ 快捷键说明

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