winlib.c
来自「深圳市微逻辑电子有限公司 巨果• Kingmos® 系统核心」· C语言 代码 · 共 2,006 行 · 第 1/4 页
C
2,006 行
{
bRetv = pReleaseCapture();
API_Leave( );
}
return bRetv;
#endif
}
typedef HWND ( WINAPI * PWND_GETCAPTURE )( void );
HWND WINAPI Wnd_GetCapture(void)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_GETCAPTURE, 0 );
cs.arg0 = 0;
return (HWND)CALL_SERVER( &cs );
#else
PWND_GETCAPTURE pGetCapture;// = (PWND_GETCAPTURE)lpWindowAPI[WND_GETCAPTURE];
HWND hWndRetv = NULL;
CALLSTACK cs;
if( API_Enter( API_WND, WND_GETCAPTURE, &pGetCapture, &cs ) )
{
hWndRetv = pGetCapture();
API_Leave( );
}
return hWndRetv;
#endif
}
typedef HDC ( WINAPI * PWND_BEGINPAINT )( HWND, LPPAINTSTRUCT );
HDC WINAPI Wnd_BeginPaint( HWND hWnd, LPPAINTSTRUCT lpps )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_BEGINPAINT, 2 );
cs.arg0 = (DWORD)hWnd;
return (HDC)CALL_SERVER( &cs, lpps );
#else
PWND_BEGINPAINT pBeginPaint;// = (PWND_BEGINPAINT)lpWindowAPI[WND_BEGINPAINT];
HDC hdcRetv = NULL;
CALLSTACK cs;
if( API_Enter( API_WND, WND_BEGINPAINT, &pBeginPaint, &cs ) )
{
lpps = MapProcessPtr( lpps, (LPPROCESS)cs.lpvData );
hdcRetv = pBeginPaint( hWnd, lpps );
API_Leave( );
}
return hdcRetv;
#endif
}
typedef BOOL ( WINAPI * PWND_ENDPAINT )( HWND, const PAINTSTRUCT * );
BOOL WINAPI Wnd_EndPaint( HWND hWnd, const PAINTSTRUCT * lpps )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_ENDPAINT, 2 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, lpps );
#else
PWND_ENDPAINT pEndPaint;// = (PWND_ENDPAINT)lpWindowAPI[WND_ENDPAINT];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_ENDPAINT, &pEndPaint, &cs ) )
{
lpps = MapProcessPtr( lpps, (LPPROCESS)cs.lpvData );
bRetv = pEndPaint( hWnd, lpps );
API_Leave( );
}
return bRetv;
#endif
}
typedef HDC ( WINAPI * PWND_GETCLIENTDC )( HWND );
HDC WINAPI Wnd_GetClientDC( HWND hWnd )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_GETCLIENTDC, 1 );
cs.arg0 = (DWORD)hWnd ;
return (HDC)CALL_SERVER( &cs );
#else
PWND_GETCLIENTDC pGetClientDC;// = (PWND_GETCLIENTDC)lpWindowAPI[WND_GETCLIENTDC];
HDC hdcRetv = NULL;
CALLSTACK cs;
if( API_Enter( API_WND, WND_GETCLIENTDC, &pGetClientDC, &cs ) )
{
hdcRetv = pGetClientDC( hWnd );
API_Leave( );
}
return hdcRetv;
#endif
}
typedef int ( WINAPI * PWND_RELEASEDC )( HWND, HDC );
int WINAPI Wnd_ReleaseDC( HWND hWnd, HDC hdc )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_RELEASEDC, 2 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, hdc );
#else
PWND_RELEASEDC pReleaseDC;// = (PWND_RELEASEDC)lpWindowAPI[WND_RELEASEDC];
int iRetv = 0;
CALLSTACK cs;
if( API_Enter( API_WND, WND_RELEASEDC, &pReleaseDC, &cs ) )
{
iRetv = pReleaseDC( hWnd, hdc );
API_Leave( );
}
return iRetv;
#endif
}
typedef HDC ( WINAPI * PWND_GETWINDOWDC )( HWND );
HDC WINAPI Wnd_GetWindowDC( HWND hWnd )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_GETWINDOWDC, 1 );
cs.arg0 = (DWORD)hWnd ;
return (HDC)CALL_SERVER( &cs );
#else
PWND_GETWINDOWDC pGetWindowDC;// = (PWND_GETWINDOWDC)lpWindowAPI[WND_GETWINDOWDC];
HDC hdcRetv = NULL;
CALLSTACK cs;
if( API_Enter( API_WND, WND_GETWINDOWDC, &pGetWindowDC, &cs ) )
{
hdcRetv = pGetWindowDC( hWnd );
API_Leave( );
}
return hdcRetv;
#endif
}
/*typedef BOOL ( WINAPI * PWND_DRAWCAPTION )( HWND, HDC, LPCRECT, UINT );
BOOL WINAPI Wnd_DrawCaption( HWND hWnd, HDC hdc, LPCRECT lprc, UINT uFlags )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_DRAWCAPTION, 4 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, hdc, lprc, uFlags );
#else
PWND_DRAWCAPTION pDrawCaption;// = (PWND_DRAWCAPTION)lpWindowAPI[WND_DRAWCAPTION];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_DRAWCAPTION, &pDrawCaption, &cs ) )
{
lprc = MapProcessPtr( lprc, (LPPROCESS)cs.lpvData );
bRetv = pDrawCaption( hWnd, hdc, lprc, uFlags );
API_Leave( );
}
return bRetv;
#endif
}
*/
typedef int ( WINAPI * PWND_SCROLL )( HWND, int, int, LPCRECT, LPCRECT, HRGN, LPRECT, UINT );
int WINAPI Wnd_Scroll(
HWND hWnd,
int dx,
int dy,
LPCRECT lpcScrollRect,
LPCRECT lpcClipRect,
HRGN hrgnUpdate,
LPRECT lpUpdateRect,
UINT uFlags )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_SCROLL, 8 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, dx, dy, lpcScrollRect, lpcClipRect, hrgnUpdate, lpUpdateRect, uFlags );
#else
PWND_SCROLL pScroll;// = (PWND_SCROLL)lpWindowAPI[WND_SCROLL];
int iRetv = 0;
CALLSTACK cs;
if( API_Enter( API_WND, WND_SCROLL, &pScroll, &cs ) )
{
lpcScrollRect = MapProcessPtr( lpcScrollRect, (LPPROCESS)cs.lpvData );
lpcClipRect = MapProcessPtr( lpcClipRect, (LPPROCESS)cs.lpvData );
lpUpdateRect = MapProcessPtr( lpUpdateRect, (LPPROCESS)cs.lpvData );
iRetv = pScroll( hWnd, dx, dy, lpcScrollRect, lpcClipRect, hrgnUpdate, lpUpdateRect, uFlags );
API_Leave( );
}
return iRetv;
#endif
}
typedef HDC ( WINAPI * PWND_GETDCEX )( HWND, HRGN hrgnClip, DWORD );
HDC WINAPI Wnd_GetDCEx( HWND hWnd, HRGN hrgnClip, DWORD dwFlags )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_GETDCEX, 3 );
cs.arg0 = (DWORD)hWnd;
return (HDC)CALL_SERVER( &cs, hrgnClip, dwFlags );
#else
PWND_GETDCEX pGetDCEx;// = (PWND_GETDCEX)lpWindowAPI[WND_GETDCEX];
HDC hdcRetv = NULL;
CALLSTACK cs;
if( API_Enter( API_WND, WND_GETDCEX, &pGetDCEx, &cs ) )
{
hdcRetv = pGetDCEx( hWnd, hrgnClip, dwFlags );
API_Leave( );
}
return hdcRetv;
#endif
}
typedef BOOL ( WINAPI * PWND_INVALIDATERECT )( HWND, LPCRECT, BOOL );
BOOL WINAPI Wnd_InvalidateRect( HWND hWnd, LPCRECT lprc, BOOL bErase )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_INVALIDATERECT, 3 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, lprc, bErase );
#else
PWND_INVALIDATERECT pInvalidateRect;// = (PWND_INVALIDATERECT)lpWindowAPI[WND_INVALIDATERECT];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_INVALIDATERECT, &pInvalidateRect, &cs ) )
{
lprc = MapProcessPtr( lprc, (LPPROCESS)cs.lpvData );
bRetv = pInvalidateRect( hWnd, lprc, bErase );
API_Leave( );
}
return bRetv;
#endif
}
typedef BOOL ( WINAPI * PWND_INVALIDATERGN )( HWND, HRGN, BOOL );
BOOL WINAPI Wnd_InvalidateRgn(HWND hWnd, HRGN hrgn, BOOL bErase)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_INVALIDATERGN, 3 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, hrgn, bErase );
#else
PWND_INVALIDATERGN pInvalidateRgn;// = (PWND_INVALIDATERGN)lpWindowAPI[WND_INVALIDATERGN];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_INVALIDATERGN, &pInvalidateRgn, &cs ) )
{
bRetv = pInvalidateRgn( hWnd, hrgn, bErase );
API_Leave( );
}
return bRetv;
#endif
}
typedef BOOL ( WINAPI * PWND_VALIDATERECT )( HWND, LPCRECT );
BOOL WINAPI Wnd_ValidateRect( HWND hWnd, LPCRECT lpcrc )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_VALIDATERECT, 2 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, lpcrc );
#else
PWND_VALIDATERECT pValidateRect;// = (PWND_VALIDATERECT)lpWindowAPI[WND_VALIDATERECT];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_VALIDATERECT, &pValidateRect, &cs ) )
{
lpcrc = MapProcessPtr( lpcrc, (LPPROCESS)cs.lpvData );
bRetv = pValidateRect( hWnd, lpcrc );
API_Leave( );
}
return bRetv;
#endif
}
typedef BOOL ( WINAPI * PWND_VALIDATERGN )( HWND, HRGN );
BOOL WINAPI Wnd_ValidateRgn( HWND hWnd, HRGN hrgn )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_VALIDATERGN, 2 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, hrgn );
#else
PWND_VALIDATERGN pValidateRgn;// = (PWND_VALIDATERGN)lpWindowAPI[WND_VALIDATERGN];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_VALIDATERGN, &pValidateRgn, &cs ) )
{
bRetv = pValidateRgn( hWnd, hrgn );
API_Leave( );
}
return bRetv;
#endif
}
typedef DWORD ( WINAPI * PWND_GETTHREADPROCESSID )( HWND, DWORD * );
DWORD WINAPI Wnd_GetThreadProcessId( HWND hWnd, DWORD * lpProcessID )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_GETTHREADPROCESSID, 2 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, lpProcessID );
#else
PWND_GETTHREADPROCESSID pGetThreadProcessId;// = (PWND_GETTHREADPROCESSID)lpWindowAPI[WND_GETTHREADPROCESSID];
DWORD dwRetv = 0;
CALLSTACK cs;
if( API_Enter( API_WND, WND_GETTHREADPROCESSID, &pGetThreadProcessId, &cs ) )
{
lpProcessID = MapProcessPtr( lpProcessID, (LPPROCESS)cs.lpvData );
dwRetv = pGetThreadProcessId( hWnd, lpProcessID );
API_Leave( );
}
return dwRetv;
#endif
}
/*
typedef BOOL ( WINAPI * PWND_ENABLESCROLLBAR )( HWND, UINT, UINT );
BOOL WINAPI Wnd_EnableScrollBar( HWND hWnd, UINT uFlags, UINT uArrows )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_ENABLESCROLLBAR, 3 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, uFlags, uArrows );
#else
PWND_ENABLESCROLLBAR pEnableScrollBar;// = (PWND_ENABLESCROLLBAR)lpWindowAPI[WND_ENABLESCROLLBAR];
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_ENABLESCROLLBAR, &pEnableScrollBar, &cs ) )
{
bRetv = pEnableScrollBar( hWnd, uFlags, uArrows );
API_Leave( );
}
return bRetv;
#endif
}
*/
/*
typedef int ( WINAPI * PWND_GETSCROLLINFO )( HWND, int, LPSCROLLINFO );
int WINAPI Wnd_GetScrollInfo( HWND hWnd, int fnBar, LPSCROLLINFO lpsi )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_GETSCROLLINFO, 3 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, fnBar, lpsi );
#else
PWND_GETSCROLLINFO pGetScrollInfo;// = (PWND_GETSCROLLINFO)lpWindowAPI[WND_GETSCROLLINFO];
int iRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_GETSCROLLINFO, &pGetScrollInfo, &cs ) )
{
lpsi = MapProcessPtr( lpsi, (LPPROCESS)cs.lpvData );
iRetv = pGetScrollInfo( hWnd, fnBar, lpsi );
API_Leave( );
}
return iRetv;
#endif
}
typedef int ( WINAPI * PWND_SETSCROLLINFO )( HWND, int, LPCSCROLLINFO, BOOL );
int WINAPI Wnd_SetScrollInfo( HWND hWnd, int fnBar, LPCSCROLLINFO lpcsi, BOOL fRedraw )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_SETSCROLLINFO, 4 );
cs.arg0 = (DWORD)hWnd;
return (DWORD)CALL_SERVER( &cs, fnBar, lpcsi, fRedraw );
#else
PWND_SETSCROLLINFO pSetScrollInfo;// = (PWND_SETSCROLLINFO)lpWindowAPI[WND_SETSCROLLINFO];
int iRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_SETSCROLLINFO, &pSetScrollInfo, &cs ) )
{
lpcsi = MapProcessPtr( lpcsi, (LPPROCESS)cs.lpvData );
iRetv = pSetScrollInfo( hWnd, fnBar, lpcsi, fRedraw );
API_Leave( );
}
return iRetv;
#endif
}
*/
////////////////////////////////////
typedef BOOL ( WINAPI * PWND_CLEAR )( DWORD );
BOOL WINAPI Wnd_Clear( DWORD dwThreadID )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_CLEAR, 1 );
cs.arg0 = (DWORD)dwThreadID ;
return (DWORD)CALL_SERVER( &cs );
#else
PWND_CLEAR pClear;
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_CLEAR, &pClear, &cs ) )
{
bRetv = pClear( dwThreadID );
API_Leave( );
}
return bRetv;
#endif
}
/////////////////////////////
typedef BOOL ( WINAPI * PWND_SHOWDESKTOP )( UINT uiFlag );
BOOL WINAPI Wnd_ShowDesktop( UINT uiFlag )
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_WND, WND_SHOWDESKTOP, 1 );
cs.arg0 = (DWORD)uiFlag ;
return (DWORD)CALL_SERVER( &cs );
#else
PWND_SHOWDESKTOP pfn;
BOOL bRetv = FALSE;
CALLSTACK cs;
if( API_Enter( API_WND, WND_SHOWDESKTOP, &pfn, &cs ) )
{
bRetv = pfn( uiFlag );
API_Leave();
}
return bRetv;
#endif
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?