J'essaie d'implémenter des fonctionnalités de glisser-déposer pour un système matériel développé dans mon travail. Une partie de ce système comprend une «bibliothèque de matériaux» qui sert de référentiel, divisé en groupes, de matériaux enregistrés sur le disque dur de l'utilisateur.Comment réparer un Glitch de peinture MFC?
Dans le cadre de certains vernis d'interface utilisateur, j'espérais implémenter une fonctionnalité de type 'highlight'. Lorsque vous faites glisser et déposer, les fenêtres sur lesquelles vous pouvez légalement déposer un matériau changeront très subtilement de couleur pour améliorer le retour à l'utilisateur qu'il s'agit d'une action valide.
Je suis en train de changer la barre avec 'Basic Materials' (juste un CWnd avec un CStatic) d'avoir un arrière-plan gris moyen lorsqu'il n'est pas surligné sur un arrière-plan bleu lorsque survolé. Tout fonctionne bien, les messages OnDragEnter et OnDragExit semblent robustes et définissent un drapeau indiquant l'état de surbrillance. Puis, en OnCtrlColor je fais ceci:
if (!m_bHighlighted) {
pDC->FillSolidRect(0, 0, m_SizeX, kGroupHeaderHeight, kBackgroundColour);
}
else {
pDC->FillSolidRect(0, 0, m_SizeX, kGroupHeaderHeight, kHighlightedBackgroundColour);
}
Cependant, comme vous pouvez le voir dans la capture d'écran, le tableau « » glitches sous l'objet traîné, laissant le gris d'origine en place. Il a l'air vraiment moche et gâche tout l'effet.
Y at-il un moyen de contourner ce problème?