2010-03-02 2 views
0

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?

Répondre

0

Peu importe. En changeant la façon dont je définir la couleur d'arrière-plan à la méthode dans cet article:

http://www.codeguru.com/cpp/w-d/dislog/background/article.php/c1895

Le problème a été résolu.

+3

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. –

Questions connexes