예제 #1
0
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 );
}
예제 #2
0
void SleepTask(MSec time) noexcept 
 {
  TimeSpec reqtime(time);
  
  AbortIf( nanosleep(&reqtime,NULL)!=0 ,"CCore::Sys::SleepTask()");
 }
예제 #3
0
void WaitSem::give()
 {
  AbortIf( !Win64::ReleaseSemaphore(h_sem,1,0) ,"CCore::Sys::WaitSem::give()");
 }
예제 #4
0
WaitSem::~WaitSem()
 {
  AbortIf( !Win64::CloseHandle(h_sem) ,"CCore::Sys::WaitSem::~WaitSem()");
 }
예제 #5
0
void TlsSlot::Free(Type index) noexcept
 {
  AbortIf( !Win64::TlsFree(index) ,"CCore::Sys::TlsSlot::Free()");
 }
예제 #6
0
void MemPageFree(void *mem,ulen) noexcept
 {
  AbortIf( !Win64::VirtualFree(mem,0,Win64::FreeRelease) ,"CCore::Sys::MemPageFree()");
 }