INT main( int argc, char **argv ) { QMSG qmsg; /* Message from message queue */ ULONG flCreate; /* Window creation control flags*/ TID tid; ULONG height; ULONG width; DosExitList( EXLST_ADD, (PFNEXITLIST)CleanUp ); if( argc >= 3 ) { InStream = *argv[1] - ADJUST_HFILE; OutStream = *argv[2] - ADJUST_HFILE; } AbortIf( ( Hab = WinInitialize( 0 )) == 0L ); AbortIf( ( Hmq = WinCreateMsgQueue( Hab, 0 ) ) == 0L ); AbortIf( !WinRegisterClass( Hab, (PSZ)"MyWindow", (PFNWP)MyWindowProc, CS_SIZEREDRAW, 0 ) ); flCreate = FCF_TITLEBAR | FCF_MENU | FCF_SIZEBORDER | FCF_ACCELTABLE | FCF_SHELLPOSITION | FCF_TASKLIST; height = WinQuerySysValue( HWND_DESKTOP, SV_CYMENU ) + 2*WinQuerySysValue( HWND_DESKTOP, SV_CYBORDER ) + 2*WinQuerySysValue( HWND_DESKTOP, SV_CYSIZEBORDER ) + WinQuerySysValue( HWND_DESKTOP, SV_CYTITLEBAR ); AbortIf( ( hwndFrame = WinCreateStdWindow( HWND_DESKTOP, 0L, &flCreate, "MyWindow", "", 0L, 0, ID_WINDOW, &hwndClient ) ) == 0L ); WinSetWindowText( hwndFrame, TRP_The_WATCOM_Debugger ); width = WinQuerySysValue( HWND_DESKTOP, SV_CXSCREEN ); AbortIf( !WinSetWindowPos( hwndFrame, HWND_TOP, 0, WinQuerySysValue( HWND_DESKTOP, SV_CYSCREEN ) - height, width / 3, height, SWP_MOVE | SWP_SHOW | SWP_SIZE | SWP_ACTIVATE ) ); AbortIf( DosCreateThread( (PFNTHREAD)ServiceRequests, &tid, stack + STACK_SIZE ) ); while( WinGetMsg( Hab, &qmsg, 0L, 0, 0 ) ) { WinDispatchMsg( Hab, &qmsg ); } WinDestroyWindow(hwndFrame); WinDestroyMsgQueue( Hmq ); WinTerminate( Hab ); return( 1 ); }
void SleepTask(MSec time) noexcept { TimeSpec reqtime(time); AbortIf( nanosleep(&reqtime,NULL)!=0 ,"CCore::Sys::SleepTask()"); }
void WaitSem::give() { AbortIf( !Win64::ReleaseSemaphore(h_sem,1,0) ,"CCore::Sys::WaitSem::give()"); }
WaitSem::~WaitSem() { AbortIf( !Win64::CloseHandle(h_sem) ,"CCore::Sys::WaitSem::~WaitSem()"); }
void TlsSlot::Free(Type index) noexcept { AbortIf( !Win64::TlsFree(index) ,"CCore::Sys::TlsSlot::Free()"); }
void MemPageFree(void *mem,ulen) noexcept { AbortIf( !Win64::VirtualFree(mem,0,Win64::FreeRelease) ,"CCore::Sys::MemPageFree()"); }