#define MAX_ERREURS 1000 #define LONG_MAX 100 char (*erreurs)[LONG_MAX]; int n_erreurs=0; void wait(short TEMPS) { ReinitTimer(); AttendSync(50*TEMPS); } void AjWarning(const char *format, ...) { int i=0; char vbuf[1024]; va_list arg_ptr; va_start(arg_ptr, format); _vsnprintf(vbuf, sizeof(vbuf), format, arg_ptr); if (strlen(vbuf)>=LONG_MAX) return; for (i=0;i12) { y=RouletteSouris(); if (y>0 && 12+offset_y0) offset_y--; } PositionSouris(&x,&y); if (!ecrTemp) { ecrTemp=CreeEcran(112,80); objEcran=EcranVersObjet(ecrTemp); y_menu=0; offset_y=0; } if (menu_ouvert && clic_gauche_appuye && x>=LARG-6 && y>=HAUT-66 && yn_erreurs-12) offset_y=n_erreurs-12; if (offset_y<0) offset_y=0; } else if (clic_gauche && menu_ouvert) { if (y>=HAUT-6 && 12+offset_y=HAUT-72 && y<=HAUT-66 && offset_y>0) offset_y--; else menu_ouvert=0; } else if (x>=LARG-40 && y>=HAUT-8 && x=n_erreurs) break; DrawStrCouleur(1,8+6*i,(unsigned char*)erreurs[i+offset_y],0,CYAN); } if (offset_y>0) DessCarCouleur(106,8,19,1,ROUGE); if (12+offset_y12) { FxRect(106,14,5,62,BLANC); y=(60*12)/n_erreurs; x=(60*offset_y)/n_erreurs; // FxCadre(107,(60+offset_y)/n_erreurs+(60*12)/(n_erreurs*2),5,1,BLEU); FxCadre(107,15+x,3,y,BLEU); } max_y=6*i; ChoisitEcran(&ecrCour); } /* if (menu_ouvert && x>=LARG-112 && y>=HAUT-80) { } else { if (clic_gauche) menu_ouvert=0; }*/ if (menu_ouvert) { if (x_menu<72) x_menu+=4; if (y_menumax_y) y_menu=max_y; if (transErreur<224) transErreur+=4; } else { if (y_menu>0) y_menu-=4; if (y_menu<0) y_menu=0; if (x_menu>0) x_menu-=4; if (transErreur<128) transErreur+=4; if (transErreur>128) transErreur-=4; } if (!skip) { FxObjet(objEcran,LARG-40-x_menu,HAUT-8-y_menu,FX_TRANS,transErreur); } return menu_ouvert; } /*short keywait() { int k; while(1) { for (k=0;k<256;k++) if (toucheAppuyee(k)) break; if (k<256) break; AfficheEcran(); Sleep(50); } return k; }*/ int keywait() { int k, y; static int transErreur=0; static ECRAN *ecrTemp, *ecran; OBJET *objEcran; EcranCourant(&ecrCour); if (!ecrTemp) ecrTemp=CreeEcran(240,128); CopieEcran(ecrTemp,&ecrCour); // memcpy(ecrTemp->Bits,ecrCour.Bits,240*(128+1)*3); ModeAttente(0,0); SignalMenu=SignalObjet=0; if (!ecran) ecran=CreeEcran(40,8); objEcran=EcranVersObjet(ecran); while(1) { clic_gauche_appuye=testTouche(T_SOURIS_GAUCHE); clic_gauche=toucheAppuyee(T_SOURIS_GAUCHE); CopieEcran(&ecrCour,ecrTemp); // memcpy(ecrCour.Bits,ecrTemp->Bits,240*(128+1)*3); if (n_erreurs>0) { if (!GereMenuErreur(ecrTemp)) y=RouletteSouris(); // FxCadre(0,HAUT-7,100,6,NOIR,FX_TRANS,128); } else y=RouletteSouris(); SousMenuFichier.Gere(); SousMenuConvert.Gere(); SousMenuMachine.Gere(); Menu.Gere(); while(GetForegroundWindow()!=hConsole) Sleep(100); if (!skip) Sleep(10); skip=AttendSyncFreq(60); CopieEcran(&ecrCour,ecrTemp); if (SignalMenu || SignalObjet) { return 32766; } if (y<0) return T_HAUT; else if (y>0) return T_BAS; //Quelle touche est appuyée? for (k=T_BACKSPACE;k<256;k++) if (toucheAppuyee(k)) break; if (k<256) break; } DetruitEcran(ecran); return k; } short litTouche() { int k; for (k=0;k<256;k++) if (toucheAppuyee(k)) break; if (k<256) return k; else return 0; } short range(short arg,short rg1,short rg2,short defaut) { if (arg==-1) arg=defaut; if (arg>=rg1 && arg<=rg2) return arg; if (arg>260 && arg<740) arg=defaut+(arg-500); if (argrg2) arg=rg2; return arg; } void bitmap_put(short x, short y, unsigned char *pic) { return; // WinBitmapPut(DeskTop,x, y, pic+2, 1) ; } int OuvreFichier(char *fichier, char *type) { static char chemin[MAX_PATH]; int i; // static char strPath[MAX_PATH]; static OPENFILENAME ofn = { sizeof(OPENFILENAME), NULL, NULL, NULL, NULL, 0, 1, NULL, MAX_PATH, NULL, 0, chemin, TEXT("Charger un fichier"), OFN_FILEMUSTEXIST|OFN_HIDEREADONLY, 0, 0, TEXT(".bmp"), 0, NULL, NULL }; GetCurrentDirectory(MAX_PATH,chemin); ofn.hwndOwner=hConsole; ofn.lpstrFile=fichier; ofn.lpstrFilter=type+1; ofn.nFilterIndex=*type; i=GetOpenFileName(&ofn); SetCurrentDirectory(chemin); return i; }