0 Members and 2 Guests are viewing this topic.
InitSelecteur(,...,....,1); ERREUR DE TYPEInitSelecteur(,...,....,ZEROIMAGE360°); OK
void Irridium::RedrawPanel_Bouton_Selecteur (SURFHANDLE surf,int id){ if(!surf) return; id = id-AID_BOUTON_SELECTEUR; if(Selecteur[id].Etat==Ant125Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY, 30, 30); } if(Selecteur[id].Etat==Ant90Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+30, 30, 30); } if(Selecteur[id].Etat==Ant45Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+60, 30, 30); } if(Selecteur[id].Etat==ZeroDeg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+90, 30, 30); } if(Selecteur[id].Etat==Hor45Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+120, 30, 30); } if(Selecteur[id].Etat==Hor90Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+150, 30, 30); } if(Selecteur[id].Etat==Hor125Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+180, 30, 30); } if(Selecteur[id].Etat==Cent80Deg) { oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+210, 30, 30); }}
void Irridium::InitialiseSelecteur(int MotCle,int PositionPanelX,int PositionPanelY,int SourceBitmapX,int SourceBitmapY,BOOL EtatInitial,int Panelo){ if(MotCle<MECHANICAL_OPEN_DOCK||MotCle>=FIN_BOUTON_SELECTEUR||PositionPanelX<0||PositionPanelX>1280||PositionPanelY<0||PositionPanelY>1024||SourceBitmapX<0||SourceBitmapX<0||Panelo<0||Panelo>1) { // LogError(" Erreur dans InitialiseSelecteur"); return; //fait rien } Selecteur[MotCle].Etat=EtatInitial; Selecteur[MotCle].iBmpPosX=SourceBitmapX; Selecteur[MotCle].iBmpPosY=SourceBitmapY; Selecteur[MotCle].AidPosZoneX=PositionPanelX; Selecteur[MotCle].AidPosZoneY=PositionPanelY; Selecteur[MotCle].Panel=Panelo;}typedef struct{ int Etat; int iBmpPosX; int iBmpPosY; int AidPosZoneX; int AidPosZoneY; int Panel; BOOL bAction;}BOUTON; BOUTON Selecteur[FIN_BOUTON_SELECTEUR];
/////////////////////////////////////// Rajouter dans header en dehors de la classe://///////////////////////////////////typedef enum{ ZEROIMAGE0°=3, ZEROIMAGE45°=4, ZEROIMAGE90°=5, ZEROIMAGE135°=6, ZEROIMAGE180°=7, ZEROIMAGE225°=0, ZEROIMAGE270°=1, ZEROIMAGE315°=2, ZEROIMAGE360°=3,}IMAGESEL;/////////////////////////////////////// A changer://///////////////////////////////////typedef struct{ int Etat; int iBmpPosX; int iBmpPosY; int AidPosZoneX; int AidPosZoneY; int Panel; BOOL bAction; int OffsetImageSelecteur; int NbrPositionSelecteur;}BOUTON;/////////////////////////////////////// InitialiseSelecteur a changer/////////////////////////////////////void Irridium::InitialiseSelecteur(int MotCle,int PositionPanelX,int PositionPanelY,int SourceBitmapX,int SourceBitmapY,BOOL EtatInitial,int Panelo,IMAGESEL OffsetImage,int NbrPos){ if(MotCle<MECHANICAL_OPEN_DOCK||MotCle>=FIN_BOUTON_SELECTEUR||PositionPanelX<0||PositionPanelX>1280||PositionPanelY<0||PositionPanelY>1024||SourceBitmapX<0||SourceBitmapX<0||Panelo<0||Panelo>1||NbrPos > 8 ) { // LogError(" Erreur dans InitialiseSelecteur"); return; //fait rien } Selecteur[MotCle].Etat=EtatInitial; Selecteur[MotCle].iBmpPosX=SourceBitmapX; Selecteur[MotCle].iBmpPosY=SourceBitmapY; Selecteur[MotCle].AidPosZoneX=PositionPanelX; Selecteur[MotCle].AidPosZoneY=PositionPanelY; Selecteur[MotCle].Panel=Panelo; Selecteur[MotCle].OffsetImageSelecteur=OffsetImage; Selecteur[MotCle].NbrPositionSelecteur=NbrPos;}/////////////////////////////////////// RedrawPanel_Bouton_Selecteur a changer/////////////////////////////////////void Irridium::RedrawPanel_Bouton_Selecteur (SURFHANDLE surf,int id){ if(!surf) return; id = id-AID_BOUTON_SELECTEUR; int OffsetY=(Selecteur[id].Etat+Selecteur[id].OffsetImageSelecteur)*30; if(OffsetY>210) OffsetY-=240; oapiBlt (surf, srf[1], 0, 0,Selecteur[id].iBmpPosX,Selecteur[id].iBmpPosY+Offsety, 30, 30);}
/////////////////////////////////////////// A rajouter au début de clbkPanelMouseEvent///////////////////////////////////////// //----------------------------------- // RAJOUTER ***AVANT*** LE SWITCH(id) //----------------------------------- // detection et interception des click pour selecteur if(id>=AID_BOUTON_SELECTEUR&&id<AID_BOUTON_SELECTEUR+FIN_BOUTON_SELECTEUR) { int Bt=id-AID_BOUTON_SELECTEUR; if (event & PANEL_MOUSE_LBDOWN && Selecteur[Bt].Etat>0 ) { Selecteur[Bt].Etat--; SetEtatSelecteur(Bt,Selecteur[Bt].Etat); } if (event & PANEL_MOUSE_RBDOWN && Selecteur[Bt].Etat<Selecteur[Bt].NbrPositionSelecteur-1) { Selecteur[Bt].Etat++; SetEtatSelecteur(Bt,Selecteur[Bt].Etat); } return 1; }
if(id >=AID_BOUTON_POUSSOIR && id <AID_BOUTON_POUSSOIR + FIN_BOUTON_POUSSOIR) { if (event & PANEL_MOUSE_LBDOWN) { Action_Panel_Bouton_Poussoir(id); return 1; } }
void Irridium::Action_Panel_Bouton_Poussoir(int id){ id = id-AID_BOUTON_POUSSOIR; if (Poussoir[id].Etat == Vert||Poussoir[id].Etat == Eteint) SetEtatPoussoir(id,Rouge); else if (Poussoir[id].Etat == Rouge) SetEtatPoussoir(id,Vert);}
//----------------------------------- // RAJOUTER ***AVANT*** LE SWITCH(id) //-----------------------------------
picto wrote:Bon, à vue de groin, un Typedef enum est un tableau de constantes !
typedef DWORD (CALLBACK* MYFUNC)(void); MYFUNC MyFunctionOrdinal9=NULL; MyFunctionOrdinal9 = (MYFUNC)GetProcAddress(hSim1DllModuleHandle,(LPCSTR)9);
picto wrote:C'est de ma faute, j'avais conservé mon système d'initialisation ...
(MECHANICAL_OPEN_DOCK ,1089, 431, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE135°,3);(MECHANICAL_SELECT_DOCK ,1144, 431, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE315°,3);(MECHANICAL_SPEED_ROTATION_ARM ,979, 431, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE135°,3);(MECHANICAL_GEAR ,759, 431, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE270°,3);(ELECTRICAL_SELECT_POWER ,456, 279, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE135°,4);(XFEED ,164, 169, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE315°,3);(SELECTTANKOUTPUT ,239, 169, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE315°,3);(SELECTPROBE ,368, 169, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE270°,6);(LIFE_SUPPORT_SELECT_WATER_TANK ,437, 586, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE135°,3);(ENGINE_SEL ,217, 431, XSelecteurBmp, YSelecteurBmp,0, Panel1,ZEROIMAGE135°,3);
InitSelecteur(MECHANICAL_OPEN_DOCK ,1089, 431,0, Panel1,ZEROIMAGE135°,3);
des boutons full automatique avec une chite ligne
picto wrote:Puis réorganiser tous tes posts, pour que tu puisses les poster proprement dans le tuto sur les panels ...Parce que ce fil est, comment dire, un peu confus !:badsmile: pour quelqu'un qui s'y mettrait par hasard !
bool ShuttleA::clbkPanelMouseEvent (int id, int event, int mx, int my){ if(BoutonSDK_ProcessMousePanel(id,event)==TRUE) { return true; }}
picto wrote:Quotedes boutons full automatique avec une chite ligneMais c'est pas une, c'est deux ! Y'a les enum quand même