Diff for /np2/macosx/np2.cpp between versions 1.22 and 1.25

version 1.22, 2003/10/25 21:28:14 version 1.25, 2003/10/30 19:39:52
Line 31 Line 31
 #include        "configure.h"  #include        "configure.h"
 #include        "screenopt.h"  #include        "screenopt.h"
 #include        "soundopt.h"  #include        "soundopt.h"
   #include        "macnewdisk.h"
   #include        "fdefine.h"
   #include        "hid.h"
   #include        "midiopt.h"
   
 #define USE_RESUME  #define USE_RESUME
 #define NP2OPENING  #define NP2OPENING
Line 68  static const char np2resume[] = "sav"; Line 71  static const char np2resume[] = "sav";
   
 // ---- おまじない  // ---- おまじない
   
 #if TARGET_CARBON  
 #define AEProc(fn)      NewAEEventHandlerUPP((AEEventHandlerProcPtr)(fn))  #define AEProc(fn)      NewAEEventHandlerUPP((AEEventHandlerProcPtr)(fn))
 #else  
 #define AEProc(fn)      NewAEEventHandlerProc(fn)  
 #endif  
   
 static void setUpCarbonEvent(void);  static void setUpCarbonEvent(void);
 static bool setupMainWindow(void);  static bool setupMainWindow(void);
 static void toggleFullscreen(void);  static void toggleFullscreen(void);
   
 #ifdef TARGET_API_MAC_CARBON  
 static pascal OSErr handleQuitApp(const AppleEvent *event, AppleEvent *reply,  static pascal OSErr handleQuitApp(const AppleEvent *event, AppleEvent *reply,
                                                                                                                         long refcon) {                                                                                                                          long refcon) {
   
Line 87  static pascal OSErr handleQuitApp(const  Line 85  static pascal OSErr handleQuitApp(const 
         (void)event, (void)reply, (void)refcon;          (void)event, (void)reply, (void)refcon;
         return(noErr);          return(noErr);
 }  }
 #endif  
   pascal OSErr OpenAppleEventHandler(const AppleEvent *event, AppleEvent *reply,long print)
   {
           long            i,ct,len;
           FSSpec          fsc,*pp;
           DescType        rtype;
           AEKeyword       key;
           AEDescList      dlist;
           
           if( ! AEGetParamDesc( event,keyDirectObject,typeAEList,&dlist ) )       {
                   AECountItems( &dlist,&ct );
                   for( i=1;i<=ct;i++ )    {
               pp=&fsc;
                           if( ! AEGetNthPtr( &dlist,i,typeFSS,&key,&rtype,(Ptr)pp,(long)sizeof(FSSpec),&len ) )   {
                   char            fname[MAX_PATH];
                   int                     ftype;
                   fsspec2path(&fsc, fname, MAX_PATH);
                   ftype = file_getftype(fname);
                   if ((ftype != FTYPE_D88) && (ftype != FTYPE_BETA)) {
                       diskdrv_sethdd(0, fname);
                   }
                   else {
                       diskdrv_setfdd(i-1, fname, 0);
                   }
                           }
                   }
                   AEDisposeDesc( &dlist );
           }
           return( 0 );
   }
   
   
 static void InitToolBox(void) {  static void InitToolBox(void) {
   
 #if !TARGET_CARBON  
         MaxApplZone();  
         InitGraf(&qd.thePort);  
         InitFonts();  
         InitWindows();  
         InitMenus();  
         TEInit();  
         InitDialogs(0);  
 #endif  
         FlushEvents(everyEvent, 0);          FlushEvents(everyEvent, 0);
         InitCursor();          InitCursor();
   
 #ifdef TARGET_API_MAC_CARBON  
         AEInstallEventHandler(kCoreEventClass, kAEQuitApplication,          AEInstallEventHandler(kCoreEventClass, kAEQuitApplication,
                                                 AEProc(handleQuitApp), 0L, false);                                                  AEProc(handleQuitApp), 0L, false);
 #endif          AEInstallEventHandler(kCoreEventClass, kAEOpenDocuments,
                                                   AEProc(OpenAppleEventHandler), 0L, false);
 }  }
   
 static void MenuBarInit(void) {  static void MenuBarInit(void) {
 #if 0  #if 1
         Handle          hMenu;          Handle          hMenu;
         MenuHandle      happlemenu;          MenuHandle      happlemenu;
   
Line 128  static void MenuBarInit(void) { Line 147  static void MenuBarInit(void) {
         InsertMenu(GetMenu(IDM_KEYBOARD), -1);          InsertMenu(GetMenu(IDM_KEYBOARD), -1);
         InsertMenu(GetMenu(IDM_SOUND), -1);          InsertMenu(GetMenu(IDM_SOUND), -1);
         InsertMenu(GetMenu(IDM_MEMORY), -1);          InsertMenu(GetMenu(IDM_MEMORY), -1);
       SetMenuItemModifiers(GetMenuRef(IDM_FDD2), IDM_FDD2OPEN, kMenuOptionModifier);
       SetMenuItemModifiers(GetMenuRef(IDM_FDD2), IDM_FDD2EJECT, kMenuOptionModifier);
       SetMenuItemModifiers(GetMenuRef(IDM_SASI2), IDM_SASI2OPEN, kMenuOptionModifier);
         DrawMenuBar();          DrawMenuBar();
 #endif  #else
     OSStatus    err;      OSStatus    err;
     IBNibRef    nibRef;          IBNibRef    nibRef;    
     err = CreateNibReference(CFSTR("np2"), &nibRef);      err = CreateNibReference(CFSTR("np2"), &nibRef);
     if (err!=noErr) return;      if (err!=noErr) return;
     err = SetMenuBarFromNib(nibRef, CFSTR("MainMenu"));      err = SetMenuBarFromNib(nibRef, CFSTR("MainMenu"));
     DisposeNibReference(nibRef);      DisposeNibReference(nibRef);
   #endif
 }  }
   
 static void changescreen(BYTE mode) {  static void changescreen(BYTE mode) {
 #if 0  
         (void)mode;  
 #endif  
   
         BYTE    change;          BYTE    change;
         BYTE    renewal;          BYTE    renewal;
Line 173  static void changescreen(BYTE mode) { Line 193  static void changescreen(BYTE mode) {
 static void HandleMenuChoice(long wParam) {  static void HandleMenuChoice(long wParam) {
   
         UINT    update;          UINT    update;
         Str255  applname;  
   
       soundmng_stop();
         update = 0;          update = 0;
         switch(wParam) {          switch(wParam) {
                 case IDM_ABOUT:                  case IDM_ABOUT:
Line 190  static void HandleMenuChoice(long wParam Line 210  static void HandleMenuChoice(long wParam
                         initConfig();                          initConfig();
                         break;                          break;
   
 #if 0                  case IDM_NEWDISK:
                 case IDM_NEWFDD:              newdisk();
                         newdisk();  
                         break;                          break;
 #endif  
 #if 0  #if 0
                 case IDM_NEWHDD:                  case IDM_NEWHDD:
                         newhdddisk();                          newhdddisk();
                         break;                          break;
 #endif  #endif
   
         case IDM_FONT:          case IDM_FONT:
             dialog_font();              dialog_font();
             break;              break;
Line 302  static void HandleMenuChoice(long wParam Line 319  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
                         break;                          break;
   
 #if defined(NP2GCC)  
                 case IDM_SCREENOPT:                  case IDM_SCREENOPT:
                         initScreenOpt();                          initScreenOpt();
                         break;                          break;
Line 314  static void HandleMenuChoice(long wParam Line 330  static void HandleMenuChoice(long wParam
             toggleMenubar();              toggleMenubar();
                         break;                          break;
                           
         case IDM_SOUNDOPT:          case IDM_MIDIOPT:
               initMidiOpt();
               break;
               
                   case IDM_MIDIPANIC:
                           rs232c_midipanic();
                           mpu98ii_midipanic();
                           pc9861k_midipanic();
                           break;
   
           case IDM_SNDOPT:
             initSoundOpt();              initSoundOpt();
             break;              break;
 #endif  
   
                 case IDM_KEY:                  case IDM_KEY:
                         menu_setkey(0);                          menu_setkey(0);
Line 466  static void HandleMenuChoice(long wParam Line 491  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
                         break;                          break;
   
                   case IDM_BMPSAVE:
                           dialog_writebmp();
                           break;
   
           case IDM_S98LOGGING:
               dialog_s98();
               break;
               
                 case IDM_DISPCLOCK:                  case IDM_DISPCLOCK:
                         menu_setdispclk(np2oscfg.DISPCLK ^ 1);                          menu_setdispclk(np2oscfg.DISPCLK ^ 1);
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
Line 486  static void HandleMenuChoice(long wParam Line 519  static void HandleMenuChoice(long wParam
                         update |= SYS_UPDATECFG;                          update |= SYS_UPDATECFG;
                         break;                          break;
   
           case IDM_MSRAPID:
               menu_setmsrapid(np2cfg.MOUSERAPID ^ 1);
               update |= SYS_UPDATECFG;
               break;
   
                 case IDM_I286SAVE:                  case IDM_I286SAVE:
                         debugsub_status();                          debugsub_status();
                         break;                          break;
   
           case IDM_RECORDING:
               menu_setrecording(false);
               break;
   
                 default:                  default:
                         if (HiWord(wParam) == IDM_APPLE) {  
                                 GetMenuItemText(GetMenuHandle(IDM_APPLE),   
                                                                                         LoWord(wParam), applname);  
 #if !TARGET_API_MAC_CARBON  
                                 (void)OpenDeskAcc(applname);  
 #endif  
                         }  
                         break;                          break;
         }          }
         sysmng_update(update);          sysmng_update(update);
         HiliteMenu(0);          HiliteMenu(0);
 }  }
   
 #if 0  
 static void HandleUpdateEvent(EventRecord *pevent) {  
   
         WindowPtr       hWnd;  
   
         hWnd = (WindowPtr)pevent->message;  
         BeginUpdate(hWnd);  
         scrndraw_redraw();  
         EndUpdate(hWnd);  
 }  
 #endif  
   
 static void HandleMouseDown(EventRecord *pevent) {  static void HandleMouseDown(EventRecord *pevent) {
   
         WindowPtr       hWnd;          WindowPtr       hWnd;
         Rect            rDrag;  
   
     soundmng_stop();      soundmng_stop();
         switch(FindWindow(pevent->where, &hWnd)) {          switch(FindWindow(pevent->where, &hWnd)) {
                 case inMenuBar:                  case inMenuBar:
                         HandleMenuChoice(MenuSelect(pevent->where));                          HandleMenuChoice(MenuSelect(pevent->where));
                         break;                          break;
   
                 case inDrag:  
 #if TARGET_API_MAC_CARBON  
                 {  
                         BitMap  gscreenBits;  
                         GetQDGlobalsScreenBits(&gscreenBits);  
                         rDrag = gscreenBits.bounds;  
                         InsetRect(&rDrag, DRAG_THRESHOLD, DRAG_THRESHOLD);  
                         DragWindow(hWnd, pevent->where, &rDrag);  
                 }  
 #else  
                         rDrag = qd.screenBits.bounds;  
                         InsetRect(&rDrag, DRAG_THRESHOLD, DRAG_THRESHOLD);  
                         DragWindow(hWnd, pevent->where, &rDrag);  
 #endif  
                         break;  
   
                 case inContent:  
 #if defined(NP2GCC)  
             if (controlKey & GetCurrentKeyModifiers() ) {  
                 mouse_btn(MOUSE_RIGHTDOWN);  
             }  
             else {  
                 mouse_btn(MOUSE_LEFTDOWN);  
             }  
 #endif  
                         break;  
   
 #ifndef NP2GCC  
                 case inGoAway:  
                         if (TrackGoAway(hWnd, pevent->where)) { }  
                         np2running = FALSE;  
                         break;  
 #endif  
         }          }
     soundmng_play();  
 }  }
   
 #if 0  
 static void eventproc(EventRecord *event) {  
   
         switch(event->what) {  
                 case mouseDown:  
                         HandleMouseDown(event);  
                         break;  
   
                 case updateEvt:  
                         HandleUpdateEvent(event);  
                         break;  
   
                 case keyDown:  
                 case autoKey:  
                         mackbd_f12down(((event->message) & keyCodeMask) >> 8);  
                         if (event->modifiers & cmdKey) {  
                                 HandleMenuChoice(MenuKey(event->message & charCodeMask));  
                         }  
                         break;  
   
                 case keyUp:  
                         mackbd_f12up(((event->message) & keyCodeMask) >> 8);  
                         break;  
   
 #if defined(NP2GCC)  
         case mouseUp:  
             if (controlKey & GetCurrentKeyModifiers()) {  
                 mouse_btn(MOUSE_RIGHTUP);  
             }  
             else {  
                 mouse_btn(MOUSE_LEFTUP);  
             }  
                         break;  
 #endif  
         }  
 }  
 #endif  
   
 // ----  // ----
   
Line 632  static void flagsave(const char *ext) { Line 582  static void flagsave(const char *ext) {
         statsave_save(path);          statsave_save(path);
 }  }
   
   static void flagdelete(const char *ext) {
   
           char    path[MAX_PATH];
   
           getstatfilename(path, ext, sizeof(path));
           file_delete(path);
   }
   
 static void flagload(const char *ext) {  static void flagload(const char *ext) {
   
         char    path[MAX_PATH];          char    path[MAX_PATH];
Line 650  static void openingNP2(void) { Line 608  static void openingNP2(void) {
     Rect                srt, bounds;      Rect                srt, bounds;
     GrafPtr             port;      GrafPtr             port;
     CFURLRef    openingURL;      CFURLRef    openingURL;
     CFStringRef path;  
     char                buffer[1024];      char                buffer[1024];
     FSRef               fsr;      FSRef               fsr;
     FSSpec              fsc;      FSSpec              fsc;
Line 664  static void openingNP2(void) { Line 621  static void openingNP2(void) {
     RGBBackColor(&col);      RGBBackColor(&col);
     EraseRect(&bounds);      EraseRect(&bounds);
           
     openingURL=CFURLCopyAbsoluteURL(CFBundleCopyResourcesDirectoryURL(CFBundleGetMainBundle()));      openingURL=CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("nekop2"), CFSTR("bmp"), NULL);
     if (openingURL) {      if (openingURL) {
         path = CFURLCopyFileSystemPath(openingURL, kCFURLPOSIXPathStyle);          if (CFURLGetFSRef(openingURL, &fsr)) {
         if (path) {              FSPathMakeRef((const UInt8*)buffer, &fsr, NULL);
             if (CFStringGetCString(path, buffer, 1024, CFStringGetSystemEncoding())) {              FSGetCatalogInfo(&fsr, kFSCatInfoNone, NULL, NULL, &fsc, NULL);
                 strcat(buffer, "/nekop2.bmp");              if (!GetGraphicsImporterForFile(&fsc, &gi)) {
                 FSPathMakeRef((const UInt8*)buffer, &fsr, NULL);                  if (!GraphicsImportGetNaturalBounds(gi, &srt)) {
                 FSGetCatalogInfo(&fsr, kFSCatInfoNone, NULL, NULL, &fsc, NULL);                      OffsetRect( &srt, -srt.left, -srt.top);
                 if (!GetGraphicsImporterForFile(&fsc, &gi)) {                      GraphicsImportSetBoundsRect(gi, &srt);
                     if (!GraphicsImportGetNaturalBounds(gi, &srt)) {                      GraphicsImportGetAsPicture(gi, &pict);
                         OffsetRect( &srt, -srt.left, -srt.top);                      OffsetRect(&srt, (640-srt.right)/2, (400-srt.bottom)/2);
                         GraphicsImportSetBoundsRect(gi, &srt);                      DrawPicture(pict,&srt);
                         GraphicsImportGetAsPicture(gi, &pict);                      QDFlushPortBuffer(GetWindowPort(hWndMain), NULL);
                         OffsetRect(&srt, (640-srt.right)/2, (400-srt.bottom)/2);                      KillPicture(pict);
                         DrawPicture(pict,&srt);  
                         QDFlushPortBuffer(GetWindowPort(hWndMain), NULL);  
                         KillPicture(pict);  
                     }  
                     CloseComponent(gi);  
                 }                  }
                   CloseComponent(gi);
             }              }
             if (path) CFRelease(path);  
         }          }
         if (openingURL) CFRelease(openingURL);          CFRelease(openingURL);
     }      }
     SetPort(port);      SetPort(port);
 }  }
Line 696  static void openingNP2(void) { Line 648  static void openingNP2(void) {
   
 int main(int argc, char *argv[]) {  int main(int argc, char *argv[]) {
   
 #if 0  
         Rect            wRect;  
         EventRecord     event;  
 #endif  
     EventRef            theEvent;      EventRef            theEvent;
     EventTargetRef      theTarget;      EventTargetRef      theTarget;
 #ifdef OPENING_WAIT  #ifdef OPENING_WAIT
Line 717  int main(int argc, char *argv[]) { Line 665  int main(int argc, char *argv[]) {
   
         TRACEINIT();          TRACEINIT();
   
 #if 0  
         SetRect(&wRect, 100, 100, 100, 100);  
         hWndMain = NewWindow(0, &wRect, "\pNeko Project II", FALSE,  
                                                                 noGrowDocProc, (WindowPtr)-1, TRUE, 0);  
         if (!hWndMain) {  
                 TRACETERM();  
                 macossub_term();  
                 dosio_term();  
                 return(0);  
         }  
         scrnmng_initialize();  
         SizeWindow(hWndMain, 640, 400, TRUE);  
     setUpCarbonEvent();  
         ShowWindow(hWndMain);  
 #endif  
     if (!(setupMainWindow())) {      if (!(setupMainWindow())) {
         return(0);          return(0);
     }      }
Line 773  int main(int argc, char *argv[]) { Line 706  int main(int argc, char *argv[]) {
         pccore_init();          pccore_init();
         S98_init();          S98_init();
   
       hid_init();
           if (soundmng_initialize() == SUCCESS) {
                   soundmng_pcmvolume(SOUND_PCMSEEK, np2cfg.MOTORVOL);
                   soundmng_pcmvolume(SOUND_PCMSEEK1, np2cfg.MOTORVOL);
           }
   
 #if defined(NP2GCC)  #if defined(NP2GCC)
         if (np2oscfg.MOUSE_SW) {                                                                                // ver0.30          if (np2oscfg.MOUSE_SW) {                                                                                // ver0.30
                 mouse_running(MOUSE_ON);                  mouse_running(MOUSE_ON);
Line 781  int main(int argc, char *argv[]) { Line 720  int main(int argc, char *argv[]) {
 #ifdef OPENING_WAIT  #ifdef OPENING_WAIT
         while((GETTICK() - tick) < OPENING_WAIT);          while((GETTICK() - tick) < OPENING_WAIT);
 #endif  #endif
         scrndraw_redraw();  
         pccore_reset();          pccore_reset();
   
 #if defined(USE_RESUME)  #if defined(USE_RESUME)
Line 790  int main(int argc, char *argv[]) { Line 728  int main(int argc, char *argv[]) {
     }      }
 #endif  #endif
   
 #if 0  
         SetEventMask(everyEvent);  
 #endif  
     theTarget = GetEventDispatcherTarget();      theTarget = GetEventDispatcherTarget();
           
         np2running = TRUE;          np2running = TRUE;
Line 802  int main(int argc, char *argv[]) { Line 737  int main(int argc, char *argv[]) {
             SendEventToEventTarget (theEvent, theTarget);              SendEventToEventTarget (theEvent, theTarget);
             ReleaseEvent(theEvent);              ReleaseEvent(theEvent);
         }          }
 #if 0  
                 if (WaitNextEvent(everyEvent, &event, 0, 0)) {  
                         eventproc(&event);  
                 }  
 #endif  
                 else {                  else {
               soundmng_play();
                         if (np2oscfg.NOWAIT) {                          if (np2oscfg.NOWAIT) {
 #if 0  
                                 mackbd_callback();  
 #endif  
                                 pccore_exec(framecnt == 0);                                  pccore_exec(framecnt == 0);
                                 if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip                                  if (np2oscfg.DRAW_SKIP) {                       // nowait frame skip
                                         framecnt++;                                          framecnt++;
Line 828  int main(int argc, char *argv[]) { Line 756  int main(int argc, char *argv[]) {
                         }                          }
                         else if (np2oscfg.DRAW_SKIP) {                  // frame skip                          else if (np2oscfg.DRAW_SKIP) {                  // frame skip
                                 if (framecnt < np2oscfg.DRAW_SKIP) {                                  if (framecnt < np2oscfg.DRAW_SKIP) {
 #if 0  
                     mackbd_callback();  
 #endif  
                                         pccore_exec(framecnt == 0);                                          pccore_exec(framecnt == 0);
                                         framecnt++;                                          framecnt++;
                                 }                                  }
Line 841  int main(int argc, char *argv[]) { Line 766  int main(int argc, char *argv[]) {
                         else {                                                          // auto skip                          else {                                                          // auto skip
                                 if (!waitcnt) {                                  if (!waitcnt) {
                                         UINT cnt;                                          UINT cnt;
 #if 0  
                     mackbd_callback();  
 #endif  
                                         pccore_exec(framecnt == 0);                                          pccore_exec(framecnt == 0);
                                         framecnt++;                                          framecnt++;
                                         cnt = timing_getcount();                                          cnt = timing_getcount();
Line 874  int main(int argc, char *argv[]) { Line 796  int main(int argc, char *argv[]) {
                 }                  }
         }          }
         np2running = FALSE;          np2running = FALSE;
       menu_setrecording(true);
   
     if (scrnmode & SCRNMODE_FULLSCREEN) {      if (scrnmode & SCRNMODE_FULLSCREEN) {
         toggleFullscreen();          toggleFullscreen();
Line 885  int main(int argc, char *argv[]) { Line 808  int main(int argc, char *argv[]) {
     if (np2oscfg.resume) {      if (np2oscfg.resume) {
         flagsave(np2resume);          flagsave(np2resume);
     }      }
           else {
                   flagdelete(np2resume);
           }
 #endif  #endif
   
         pccore_term();          pccore_term();
         S98_trash();          S98_trash();
   
       hid_clear();
 #if defined(NP2GCC)  #if defined(NP2GCC)
         mouse_running(MOUSE_OFF);          mouse_running(MOUSE_OFF);
 #endif  #endif
   
           soundmng_deinitialize();
         scrnmng_destroy();          scrnmng_destroy();
   
         if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) {          if (sys_updates & (SYS_UPDATECFG | SYS_UPDATEOSCFG)) {
Line 1008  static pascal OSStatus np2windowevent(Ev Line 936  static pascal OSStatus np2windowevent(Ev
                   
     switch (eventClass)      switch (eventClass)
         {                  {        
             case kEventClassWindow:                          case kEventClassWindow:
                 if (whatHappened == kEventWindowClose) {                  switch (whatHappened)
                     np2running = FALSE;                  {
                     result = noErr;                      case kEventWindowClose:
                 }                          np2running = FALSE;
                 else if (whatHappened == kEventWindowShowing) {                          result = noErr;
                     scrndraw_redraw();                          break;
                       case kEventWindowShowing:
                           scrndraw_redraw();
                          break;
                       case kEventWindowActivated:
                           DisableAllMenuItems(GetMenuHandle(IDM_EDIT));
                           break;
                 }                  }
                 break;                  break;
             case kEventClassKeyboard:              case kEventClassKeyboard:
Line 1080  static const EventTypeSpec appEventList[ Line 1014  static const EventTypeSpec appEventList[
 static const EventTypeSpec windEventList[] = {  static const EventTypeSpec windEventList[] = {
                                 {kEventClassWindow,             kEventWindowClose},                                  {kEventClassWindow,             kEventWindowClose},
                                 {kEventClassWindow,             kEventWindowShowing},                                  {kEventClassWindow,             kEventWindowShowing},
                                   {kEventClassWindow,             kEventWindowActivated},
                                 {kEventClassKeyboard,   kEventRawKeyDown},                                  {kEventClassKeyboard,   kEventRawKeyDown},
                                 {kEventClassKeyboard,   kEventRawKeyUp},                                  {kEventClassKeyboard,   kEventRawKeyUp},
                                 {kEventClassKeyboard,   kEventRawKeyRepeat},                                  {kEventClassKeyboard,   kEventRawKeyRepeat},
Line 1096  static void setUpCarbonEvent(void) { Line 1031  static void setUpCarbonEvent(void) {
         InstallWindowEventHandler(hWndMain, NewEventHandlerUPP(np2windowevent),          InstallWindowEventHandler(hWndMain, NewEventHandlerUPP(np2windowevent),
                                                                 GetEventTypeCount(windEventList),                                                                  GetEventTypeCount(windEventList),
                                                                 windEventList, 0, NULL);                                                                  windEventList, 0, NULL);
       InstallStandardEventHandler(GetWindowEventTarget(hWndMain));
 }  }
   
 bool setupMainWindow(void) {  bool setupMainWindow(void) {

Removed from v.1.22  
changed lines
  Added in v.1.25


RetroPC.NET-CVS <cvs@retropc.net>