Creer un bouton avec l'API Windows

Résolu
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006 - 22 mai 2005 à 11:17
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006 - 24 mai 2005 à 20:12
code : ICI

C'est sensé faire apparaitre une fenêtre avec un gros bouton "Quitter" au milieu .

Mais rien ne marche , même pas l'affichage de la fenêtre ...

help ?


Je suis qu'un pitit programmeur en herbe ...

35 réponses

cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 mai 2005 à 11:39
Tu as oublié un return 0; dans ta procédure ( WM_CREATE )
Et si tu le rajoutes, tu as la surprise d'avoir 2 fenêtres, une avec le bouton, et l'autre toute noire...
WS_CHILD pour ton bouton ;)
en gros ça donne :



switch (messages)


{



case WM_CREATE :
hwndBtnQuit = CreateWindowEx(
0,

"BUTTON",

"Quitter",
WS_VISIBLE | WS_CHILD,

5,
5,

100,
50,
hWnd,
NULL,
hThisInstance,
NULL);

return
0;

N'hésite pas à utiliser les return 0 dans tes switch.


void Aurevoir( void ); //Bonne journée
3
cs_Arnotic Messages postés 933 Date d'inscription dimanche 1 avril 2001 Statut Membre Dernière intervention 9 janvier 2012
22 mai 2005 à 12:42
Il te faut rajouter un fichier manifest (soit en resource, soit à part).

@+
Arnotic,
Admin CS, MVP Visual C++
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 mai 2005 à 17:38
Bé t'imagines bien que j'l' avais compiler ton programme lol.
Quand tu le réduit, le texte que tu à écrit sur le DC, a repris une police normale.
C'est pour ça, si dans le message WM_PAINT, tu enlèves le DeleteObject( Police )
et que tu le met seulement à la fermeture de ta fenêtre, le DC aura toujours la police allouée.

Et pour WM_SETFONT, on s'en sert avec le SendMessage( );
le HWND c'est le contrôle à qui tu veux changer la police ( bouton, edit, mais pas de DC j'pense)
le Msg c'est WM_SETFONT, logique
le wParam c'est un handle sur ta police, donc tu passes ta police en paramètre, et si LOWORD(lParam) == true; alors ça se redessine tout de suite.

Mais ça ne sert pas pour ton texte ici ;)


void Aurevoir( void ); //Bonne journée
3
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
23 mai 2005 à 17:58
Oki bé on reprend lol

Donc tes variables globales :
char VTxt[]="0";

Dans ton message WM_PAINT :
itoa(Valeur,VTxt,10);
TextOut(hDc, 50, 40, VTxt, lstrlen(VTxt));

Au début de ta procédure de message :
static int Valeur = 0;

case WM_COMMAND:
switch(wParam)
{
case BOUTON_+:
Valeur++;
return 0;
case BOUTON_-:
Valeur--;
return 0;
}
return 0;


void Aurevoir( void ); //Bonne journée
3

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

Posez votre question
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 11:47
cool merci ^^



mais pourquoi le bouton n'est pas de style XP ??

Je suis qu'un pitit programmeur en herbe ...
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 12:52
j'ai obtenu ça après pleins de bidouillages ...

IMAGE : ICI

mais impossible de changer la couleur du texte , de fond ni le gras !

ça a un rapport avec le fichier manifest ? bon je vais me renseigner ...

Je suis qu'un pitit programmeur en herbe ...
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 13:31
youpi ça marche !!! c'est assez rare avec moi lol



bon je vais faire mumuse à essayer de maîtriser les boutons windows ...je vous appelle si j'ai un problème ^^

Je suis qu'un pitit programmeur en herbe ...
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 14:08
dites... vous savez pas comment retirer le gras du texte sur les contrôles ?


Je suis qu'un pitit programmeur en herbe ...
0
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
22 mai 2005 à 14:23
WM_SETFONT



Cherche sur msdn ou ici-même, tu trouveras ainsi un tas d'exemples!

Urgo
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 15:33
merci , sinon j'essaye de faire un bouton
quand on clique dessus ça reduit la fenêtre ... mais je ne trouve pas
le bon WM_XX (c'est bien ça ?) pour SendMessage (c'est bien ça aussi ??)

