winlib.c
来自「深圳市微逻辑电子有限公司 巨果• Kingmos® 系统核心」· 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 + -
显示快捷键?