Salutations,
Je m'initie aux panels 2D, mais je bloque sur un point. Je tente de créer un MFD. J'arrive à obtenir l'affichage principale et les boutons sont fonctionnels. Par contre, je n'arrive pas à afficher de texte sur mes boutons. Je vous montre à quoi ressemble mon code pour l'instant.
bool Astra3B::clbkLoadPanel(int id)
{
//Image de fond
HBITMAP hBmp = LoadBitmap(g_hDLL, MAKEINTRESOURCE(IDB_PANEL1+id));
oapiRegisterPanelBackground (hBmp, PANEL_ATTACH_BOTTOM|PANEL_MOVEOUT_BOTTOM, 0xFFFFFF);
//Définition des MFD
//Les MFD doivent faire 230px de côté
MFDSPEC mfd_left = {{47, 106, 47+226, 106+226}, 6, 6, 8, 38};
oapiRegisterMFD (MFD_LEFT, mfd_left);
oapiRegisterPanelArea (AID_MFD1_LBUTTON, _R(6, 114, 38, 324), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED, PANEL_MAP_BACKGROUND);
oapiRegisterPanelArea (AID_MFD1_RBUTTON, _R(282, 114, 314, 324), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED, PANEL_MAP_BACKGROUND);
//oapiRegisterPanelArea (AID_MFD1_BBUTTON, _R(6, 114, 38, 324), PANEL_REDRAW_USER, PANEL_MOUSE_LBDOWN|PANEL_MOUSE_LBPRESSED, PANEL_MAP_BACKGROUND);
return true;
}
bool Astra3B::clbkPanelMouseEvent (int id, int event, int mx, int my)
{
switch (id)
{
case AID_MFD1_RBUTTON :
case AID_MFD1_LBUTTON :
if (my%38 < 20)
{
int bt = my/38 + (id == AID_MFD1_LBUTTON ? 0 : 6);
oapiProcessMFDButton (MFD_LEFT, bt, event);
return true;
}
break;
}
return false;
}
bool Astra3B::clbkPanelRedrawEvent (int id, int event, SURFHANDLE surf)
{
switch (id)
{
case AID_MFD1_LBUTTON:
RedrawPanel_MFDButton (surf, MFD_LEFT, 0); //Fonction récupérée sur le code source du shuttleA
return true;
case AID_MFD1_RBUTTON:
RedrawPanel_MFDButton (surf, MFD_LEFT, 1);
return true;
}
return false;
}
void Astra3B::RedrawPanel_MFDButton (SURFHANDLE surf, int mfd, int side)
{
HDC hDC = oapiGetDC (surf);
SetTextColor (hDC, RGB(0, 200, 0));
SetTextAlign (hDC, TA_CENTER);
SetBkMode (hDC, TRANSPARENT);
const char *label;
for (int bt = 0; bt < 6; bt++) {
if (label = oapiMFDButtonLabel (mfd, bt+side*6))
TextOut (hDC, 11, 118+38*bt, label, strlen(label));
else break;
}
oapiReleaseDC (surf, hDC);
}
Ca va faire une bonne heure que je tourne en rond sans réussir à trouver de solution. Quelqu'un arrive à voir d'où viens le problème?
Merci
Message modifié ( 26-04-2010 19:06 )