Dev sans MFC

c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005 - 10 févr. 2004 à 19:56
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 - 18 déc. 2004 à 11:54
Voilà j'essaie de faire un prog sans MFC et je voudrais changer la couleur de text d'un bouton ainsi que ça couleur de fond.
Si qqun peu m'aider merci

mon code:

HWND winhWnd;// Handle de fenêtre clé de la fenêtre
HBRUSH hbr;
// Procédure qui va recevoir les messages
LRESULT CALLBACK WinProc(HWND, UINT, WPARAM, LPARAM);

// Réception des messages
LRESULT CALLBACK WinProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{

switch (msg)
{

case WM_CTLCOLORBTN:

SetTextColor((HDC) wParam, RGB(0,255,3));

break;

// Fermeture du programme
case WM_DESTROY:

// Ferme le programme
PostQuitMessage(0);
break;

// Fermeture de la fenêtre via le menu système ou la croix(X) noir
case WM_CLOSE:

// Détruit la fenêtre
DestroyWindow(hwnd);
break;

// Réception des commandes
case WM_COMMAND:

// Vérifie que c'est bien le bouton Vérifie si on à cliquer sur le bouton if ((LOWORD(wParam) ID_BUTTON) && (HIWORD(wParam) BN_CLICKED))
{
// Affiche un MessageBox disant qu'on à cliquer sur le bouton
MessageBox(winhWnd, "Vous avez cliquer sur le Bouton!!!", "BN_CLICKED", MB_OK|MB_ICONINFORMATION);

}
break;

default:

return DefWindowProc(hwnd, msg, wParam, lParam);
break;

}
DeleteObject(hbr);
return 0;

}

int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
MSG msg;//structure contenant les messages a envoyer à la fenêtre
WNDCLASSEX wc;//structure temporaire pour paramétrerla fenêtre avant ça creation

// Création de la classe
wc.cbSize = sizeof(WNDCLASSEX); // Taille de la structure
wc.style = CS_HREDRAW | CS_VREDRAW; //redessiner la fenêtre après chaque modif
wc.lpfnWndProc = WinProc; // pointe versla fonction CALLBACK Wndproc pour savoir quelle fonction appeler
wc.cbClsExtra = 0; // ...
wc.cbWndExtra = 0; // ...
wc.hInstance = hInstance; // Contient la clé unique du programme
wc.hIcon = LoadIcon(hInstance,MAKEINTRESOURCE(IDI_ICON1)); // Grande icone
wc.hIconSm = LoadIcon(NULL, NULL); // Petite icone
wc.hCursor = LoadCursor(NULL, IDC_ARROW); // Curseur
wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);// Couleur de fond
wc.lpszClassName = "Email";// Nom de la classe
wc.lpszMenuName = "Email"; // Menu

// Enregistre la classe
if (!RegisterClassEx(&wc))
{
// Échec
MessageBox(NULL, "Erreur lors de l'enregistrement de la classe.", "Erreur", MB_OK);
return 0;

}

// Création de la fenêtre
winhWnd = CreateWindowEx(0, "Email","Envoi d'email",WS_OVERLAPPEDWINDOW | WS_VISIBLE | SYSMENU ,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,HWND_DESKTOP,LoadMenu(hInstance, MAKEINTRESOURCE(IDR_MENU1)),hInstance,NULL);

//Création du bouton
if (winhWnd == NULL)
{
// Échec
MessageBox(NULL, "Erreur lors de la création de la fenêtre.", "Erreur", MB_OK);
return 0;

}

// Création du bouton
HWND cmdhWnd = CreateWindowEx(0, "BUTTON","couleur",WS_VISIBLE|WS_CHILD|BS_NOTIFY| BS_TEXT |BS_DEFPUSHBUTTON,30,30,150,80,winhWnd,(HMENU)ID_BUTTON,hInstance,NULL);

if (cmdhWnd == NULL)
{
// Échec
MessageBox(winhWnd, "Erreur lors de la création du Bouton.", "Erreur", MB_OK);
return 0;

}

// Envoie tu texte dans le bouton(Caption)
SetWindowText(cmdhWnd, "Ceci est un Bouton!");

// Boucle qui permet au programme de rester ouvert :)
while (GetMessage(&msg, NULL, 0, 0))
{

TranslateMessage(&msg);
DispatchMessage(&msg);

}



return 0;
}

Cmill

8 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 févr. 2004 à 20:32
pas de chance c'est impossible
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 févr. 2004 à 20:36
enfin tu peux toujours créer une boutton owner-drawn, là c'est a toi de dessiner les bordures et le texte du bouton, et la tu as une liberté totale. Note qu'avec les MFC tu aurais le même problème
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
10 févr. 2004 à 20:40
Ok ça g essayé mais j'arrive pas a mettre des bordures et le texte disparait tu c poukoi
Cmill

Cmill
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 févr. 2004 à 20:54
non puisque je ne sais pas comment tu as fais
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 févr. 2004 à 20:57
tu peux trouver des exemples de bouton personnalisés sur MSDN:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/shellcc/platform/commctls/buttons/usingbuttons.asp
mais réfléchit bien avant si c'est vraiment utile de la faire, ca va te compliquer la vie pour rien
0
c2millet Messages postés 198 Date d'inscription lundi 2 juin 2003 Statut Membre Dernière intervention 15 février 2005
10 févr. 2004 à 21:06
dac je te remercie pour le coup de main.Sinon que penses tu du code que g développé ça te semble cohérent? je demande comme je suis débutant
Cmill
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
10 févr. 2004 à 22:02
pour l'instant, c'est tout ce qu'il y a de plus classique, je n'ai rien à redire, à part peut être le DeleteObject(hbr); que je n'aurais pas placé la mais plutot à la fin du prog, mais c'est un détail
Et ta variable globale winhWnd ne sert a rien car elle est égale au paramètre hwnd de WinProc
0
Gendal67 Messages postés 627 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 24 juillet 2011 2
18 déc. 2004 à 11:54
Le jour ou tu arriveras a prog sous dev ac MFC tu m'appelleras par contre! mdr!!

Gendal67, Dev-C++ 4.9.9.0, J'adore cppfrance!! :-))
0
Rejoignez-nous