Souci C++

Résolu
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010 - 2 mars 2010 à 02:05
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 - 2 mars 2010 à 13:58
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

Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 mars 2010 à 08:48
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.
3
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 10:39
// 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?
3
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
2 mars 2010 à 10:55
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...
3
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:10
(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
3

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

Posez votre question
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 mars 2010 à 11:21
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.
3
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 12:26
okk merci ce pendant j'aurait encore besoin de toi

donc DJ-CoolGuetta@live.fr

voila histoire de garder contacte
3
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:02
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?
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
2 mars 2010 à 11:04
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...
0
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:28
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 =
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
2 mars 2010 à 11:32
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...
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 mars 2010 à 11:32
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.
0
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:35
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++
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
2 mars 2010 à 11:38
...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...
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 mars 2010 à 11:41
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.
0
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:43
0
Pistol_Pete Messages postés 1053 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 9 juillet 2013 7
2 mars 2010 à 11:47
Buno t'a donné la réponse !?!


____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
2 mars 2010 à 11:49
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...
0
BunoCS Messages postés 15475 Date d'inscription lundi 11 juillet 2005 Statut Modérateur Dernière intervention 23 avril 2024 103
2 mars 2010 à 11:50
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...
0
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:55
oui je vais le lire

et pk faut lui accorder une valeur?
0
Tom56340 Messages postés 20 Date d'inscription mardi 2 mars 2010 Statut Membre Dernière intervention 15 mars 2010
2 mars 2010 à 11:57
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
0
Rejoignez-nous