Souci C++ [Résolu]

Signaler
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010
-
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
-
je me présente tom

voila je suis pas non plus implacable sur l'informatique cependant je touche a tout et est un niveau satisfaisant qui me vaut de me déplacer pour des dépannage informatique ou même

des mise en réseaux pour cyber café avec Shiva et plein d'autre chose sur tous se qui touche la sécurités de site web

se pendant je ne c'est pas tous voici mon problème


j'ai fait une petite fenêtre Windows dans cette fenêtre j'aimerais faire un bouton

qui me permette que des que je clique sur le bouton lance un.exe ou jpg ou autre

voici mon script pourriez-vous m'indiquer ou le mettre dans mon script et une petite explication :) :)


// Librairies
#include <windows.h>

// Déclarations
LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM);
char szClassName[ ] = "windowsFenetre"; // nom de la classe en var globale
HMENU hMenu, hSousMenu;

// DEBUT
int WINAPI WinMain(HINSTANCE hThisInstance, HINSTANCE hPrevInstance,
LPSTR lpszArgument, int nFunsterStil) {
// Déclarations
HWND hwnd; MSG messages; WNDCLASSEX wincl;
// Structure de la fenêtre
wincl.hInstance hThisInstance; wincl.lpszClassName szClassName;
wincl.lpfnWndProc = WindowProcedure; // Fonction appelée par Windows
wincl.style = CS_HREDRAW|CS_VREDRAW; // Redessine à chaque fois
wincl.cbSize = sizeof(WNDCLASSEX);
// Icônes, pointeur, etc
wincl.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wincl.hIconSm = LoadIcon(NULL, IDI_APPLICATION);
wincl.hCursor = LoadCursor(NULL, IDC_ARROW);
wincl.lpszMenuName NULL; wincl.cbClsExtra 0; wincl.cbWndExtra = 0;
wincl.hbrBackground = (HBRUSH) GetStockObject(WHITE_BRUSH); // Fond blanc
// Enregistre la classe sinon quitte le programme
if(!RegisterClassEx(&wincl)) return 0;

// Création de la fenêtre
hwnd = CreateWindowEx(0, szClassName,
"tom", // Titre
WS_OVERLAPPEDWINDOW, // Fenêtre par défaut
GetSystemMetrics(SM_CXSCREEN)/4, // left
GetSystemMetrics(SM_CYSCREEN)/4, // top
GetSystemMetrics(SM_CXSCREEN)/2, // width
GetSystemMetrics(SM_CYSCREEN)/2, // height
HWND_DESKTOP, NULL, hThisInstance, NULL );

// Montre la fenêtre
ShowWindow(hwnd, nFunsterStil);

// Boucle jusqu'à ce que GetMessage() retourne 0
while(GetMessage(&messages, NULL, 0, 0)) {
DispatchMessage(&messages);
}
return messages.wParam;
}
// FIN

// Fonction appelée par la fonction Windows DispatchMessage()
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) {
switch (message) { // Intercepte les messages
case WM_DESTROY: // Destruction de la fenêtre
PostQuitMessage(0); // Envoie WM_QUIT à Windows
break;
default: // Messages non gérés
return DefWindowProc(hwnd, message, wParam, lParam);
}
return 0;
}

26 réponses

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Salut
Dans la fonction callback WindowProcedure tu crées un bouton avec CreateWindow dans le message WM_CREATE
Tu captes le cliques sur ce bouton dans la même fonction avec un WM_COMMAND et tu lances un ShellExecute() pour ouvrir un programme, image...

A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

