Changer la couleur de fond d'un dialog (vc++ sans mfc)

Soyez le premier à donner votre avis sur cette source.

Vue 6 208 fois - Téléchargée 486 fois

Description

Suite a de nombreuses questions sur le forum, j'ai fait rapidement cette petite source SANS MFC qui permet de modifier la couleur de fond d'un Dialog.
Ce code est censé marcher sous tous les compilateurs.

A++ et bonne prog all ....

Source / Exemple :


/**

  • Programme : ChangeBckColor
  • Auteur : Shell
  • Date : 06/04/2004
  • Commentaires : Permet de changer a sa guise la couleur de fond d'un Dialog
    • /
#include <windows.h> #include "resource.h" HBRUSH hBrush; HINSTANCE hInst; LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam); int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { hInst = hInstance; DialogBox(hInstance, MAKEINTRESOURCE(IDD_DIALOG1), NULL, (DLGPROC) DlgProc); return 0; } LRESULT CALLBACK DlgProc(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam) { switch(Msg) { case WM_INITDIALOG: //On choisi la couleur de fond a l'aide du "pinceau" //Les valeurs doivent etre compris entre 0 et 255 hBrush = CreateSolidBrush(RGB(192,255,80)); break; case WM_COMMAND: switch(LOWORD(wParam)) { case IDC_QUITTER: DestroyWindow(hWnd); break; } break; case WM_CLOSE: DestroyWindow(hWnd); break; case WM_CTLCOLORDLG: return (LONG)hBrush; break; default: return(FALSE); } return(TRUE); }

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

oulaika
Messages postés
1
Date d'inscription
jeudi 13 mai 2004
Statut
Membre
Dernière intervention
14 mai 2004

bonjour
je crée un DialogBoxParam qui fait appel a la fonction DialogProc, cette operation est bloquante, le processus se bloque sur la ligne:
->DialogBoxParam( 0, MAKEINTRESOURCE(IDD_RING), 0, DialogProc,...
et la fonction DialogProc s'execute infiniment, j'usqu'à present,c'esr tout à fait normal.
le probleme c'est comment je peux fermer la DialogBox à l'exterieur de la fonction DialogProc.
merci
DeAtHCrAsH
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
t'as pas pu compiler ???
Pourtant ya pas de MFC la dedans ...

Recopie le code dans un nouveau projet au lieu d'utiliser le projet u'il y a dans le zip ....
Fly57
Messages postés
29
Date d'inscription
vendredi 3 janvier 2003
Statut
Membre
Dernière intervention
15 avril 2005

en gros y'a pas l'air d'avoir besoin de traiter le cas WM_CLOSE et qu'il faut utiliser EndDialog(hdlg, nresult) et non DestroyWindow(hWnd);

euh sinon j'ai une question, j'ai pas VS donc j'ai pas pu compiler il me manque "afxres.h", mais est-ce que ça peut-être appliqué sur un bouton ou un edit ?
DeAtHCrAsH
Messages postés
2671
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
6 février 2013
1
Je comprend vaguement ce que tu veux me dire... Si tu as un exemple a me donner se serrez gentil...

Sinon le but de la source en elle meme est le changement de couleur de fond ... Le code est ok pour ca au moins non ?
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Salut,
une dialogbox modale (affichee par DialogBoxParam) n'appelle pas DestroyWindow et n'a pas non plus a traiter WM_CLOSE pour se fermer. On utilise EndDialog(hdlg, nresult).
DialogProc doit retourner 1 dans WM_INITDIALOG, 0 autre cas.

BruNews, Admin CS, MVP Visual C++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.