Creer un bouton avec l'API Windows [Résolu]

banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 11:17 - Dernière réponse : banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention
- 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 ...
Afficher la suite 

Votre réponse

35 réponses

Meilleure réponse
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 22 mai 2005 à 11:39
3
Merci
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

Merci cs_Joky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Joky
Meilleure réponse
cs_Arnotic 936 Messages postés dimanche 1 avril 2001Date d'inscription 9 janvier 2012 Dernière intervention - 22 mai 2005 à 12:42
3
Merci
Il te faut rajouter un fichier manifest (soit en resource, soit à part).

@+
Arnotic,
Admin CS, MVP Visual C++

Merci cs_Arnotic 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Arnotic
Meilleure réponse
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 22 mai 2005 à 17:38
3
Merci
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

Merci cs_Joky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Joky
Meilleure réponse
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 23 mai 2005 à 17:58
3
Merci
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

Merci cs_Joky 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_Joky
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 11:47
0
Merci
cool merci ^^



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

Je suis qu'un pitit programmeur en herbe ...
Commenter la réponse de banane_rose
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 12:52
0
Merci
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 ...
Commenter la réponse de banane_rose
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 13:31
0
Merci
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 ...
Commenter la réponse de banane_rose
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 14:08
0
Merci
dites... vous savez pas comment retirer le gras du texte sur les contrôles ?


Je suis qu'un pitit programmeur en herbe ...
Commenter la réponse de banane_rose
cs_Urgo 780 Messages postés lundi 16 décembre 2002Date d'inscription 16 avril 2009 Dernière intervention - 22 mai 2005 à 14:23
0
Merci
WM_SETFONT



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

Urgo
Commenter la réponse de cs_Urgo
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 15:33
0
Merci
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 ...
Commenter la réponse de banane_rose
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 22 mai 2005 à 15:41
0
Merci
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
Commenter la réponse de cs_Joky
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 15:52
0
Merci
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 ...
Commenter la réponse de banane_rose
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 22 mai 2005 à 16:06
0
Merci
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
Commenter la réponse de cs_Joky
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 17:30
0
Merci
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 ...
Commenter la réponse de banane_rose
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 17:45
0
Merci
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 ...
Commenter la réponse de banane_rose
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 22 mai 2005 à 17:58
0
Merci
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
Commenter la réponse de cs_Joky
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 18:03
0
Merci
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 ...
Commenter la réponse de banane_rose
cs_Joky 1791 Messages postés lundi 22 novembre 2004Date d'inscription 31 janvier 2009 Dernière intervention - 22 mai 2005 à 18:07
0
Merci
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
Commenter la réponse de cs_Joky
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 18:11
0
Merci
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 ...
Commenter la réponse de banane_rose
banane_rose 302 Messages postés lundi 11 avril 2005Date d'inscription 22 avril 2006 Dernière intervention - 22 mai 2005 à 19:02
0
Merci
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 ...
Commenter la réponse de banane_rose

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.