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