begin process at 2012 05 28 05:29:10
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Affichage d'un boutton en Win32


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Affichage d'un boutton en Win32

lundi 18 juillet 2005 à 20:39:21 | Affichage d'un boutton en Win32

Crazy_Joe

Bonjour à tous,

Cela va peut-être vous paraître assez bénin mais je n'arrive pas à afficher un boutton tout simple dans mon application. Voici un bout de ma fonction WinProc():

switch (message)                 
    {
      case WM_CREATE:
          Police[0]     = "Arial";
          Police[1]     = "Comic Sans MS";
          Police[2]     = "Impact";
          Police[3]     = "Bookman Old Style";
         
          hwndButtonParcourir =  CreateWindowEx(0, "BUTTON", "CLASSE BOUTON",
                                  WS_CHILD |WS_VISIBLE | BS_PUSHBUTTON | WS_BORDER,
                                  10,  40, 20,  50, hWnd, (HMENU)IDB_PARCOURIR ,
                                  hInst,  NULL);

         

          break;

      case WM_PAINT:
          hDc = BeginPaint(hWnd,&ps);
          GetClientRect(hWnd,&rc);
          HFONT Police;

         //Tout ce qui est présentation, texte, etc...

          EndPaint(hWnd, &ps);
          break;
               
      case WM_DESTROY:
            DeleteObject(Police);
            PostQuitMessage(0);
            break;

      default:
            return DefWindowProc(hwnd,message,wParam,lParam);
            break;
    }

J'ai essayé de mettre la fonction ShowWindow(hwndButtonParcourir,SW_SHOW) un peu partout mais sans résultat.

Merci de m'aider.

Merci.

lundi 18 juillet 2005 à 20:59:39 | Re : Affichage d'un boutton en Win32

Joky

Membre Club
Test ton hinstance
Si tu l'as déclarée en globale revoie ton affectation
Si tu la récupère dans ta WndProc, test la fonction utilisée
Sinon j'vois pas trop

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

lundi 18 juillet 2005 à 21:44:47 | Re : Affichage d'un boutton en Win32

Joky

Membre Club
Bon et pi tant que j'y suis
On ne déclare pas de variable dans des case
la tu fais un HFONT dans WM_PAINT
Et montre un peu comment tu déclares ton tableau de chaine de caractères
parceque c'est pas trop approprié le = pour des chaîne...

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

lundi 18 juillet 2005 à 22:24:59 | Re : Affichage d'un boutton en Win32

vecchio56

Administrateur CodeS-SourceS
hInstance pour CreateWindow est ignoré sous NT/2000/XP Comme tu mets le style WS_VISIBLE, pas besoin de ShowWindow après Regarde juste après la création si hwndButtonParcourir est NULL: if(!hwndButtonParcourir = CreateWindowEx(0, "BUTTON", "CLASSE BOUTON", WS_CHILD |WS_VISIBLE | BS_PUSHBUTTON | WS_BORDER, 10, 40, 20, 50, hWnd, (HMENU)IDB_PARCOURIR , hInst, NULL)) MessageBox(0, "raté", "raté", 0); Ce nous permettra de savoir ou chercher un peu
mardi 19 juillet 2005 à 13:36:59 | Re : Affichage d'un boutton en Win32

Crazy_Joe

Effectivement, il m'affiche la boîte de dialogue "raté". Sinon mon hInst est déclaré et global et dans WinMain je mets: hInst = hThisInstance;
mardi 19 juillet 2005 à 14:28:28 | Re : Affichage d'un boutton en Win32

Joky

Membre Club
Poste tout ton code pour voir... Parce que c'est étrange lol xD

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

mardi 19 juillet 2005 à 19:09:17 | Re : Affichage d'un boutton en Win32

Crazy_Joe

#include <windows.h>

const HBRUSH hCouleur = CreateSolidBrush(RGB(255,255,255));
HBRUSH hBackground = hCouleur;

static char szClassName[ ] = "FreeCutXP2";

HWND hWnd;
HINSTANCE hInst;

#define IDB_PARCOURIR 100
HWND hwndButtonParcourir;
HWND hwndEditPath;

LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM);

static int nHauteur_Caractere = 20;
static int nLargeur_Caractere = 10;
static int nOrientation_Caractere = 0;
static char* Police_Utile = "Arial";

char szTextStatic1[500];

int WINAPI WinMain(HINSTANCE hThisInstance,
                    HINSTANCE hPrevInstance,
                    LPSTR lpcmdLine,
                    int nCmdShow)
{

hInst = hThisInstance;
WNDCLASSEX wincl;

wincl.hInstance = hThisInstance;
wincl.lpfnWndProc = WindowProcedure; 
wincl.hbrBackground = hBackground;
wincl.style = CS_HREDRAW | CS_VREDRAW;            
wincl.lpszClassName = szClassName;
wincl.cbSize = sizeof (WNDCLASSEX); 
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;

if (RegisterClassEx (&wincl) == false)
{
    return 0;
}

hWnd = CreateWindowEx (0,szClassName,"FreeCutXP2",WS_CAPTION | WS_SYSMENU | WS_MINIMIZEBOX,CW_USEDEFAULT,CW_USEDEFAULT,400,200,HWND_DESKTOP,NULL,hThisInstance,NULL);
ShowWindow (hWnd, nCmdShow);

MSG messages;

while (GetMessage(&messages,NULL,0,0))
{
    TranslateMessage(&messages);
    DispatchMessage(&messages);
}

return messages.wParam;
}

LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT message,WPARAM wParam, LPARAM lParam)
{
    HDC hDc;
    RECT rc={10,10,20,20};
    PAINTSTRUCT ps;
    HFONT Police;
   
    switch (message)                 
    {
      case WM_CREATE:
         
          hwndButtonParcourir =  CreateWindowEx(0, "BUTTON", "CLASSE BOUTON",
                                  WS_CHILD |WS_VISIBLE | BS_PUSHBUTTON | WS_BORDER,
                                  10,  40, 20,  50, hWnd, (HMENU)IDB_PARCOURIR ,
                                  hInst,  NULL);

          if(!hwndButtonParcourir)MessageBox(0, "raté", "raté", 0);

          hwndEditPath =         CreateWindowEx(0, "EDIT", "",
                                  WS_CHILD | ES_LEFT| WS_BORDER 
                                  | ES_AUTOVSCROLL | ES_READONLY| ES_MULTILINE,
                                  10, 40, 20, 50,hWnd, (HMENU)101   ,
                                  (HINSTANCE)GetWindowLong(hWnd, GWL_HINSTANCE),  NULL);
          break;

      case WM_PAINT:
          hDc = BeginPaint(hWnd,&ps);
          GetClientRect(hWnd,&rc);

          //Présentation, texte, cadre, etc...

          EndPaint(hWnd, &ps);
          break;
               
      case WM_DESTROY:
            //DeleteObject(Police);
            PostQuitMessage(0);
            break;

      default:
            return DefWindowProc(hwnd,message,wParam,lParam);
            break;
    }

    return 0;
}


mardi 19 juillet 2005 à 19:19:56 | Re : Affichage d'un boutton en Win32

Joky

Membre Club
En faite dans ta procédure de message de la forme
LRESULT CALLBACK WndProc( HWND, UINT, WPARAM, LPARAM);
le hwnd est celui de la fenêtre créee, donc la fenêtre parent ce n'est pas hWnd ( celui défini dans WinMain ) mais celui de ta procédure, c'est une fonction en faite, donc tu remplace hwnd et ça marche

Donc tu peux enlever le HWND hWnd en global
et je te conseil de mettre des handles de bouton dans ta procédure tu ne t'en servira que là normalement...

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

mardi 19 juillet 2005 à 19:21:21 | Re : Affichage d'un boutton en Win32

Joky

Membre Club
Réponse acceptée !
En faite j'ai relu j'ai rien compris mdr donc voila ça va plus vite

hwndButtonParcourir =  CreateWindowEx(0, "BUTTON", "CLASSE BOUTON",
                                  WS_CHILD |WS_VISIBLE | BS_PUSHBUTTON | WS_BORDER,
                                  10,  40, 20,  50, hwnd, (HMENU)IDB_PARCOURIR ,
                                  hInst,  NULL);

Par contre pourquoi l'autre il marche ??? mystère et boule de GUM :)

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

mardi 19 juillet 2005 à 19:23:13 | Re : Affichage d'un boutton en Win32

vecchio56

Administrateur CodeS-SourceS
Réponse acceptée !
Dans WM_CREATE, CreateWindow n'est pas encore terminé, donc hWnd n'est pas encore bon. Il ne l'est qu'a la fin de WM_CREATE

1 2

Cette discussion est classée dans : case, boutton, break, hwnd, police


Répondre à ce message

Sujets en rapport avec ce message

API Win32, problème de variable [ par bouba ] Salut a tous, j'ai un blem de variable dans mon programme. Voici mon code source.LPSTR Path="";LRESULT CALLBACK WndProc( HWND hWnd, UINT uMsg, WPARAM Problème avec WM_KEYDOWN: [ par cognac ] Pourquoi est-ce que "j" est toujours égal à 2 lorsque je presse F1(même la première fois). Je pensais qu'à chaque fois que je presse F1 "j" augmente d Le jeu du serpent en C++ / niveau débutant [ par edouard57 ] Bonjour à tous, Je débute en C ++ et opengl. Pour m'entrainer j'essaie de réaliser un petit jeu le serpent. Pour l'instant j'arrive à créer un carré d probleme de menu [ par Stubbornman ] Bonsoir a tous,J'ai un soucis avec des menus. Je souhaite creer des fenetres filles qui ont chacune un menu. Or je n'arrive pas a afficher les menus d region et cliping [ par SnOOpss ] Bonjour, j iamerais savoir si ceci est normal ou quoi !! Il s agit d'un code permettent d afficher des boutton ownerdraw mais en gardant le fond du di ptit probleme [ par aladdin_wydadi ] voila le code source ke j'ai trouvé : #include#include //--------------------------------------------------------------------// Conversion d'un nombre terminer un processus [ par kyript ] bonjour a tous voila mon probleme quand je ferme mon programme, le processus ne se termine pas voila le code case SC_CLOSE : // cas d'un click sur Génération de nom de fonctions [ par buno ] Bijour les gens!J'ai besoin votre avis sur le "problème" suivant:Dans une fonction, on trouve ce morceau de code:switch (mode){  case 1: Save1bpp(); b boucle qui foire?? [ par CCJ ] bonjour. jai fais ce petit bout de code vite fais mé apres une journé tres lourde 8h 18h bah jarrive pu a trouver de solutions .Le bleme : mon code de Point d'entrée DLL [ par victorcoasne ] Bonjour, J'ai Dev-C++ et quand je créé une dll la fonction DllMain() n'est pas apellé quand je charge dans un porgramme cette dll ! Voici le code de


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,014 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales