Environnement: Visual Studio 2008, Feature Pack Visual Studio, MFC Dialog App, Windows XP, nouveaux contrôles communs.List Control SetFocus Redraw Erreur sur un contrôle Onglet
Je rencontre un problème avec un contrôle de liste qui se trouve sur un contrôle onglet.
Pour reproduire le problème, créez simplement une application basée sur une boîte de dialogue. Placez un contrôle onglet sur cette boîte de dialogue, puis placez un contrôle de liste sur ce contrôle onglet. Vous n'avez pas besoin d'ajouter de code au projet. Juste construire et courir. Définissez le focus sur l'affichage de la liste, puis réduisez la boîte de dialogue ou placez une autre fenêtre devant.
Maintenant, ramenez la boîte de dialogue au premier plan, la liste ne se dessinera pas correctement.
Une chose que j'ai essayé est gérer l'événement de mise au point de consigne pour le contrôle de la liste, mais a laissé avec un corps de méthode vide, à savoir ...
void CMyListControl::OnSetFocus(CWnd* window)
{
// Default();
}
Alors le problème de redessiner va, mais maintenant vous Impossible de sélectionner des éléments dans la liste. La suppression de l'appel de Default fait revenir le problème.
Si je supprime la liste de l'onglet, le problème disparaît. Si je mets le focus à un autre contrôle sur l'onglet ou la boîte de dialogue, le problème disparaît. C'est un étrange. En fait, si vous regardez de près, vous pouvez voir la liste se dessiner et ensuite être masquée par le contrôle onglet.