jb212121
Messages postés76Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention22 décembre 2012
-
22 août 2008 à 06:45
jb212121
Messages postés76Date d'inscriptionmardi 6 avril 2004StatutMembreDernière intervention22 décembre 2012
-
22 août 2008 à 14:01
Bonjour
Voila mon souci
Je creer une mon app en appelant
DialogBox(hInstance, MAKEINTRESOURCE(IDD_APP), NULL, AppDlgProc); Mais je trouve pas le moyen de changer la couleur de fond
J'ai essayé avec
hBrush=CreateSolidBrush(RGB(0,0,255)) Mais sans succé....
quelqu'un sais comment faire ??
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 août 2008 à 09:46
Salut,
Je n'ai pas encoreappris à faire les resources, donc pas de DialogBox pour moi...
Cependant, quand tu appelles DialogBox, tu lui passe en paramètre la fonction qui va être appelée en cas de réception d'un message.
Si, dans cette fonction, tu traites le message WM_ERASEBKGND, et tu dessine avec ton brush un rectangle de la taille de ta DialogBox, avec un code dans ce genre là :
hBackBrush = CreateSolidBrush(nColor);
// Dessin de la fenêtre
GetClientRect(_hWnd, &back);
FillRect((HDC)wParam, &back, hBackBrush);
DeleteObject(hBackBrush);
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 août 2008 à 10:39
Houlà je me suis pas relu là... Que de fautes.
Bon, bin maintenant, je sais vaguement faire des ressources.
Merci jb212121 !
<hr />#include "windows.h"
#include "resource.h"
HINSTANCE _hThisInstance; // Handle du module
//
// Traitement des messages.
//
LRESULT CALLBACK DialogProcedure(HWND hDlg, UINT nMessage, WPARAM wParam, LPARAM lParam)
{
HBRUSH hBackBrush; // Brush de dessin de l'arrière plan de la fenêtre
RECT back; // Rectangle de la zone cliente/fenêtre
switch (nMessage)
{
case WM_INITDIALOG:
return TRUE;
case WM_ERASEBKGND:
// Création du brush de dessin de l'arrière plan de la DilaogBox
hBackBrush = CreateSolidBrush(RGB(0, 0, 255));
// Dessin du fond
GetClientRect(hDlg, &back);
FillRect((HDC)wParam, &back, hBackBrush);
DeleteObject(hBackBrush);
return TRUE;
case WM_COMMAND:
if (LOWORD(wParam) == IDOK)
MessageBox(hDlg, "Hello world !", "Kikoo", MB_OK);
else if (LOWORD(wParam) == IDCANCEL)
EndDialog(hDlg,0);
return TRUE;
}
return FALSE;
}
#pragma comment(linker, "/entry:main")
INT32 _cdecl main()
{
// Récupération du handle du module
_hThisInstance = GetModuleHandle(NULL);
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 22 août 2008 à 11:15
Houla. Soit plus précis svp.
"Sa marche pas"
Ca ne compile pas ? -> Quel message d'erreur ?
Ca plante ?
La couleur ne change pas ?
Cela pose des problème d'affichage (Interférence avec d'autres composants...) ?
Tu peux évenutellement copier-coller ici une partie de ton code, notamment la fonction qui traite les messages (AppDlgProc si je me réfère à ton premier poste).
Et bien sûr que c'est possible : je t'ai déjà donné deux exemples de codes complets...