// Fonction appelée par la fonction Windows DispatchMessage()
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam,CreateWindow,WM_COMMAND, LPARAM lParam) {
ShellExecute(Install.exe)
switch (message) { // Intercepte les messages
case WM_DESTROY: // Destruction de la fenêtre
PostQuitMessage(0); // Envoie WM_QUIT à Windows
break;
default: // Messages non gérés
return DefWindowProc(hwnd, message, wParam, lParam);


Comme se ci?
Messages postés
15027
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 mai 2021
94
re,
Non, pas comme ça. Plutôt un truc comme ça:
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam,CreateWindow,WM_COMMAND, LPARAM lParam)
{
switch (message)
{ 
case WM_CREATE: // Création du bouton
  // Utiliser CreateWindow() pour créer le bouton
  break;
case WM_COMMAND:
  switch(LOWORD(wParam))
  {
  case ID_BOUTON:
    ShellExecute(Install.exe);
    break;
  }
  break;
case WM_DESTROY:
  PostQuitMessage(0);
  break;
default:
  return DefWindowProc(hwnd, message, wParam, lParam);
}



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

(je précise que c vraiment le plus ba niveau en programmation a qui tu parle )

mais bon merci au moins il y a de l'entraide

(

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam,CreateWindow,WM_COMMAND, LPARAM lParam)

{
switch (message)
{
case WM_CREATE: // Création du bouton
// Utiliser CreateWindow() pour créer le bouton
CreateWindow( "BUTTON", "Titre du bouton",
WS_CHILD | WS_VISIBLE |
ES_LEFT | WS_BORDER,
20, 50, 100, 20,
hWndPrincipale,
ID_BOUTON,
hInstance, NULL );
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_BOUTON:
ShellExecute(Install.exe);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}


cela est bon
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Quand tu ne connais pas une fonction, il faut regarder sur la msdn...
ShellExecute()


Il y a de plus énormément d'exemple sur le net.
A+


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

okk merci ce pendant j'aurait encore besoin de toi

donc DJ-CoolGuetta@live.fr

voila histoire de garder contacte
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

excuse moi je début en programmation alors bon

j'ai comprit le code par contre si je veut lui donner un nom

et le mettre a gauche ou a droite de ma fenêtre comment faire?
Messages postés
15027
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 mai 2021
94
Pour le bouton, ça doit être un truc comme ça:
hButton = CreateWindow( "BUTTON", "Titre du bouton", 
WS_CHILD | WS_VISIBLE | 
ES_LEFT | WS_BORDER, 
20, 50, 100, 20, 
hWndPrincipale, 
ID_BOUTON, 
hInstance, NULL ); 



@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

donc au faite :

{
switch (message)
{
case WM_CREATE: //Création du bouton
// Utiliser CreateWindow() pour créer le bouton
CreateWindow( "BUTTON", "Installation",
WS_CHILD | WS_VISIBLE |
ES_LEFT | WS_BORDER,
20, 50, 100, 20,
hWndPrincipale,
ID_BOUTON,
hInstance, NULL );

break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case ID_BOUTON:
ShellExecute(Install.exe);
break;
}
break;
case WM_DESTROY:
PostQuitMessage(0);
break;
default:
return DefWindowProc(hwnd, message, wParam, lParam);
}


esque je doit mettre le hButton =
Messages postés
15027
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 mai 2021
94
Non, pas forcément...
@Pistol_Pete: j'avais pas fait gaffe, merci

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Pas forcement.
Tu reçois un message ID_BOUTON via WM_COMMAND quand tu cliques sur ton bouton comme te l'a indiqué Buno.
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

okkk

la je suis en train de tester mon script et lors de mon compile run cela le marche pas

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam,CreateWindow,WM_COMMAND, LPARAM lParam)
{
switch (message)
{

cette ligne la me fais une croix rouge dans mon dev c++
Messages postés
15027
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 mai 2021
94
...WPARAM wParam,CreateWindow,WM_COMMAND,...

Que fait le CreateWindow() ici? Attention à ce que tu fais problème de copier-coller, non?

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Ici tu trouveras tout ce qu'il faut pour partir sur de bonne base en prog windows.
http://www.brunews.com/brunews/index.htm
CP5.zip et JR5.zip

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

Messages postés
1054
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
9 juillet 2013
6
Buno t'a donné la réponse !?!


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Messages postés
15027
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 mai 2021
94
Ah pardon, c'est ma faute!! Ceci marchera mieux
LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)


Attention! Quand je mets ID_BOUTON, c'est pour te dire que c'est là qu'il faut mettre l'identifiant du bouton. Il faut donc que tu lui attribues une valeur.

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
15027
Date d'inscription
lundi 11 juillet 2005
Statut
Modérateur
Dernière intervention
7 mai 2021
94
Même chose pour hWndPrincipale...
Je te conseilles vivement de lire le tuto que que j'ai envoyé, tu comprendras mieux ce que tu fais


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

oui je vais le lire

et pk faut lui accorder une valeur?
Messages postés
20
Date d'inscription
mardi 2 mars 2010
Statut
Membre
Dernière intervention
15 mars 2010

CP5 4,4 Mo, CP5sources 1,4 Mo: Tout savoir sur l'interface graphique Win32, bouquin en anglais, sources commentées en français.

JR4 5,7 Mo, JR4sources 324 Ko: Programmation système sur Win32, tout en anglais.

c'est bien cela


quart JR5 ni est pas