code : ICI (sans le fichier manifest)

screen : ICI

j'avance bien aujourd'hui on dirait ... ^^


Je suis qu'un pitit programmeur en herbe ...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 mai 2005 à 15:41
Bé pas besoin d'envoyer un message

Quand tu interceptes le messages que le bouton a été clické
tu fais un ptit
ShowWindow(hWnd, SW_MINIMIZE);
Et vala ta fenêtre réduite


void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 15:52
ah....

c'est parce que j'avait vu que pour fermer on utilisait SendMessage ...

enfin bref le bouton marche mais y'a un autre problème (bin oui ...)

je réduit puis je fait réapparaitre la fenêtre et là ... surprise la
texte au milieu à changé de police ... nom de nom ! le texte à pris la
police des contrôles ... (gras , arial mais pas la couleur > résté
blanc) donc ma font "Police" s'est désactivé ... c'est à n'y rien à
comprendre !!! ( je n'ai pas encore essayé WM_SETFONT )

Je suis qu'un pitit programmeur en herbe ...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 mai 2005 à 16:06
Met le DeleteObject(Police) dans le message WM_DESTROY
Je sais pas si c'est propre, mais en tout cas ça marche lol


void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 17:30
heu.... t'a pas dû bien comprendre , essaye de compiler le programme (LIEN sans manifest) puis click sur réduire puis réactive la fenêtre , tu vera le problème ...

sinon j'arrive pas à utiliser WM_SETFONT , tu m'explique ?

Je suis qu'un pitit programmeur en herbe ...
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 17:45
ahhhhhhhhhhh............................

tu parlais de ça .... ok c'est capich ! enregistré !! ^^

bon sinon , j'ai fait : SendMessage(hwndBtnQuit,WM_SETFONT,PoliceBtn,??)
mais le 4e argument j'ai pas compris ... et j'ai un doute pour
PoliceBtn car il me semble qu'il faut mettre quelque chose entre
parenthèses ... mais je sait plus quoi ...

je suis paumé là ...


Je suis qu'un pitit programmeur en herbe ...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 mai 2005 à 17:58
Il faut caster PoliceBtn
(WPARAM)PoliceBtn
et le 4eme arguement
Donc tu as un LPARAM
dans un LPARAM, tu as 2 valeur, une haute valeur et une ptite lol
HIWORD(lParam) << récupere la haute valeur ( en plus tu la utilisée )
LOWORD(lParam) << récupe la ptite

Donc tu passes un 1 comme 4eme argument ca marchera certainement


void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 18:03
puré ! que t'es fort ça marche !

respect !

bon je met reponse accepté mais c'est pas fini je vais surement revenir ...



au fait ... on peut faire quoi comme type d'aplication en apprenant
l'API Windows ? (je sais pas trop pourquoi j'apprend ça ... peut-etre
pour la plaisir . bah ! )

Je suis qu'un pitit programmeur en herbe ...
0
cs_Joky Messages postés 1787 Date d'inscription lundi 22 novembre 2004 Statut Membre Dernière intervention 31 janvier 2009 2
22 mai 2005 à 18:07
On peut faire des choses tellement magnifique, qu'on continue à apprendre tout ce qu'on peut... Parce que ici, on en apprend tout les jours lol
Et perso jsuis pas fort mdr
Va voir les sources API, tu comprendras vite :)


void Aurevoir( void ); //Bonne journée
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 18:11
pour l'instant je vais juste m'entrainer à faire mes petits programmes ... ^^

bon je termine un pitit programme pour manier les boutons après j'attaque les autres controles !

Je suis qu'un pitit programmeur en herbe ...
0
banane_rose Messages postés 302 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 22 avril 2006
22 mai 2005 à 19:02
c'est nouveau ça ... j'ai utilisé _itoa()
pour convertir mon int en char , je compile ... tout va bien ... je
lance : "Boutons.exe à rencontré un problème et doit fermer"







mais qu'est ce que c'est que ce bordel ??

t'a une solution ?

mon hypothèse : ça ne converti pas en char* mais juste en char ...



TextOut(hDc, 50, 40, _itoa(Valeur,VTxt, 100 ), 100);










Je suis qu'un pitit programmeur en herbe ...
0
Rejoignez-nous