0 Members and 1 Guest are viewing this topic.
picto a écrit:En fait, j'ai l'impression que l'on peut écrire sur le GDI de n'importe ou.Ce n'est pas comme les surfs ....
picto a écrit:Admettons le cas d'un Display de ce genre ( qui dessine la puissance des moteurs utilisée )Il doit être déclaré en REDRAW ALWAYS dans le register Panel ...Comment puis je le subordonner à une extinction du display ?Comme par exemple sur les displays du panel du DGIV qui sont éteints en Safe ModeQuand ton écran est noir, celà veut il dire que c'est quand même redessiné à chaque frame ?Si oui, ça ne me parait pas très économique !
picto a écrit:Lors de l'élaboration de mon premier système, j'ai eu besoin d'un flag FALSE en cours de conception. Comment initialiser ensuite un système sous structure si dès le départ on se retrouve avec des variables à intialiser à TRUE et les autres à FALSE ?
bool Irridium::RedrawPanel_EngineIndicator (SURFHANDLE surf){ HDC hDC = oapiGetDC (surf);// Blabla pour dessiner avec les outils Windows oapiReleaseDC (surf, hDC); return true;}
for (int i = 0; i < 2; i++) {if (GetThrusterLevel (th_main[i]) != 0 || GetThrusterLevel (th_hover[i]) != 0 ) oapiTriggerPanelRedrawArea (0, AID_TOPDISPLAY);}
case AID_TOPDISPLAY: if (bTopDisplayStatus == TRUE) { return RedrawPanel_EngineIndicator (surf); } else if (bTopDisplayStatus == FALSE) { oapiBlt (surf, srf[1], 0, 0, 101, 101, 100, 100); // display eteint sur le bitmap } return true;
return RedrawPanel_EngineIndicator (surf);
void Irridium::RedrawPanel_EngineIndicator (SURFHANDLE surf){ if(!surf) return; HDC hDC = oapiGetDC (surf);// Blabla pour dessiner avec les outils Windows oapiReleaseDC (surf, hDC);}
Data.dThrustMainOne =GetThrusterLevel (th_main[0]); Data.dThrustMainTwo =GetThrusterLevel (th_main[1]); Data.dThrustHoverOne =GetThrusterLevel (th_hover[0]); Data.dThrustHoverTwo =GetThrusterLevel (th_hover[1]); Data.dMaxThrustMainOne =GetThrusterMax (th_main[0]); Data.dMaxThrustMainTwo =GetThrusterMax (th_main[1]); Data.dMaxThrustHoverOne =GetThrusterMax (th_hover[0]); Data.dMaxThrustHoverTwo =GetThrusterMax (th_hover[1]);
if(DoitEteindre){ SetThruster(main,0); Data.dThrustMainOne=0; oapiTriggerRedrawAID_DDISPLAY_ENGINE);}
void mafonction(){ switch(salut) {case HELLO:break;case OUAIS:break; }}
void mafonction(){ switch(salut) { case HELLO: break; case OUAIS: break; }}
affiche{ moveto(); LineTo(Data.dThrustMainOne); iOldRedrawMainOne=Data.dThrustMainOne;}
//reaffiche que si valeur changéeif(Data.dThrustMainOne!=iOldRedrawMainOne){ oapiTriggerRedrawArea();}
affiche{ moveto(); LineTo(Data.dThrustMainOne); LineTo(Data.dThrustMainTwo); iOldRedrawMainOne=Data.dThrustMainOne+Data.dThrustMainTwo;}
if((Data.dThrustMainOne+Data.dThrustMainTwo)!=iOldRedrawMainOne){ oapiTriggerRedrawArea();}
if(eteintAffichage){ Etteint(); iOldRedrawMainOne=-999;}
SelectObject (hDC, g_Param.pen[3]); for (int x = 0; x < 12; x++) { if (x%2==0) { MoveToEx (hDC, 3+x, 97 , NULL); LineTo (hDC, 3+x, 98-Data.dThrustMainOne*73); MoveToEx (hDC, 35+x, 97 , NULL); LineTo (hDC, 35+x, 98-Data.dThrustMainTwo*73); MoveToEx (hDC, 53+x, 97 , NULL); LineTo (hDC, 53+x, 98-Data.dThrustHoverOne*73); MoveToEx (hDC, 85+x, 97 , NULL); LineTo (hDC, 85+x, 98-Data.dThrustHoverTwo*73); } } SelectObject (hDC, g_Param.pen[3]); for (int x = 0; x < 12; x++) { if (x%1==0) { MoveToEx (hDC, 3+x, 97 , NULL); LineTo (hDC, 3+x, 98-Data.dThrustMainOne*73); MoveToEx (hDC, 35+x, 97 , NULL); LineTo (hDC, 35+x, 98-Data.dThrustMainTwo*73); MoveToEx (hDC, 53+x, 97 , NULL); LineTo (hDC, 53+x, 98-Data.dThrustHoverOne*73); MoveToEx (hDC, 85+x, 97 , NULL); LineTo (hDC, 85+x, 98-Data.dThrustHoverTwo*73); } } oapiReleaseDC (surf, hDC);
HDC hDC = oapiGetDC (surf); SelectObject (hDC, g_Param.pen[3]); for (int x = 0; x < 12; x++) { if (x%2==0) { MoveToEx (hDC, 3+x, 97 , NULL); LineTo (hDC, 3+x, 98-Data.dThrustMainOne*73); MoveToEx (hDC, 35+x, 97 , NULL); LineTo (hDC, 35+x, 98-Data.dThrustMainTwo*73); MoveToEx (hDC, 53+x, 97 , NULL); LineTo (hDC, 53+x, 98-Data.dThrustHoverOne*73); MoveToEx (hDC, 85+x, 97 , NULL); LineTo (hDC, 85+x, 98-Data.dThrustHoverTwo*73); } if (x%1==0) { MoveToEx (hDC, 3+x, 97 , NULL); LineTo (hDC, 3+x, 98-Data.dThrustMainOne*73); MoveToEx (hDC, 35+x, 97 , NULL); LineTo (hDC, 35+x, 98-Data.dThrustMainTwo*73); MoveToEx (hDC, 53+x, 97 , NULL); LineTo (hDC, 53+x, 98-Data.dThrustHoverOne*73); MoveToEx (hDC, 85+x, 97 , NULL); LineTo (hDC, 85+x, 98-Data.dThrustHoverTwo*73); } } oapiReleaseDC (surf, hDC);
case AID_TOPDISPLAY: if (bTopDisplayStatus == TRUE) { RedrawPanel_EngineIndicator (surf); } else if (bTopDisplayStatus == FALSE) { oapiBlt (surf, srf[1], 0, 0, 101, 101, 100, 100); dOldRedrawMoteurs=-999; } return true;
a) réinitialiser la valeur old quand je tripote le bouton ON OFF du display ?