Bonjour
Je voudrais savoir comment changer, via une boite de dialogue commune, la couleur de dessins et de textes créés avec WM_PAINT dans une fenêtre.
Merci d'avance
Bonjour
Je voudrais savoir comment changer, via une boite de dialogue commune, la couleur de dessins et de textes créés avec WM_PAINT dans une fenêtre.
Merci d'avance
Salut,
Si j'ai bien compris ce que tu veux, tu dois mémoriser une variable de type COLORREF puis l'utiliser lorsque tu traites le message WM_PAINT avec des fonctions comme SetTextColor(), SetBkColor(), SetDCPenColor(), etc.
Salut
Oui, c'est bien ça. Mais j'ai en plus un souci avec SetDCPenColor(): j'ai à la compilation "[Link error] undefined reference to 'SetDCPenColor'".
SetDCPenColor() est une API disponible à partir de Windows 2000.
Assures-toi que tu lies bien la librairie GDI32.LIB et que tu as ajouté #define _WIN32_WINNT 0x0500 avant l'inclusion de <windows.h>.
salut
En rajoutant #define _WIN32_WINNT 0x0500, SetDCPenColor() ne me pose plus de problèmes. Par contre, la couleur n'est changé que si la fenêtre est redessinée. J'ai un autre problème, cette fois-ci pour changer la fonte d'un texte, ça ne marche pas du tout.
salut
J'ai réussi à tégler le problème du changement de couleur. Il suffisait de rajouter la ligne InvalidateRect(hwnd, NULL, TRUE). Par contre, pour changer la fonte, j'ai toujours des soucis.
visiblement, avec InvalidateRect(), ça ne marche pas.
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
18 else if (LOWORD(wParam) == IDG_FONT) { CHOOSEFONT cg; ZeroMemory(&cg, sizeof(CHOOSEFONT)); cg.lStructSize = sizeof (CHOOSEFONT); cg.hwndOwner = hGraph; cg.lpLogFont = &lfg; cg.Flags = CF_SCREENFONTS | CF_INITTOLOGFONTSTRUCT; if (ChooseFont(&cg)) { DeleteObject(NewFont); NewFont = CreateFontIndirect(&lfg); SendMessage(hwnd,WM_PAINT,(UINT)NewFont,TRUE); InvalidateRect(hwnd,NULL,TRUE); } }
Partager