Bonjour,
Je n'arrive pas à changer la police de contrôles créés en utilisant la fonction Create().
Je crée mes boutons à l'initialisation (dans OnInitDialog()) comme ceci :
Tous les objets créés de cette manière sont en gras et j'aimerai qu'ils soient en normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 CRect ButtonRect; [...] //init de ButtonRect m_Button.Create("Update View",WS_VISIBLE,ButtonRect,this,ID_BUTTONUPDATE);
Pour ça j'ai créé une classe CBoldButton dérivée de CButton avec la méthode suivante (j'ai utilisé la FAQ) :
Cette méthode fonctionne très bien pour les CBoldButton créés de manière classique (placement dans le fenêtre de ressource et choix du type par le ClassWizard), par contre les boutons créés par Create() ne changent jamais d'état !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 void CBoldButton::SetBold(bool bState) { CFont* pFont = this->GetFont(); if(pFont!=NULL) { LOGFONT lf; pFont->GetLogFont(&lf); if(bState) lf.lfWeight=FW_BOLD; else lf.lfWeight=FW_NORMAL; m_Font.DeleteObject(); // destruction GDI de l'ancien objet eventuellement m_Font.CreateFontIndirect(&lf); // creation de la fonte d'apres la LOGFONT } this->SetFont(&m_Font); // affectation de la nouvelle fonte. }
J'espère que ce problème aura plus de succés que mes précédentes questions![]()
Partager