00001 
00002 #include  "tools++.h"
00003 
00004 
00012 using namespace jbxl;
00013 
00014 
00015 
00016 
00017 
00018 
00019 #ifdef WIN32
00020 
00041 void  jbxl::DisPatcher(int signalno, ...)
00042 {
00043     int   i;
00044     unsigned int*  ign_signal = NULL;
00045 
00046     va_list args;    
00047     va_start(args, signalno);
00048 
00049     if (signalno>0) ign_signal = (unsigned int*)malloc(signalno*sizeof(int));
00050     if (ign_signal==NULL) signalno = 0;
00051     for (i=0; i<signalno; i++) {
00052         ign_signal[i] = va_arg(args, unsigned int);
00053     }
00054 
00055     MSG msg;
00056     while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE)){
00057         TranslateMessage(&msg);
00058         if (msg.message==WM_QUIT) exit(1);            
00059         for (i=0; i<signalno; i++) { 
00060             if (msg.message==ign_signal[i]) {
00061                 msg.message = WM_NULL;
00062                 break;
00063             }
00064         }
00065         DispatchMessage(&msg);
00066     }
00067 
00068     free(ign_signal);
00069     va_end(args);
00070     return;
00071 }
00072 
00073 
00074 #endif