Bonjour
Je developpe une appli sous embedded Vusual C++ 4, pour un terminal, depuis peu.
Je souhaite ecrire une fonction qui puisse changer la police d'un controle.
J'ai adapté un bout de code trouvé sur dvlpez, mais ca marche pas bien.
Si j'appelle la fonction en lui donnant chaque fois le meme CStatic,
ca marche, il me le met en gras.
Mais quand je ferme l'appli, j'ai un msgbox "assertion Failed" winhand.cpp, line 240
Si j'appelle la fonction avec des Static differents, le 2eme appelle fait un plantage aussi.
Voici mon code
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
void CWnd_Police_Changer_Mettre_En_X_Cplx(CWnd * Ctrl,int FW_X)
{//Adaptation de Developpez.com : ScarFace : Faq VC
CWnd *pWnd = Ctrl;
CFont* pFont = pWnd->GetFont();
if(pFont!=NULL)
{
LOGFONT lf;
pFont->GetLogFont(&lf);
lf.lfWeight=FW_X;//mettre l'attribut en gras(FW_BOLD) par exemple.
 
pFont->DeleteObject(); // destruction GDI de l'ancien objet eventuellement
pFont->CreateFontIndirect(&lf); // creation de la fonte d'apres la LOGFONT
pWnd->SetFont(pFont); // affectation de la nouvelle fonte
}
}
Pour l'appeller voici mon code, au sein de l'applie
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
...
CWnd_Changer_Mettre_En_X_Cplx(GetDlgItem(IDC_Static_Nom),FW_BOLD);
Merci pour vos lumieres