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