Le code suivant fonctionne correctement:MFC Crash on SetWindowText répété() quand une couleur de fond pour le dialogue est spécifié
for (int i = 0; i < 500; i ++) {
pour (int j = 0; j < 100; j ++) {
m_title.SetWindowText (_T ("lol"));
}
}
Mais quand je mets une couleur de fond pour la boîte de dialogue:
HBRUSH CTaggingDlg :: OnCtlColor (CDC * pDC, CWnd * pWnd, UINT nCtlColor) {
retour CreateSolidBrush (RGB (0,0,0)); // BLACK
}
La boucle fait au-dessus du programme pour atteindre un point d'arrêt dans wingdi.cpp à:
CPaintDC :: CPaintDC (CWnd * pWnd)
Comment définir une couleur de fond pour la boîte de dialogue sans avoir il crash?
Ce sera parce que vous étiez des fuites de brosses (CreateSolidBrush vous donne un nouveau pinceau à chaque fois). En utilisant un CBrush comme variable membre, vous n'avez qu'un seul objet pinceau et il est nettoyé avec la fenêtre. –