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);
}
14 mai 2004 à 20:18
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
7 avril 2004 à 19:58
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 ....
7 avril 2004 à 11:28
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 ?
7 avril 2004 à 10:39
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 ?
7 avril 2004 à 03:13
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.