Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme de background API

Besoin de votre aide

    2 novembre 2006 à 13:03:36

    Bonjours, j'ai un petit probleme, je voudrai mettre une image en background a mon programme mais je ny arrive pas, j'ai toujours un probleme lors de la compilation.

    Je vois pas tros ou je pourrai mettre le code pour charger la photo

    #include <windows.h>

    #define ID_B_PARLER 0
    #define ID_B_QUITTER 1

    HINSTANCE instance;

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

    int WinMain (HINSTANCE cetteInstance, HINSTANCE precedenteInstance,
    LPSTR lignesDeCommande, int modeDAffichage)
    {
        HWND fenetrePrincipale;
        MSG message;
        WNDCLASS classeFenetre;

        instance = cetteInstance;

        classeFenetre.style = 0;
        classeFenetre.lpfnWndProc = procedureFenetrePrincipale;
        classeFenetre.cbClsExtra = 0;
        classeFenetre.cbWndExtra = 0;
        classeFenetre.hInstance = NULL;
        classeFenetre.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        classeFenetre.hCursor = LoadCursor(NULL, IDC_ARROW);
        classeFenetre.hbrBackground = (HBRUSH)(7 + COLOR_BTNFACE);
        classeFenetre.lpszMenuNameNULL;
        classeFenetre.lpszClassName = "classeF";

        // On prévoit quand même le cas où ça échoue
        if(!RegisterClass(&classeFenetre)) return FALSE;

        fenetrePrincipale = CreateWindow("classeF", "Ordinateur Facile !", WS_OVERLAPPEDWINDOW,
                                       CW_USEDEFAULT, CW_USEDEFAULT, 600, 600,
                                                       NULL, NULL, cetteInstance, NULL);
        if (!fenetrePrincipale) return FALSE;

        ShowWindow(fenetrePrincipale, modeDAffichage);
        UpdateWindow(fenetrePrincipale);


        while (GetMessage(&message, NULL, 0, 0))
        {
            TranslateMessage(&message);
            DispatchMessage(&message);
        }
        return message.wParam;
    }




    LRESULT CALLBACK procedureFenetrePrincipale(HWND fenetrePrincipale, UINT message, WPARAM wParam, LPARAM lParam)
    {
        static HWND boutons[2] = {NULL};

        switch (message)
        {
            case WM_CREATE:
                    boutons[0] = CreateWindow("BUTTON", "Parler", WS_CHILD | WS_VISIBLE,
            5, 5, 383, 30, fenetrePrincipale, (HMENU)ID_B_PARLER, instance, NULL);
                    boutons[1] = CreateWindow("BUTTON", "Quitter", WS_CHILD | WS_VISIBLE,
            5, 340, 383, 30, fenetrePrincipale, (HMENU)ID_B_QUITTER, instance, NULL);
                return 0;

            case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                    case ID_B_PARLER:
                        MessageBox(fenetrePrincipale, "Clic", "Bienvenue ceci a été creer par christopher.", MB_ICONINFORMATION);
                        break;

                    case ID_B_QUITTER:
                        SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                        break;
                }
                return 0;

            case WM_DESTROY:
                PostQuitMessage(0);
                return 0;

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


    Merci de votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
      2 novembre 2006 à 15:32:57

      Ta fonction WinMain est mal définie

      int WINAPI WinMain( ... )

      ou

      int APIENTRY WinMain( ... )


      Pour afficher une image sur ta fenêtre tu peux
      utiliser la fonction LoadImage(...) dans la
      gestion du message WM_CREATE
      puis,
      tu peux utiliser par exemple la fonction DrawState(...)
      dans la gestion du message WM_PAINT
      ou,
      les fonctions CreateCompatibleDC(...),
      CreateCompatibleBitmap(...) et BitBlt(...)
      toujours dans la gestion du message WM_PAINT
      • Partager sur Facebook
      • Partager sur Twitter
        2 novembre 2006 à 15:44:21

        Je t'avoue que je suis en peut perdu, je voie l'endroit que tu veut que je modifie mais je vois pas se qui faut changer entre les parenthèse.

        Esque je pourrai avoir un petit bout de code.
        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          2 novembre 2006 à 15:55:05


          #include <windows.h>

          #define ID_B_PARLER  0
          #define ID_B_QUITTER 1

          //Image de fond
          #define NOM_IMAGE    "c:\\image.bmp"

          HINSTANCE instance;

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

          //----------------------------------------------------------------------
          int WINAPI WinMain (HINSTANCE cetteInstance,
                              HINSTANCE precedenteInstance,
                              LPSTR     lignesDeCommande,
                              int       modeDAffichage)
          {
            HWND fenetrePrincipale;
            MSG message;
            WNDCLASS classeFenetre;

            instance = cetteInstance;

            classeFenetre.style         = 0;
            classeFenetre.lpfnWndProc   = procedureFenetrePrincipale;
            classeFenetre.cbClsExtra    = 0;
            classeFenetre.cbWndExtra    = 0;
            classeFenetre.hInstance     = NULL;
            classeFenetre.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
            classeFenetre.hCursor       = LoadCursor(NULL, IDC_ARROW);
            classeFenetre.hbrBackground = (HBRUSH)(7 + COLOR_BTNFACE);
            classeFenetre.lpszMenuName  =  NULL;
            classeFenetre.lpszClassName = "classeF";

            // On prévoit quand même le cas où ça échoue
            if(!RegisterClass(&classeFenetre)) return FALSE;

            fenetrePrincipale = CreateWindow("classeF",
                                             "Ordinateur Facile !",
                                             WS_OVERLAPPEDWINDOW,
                                             CW_USEDEFAULT, CW_USEDEFAULT,
                                             600, 600,
                                             NULL, NULL,
                                             cetteInstance,
                                             NULL);
            if (!fenetrePrincipale) return FALSE;

            ShowWindow(fenetrePrincipale, modeDAffichage);
            UpdateWindow(fenetrePrincipale);

            while (GetMessage(&message, NULL, 0, 0))
            {
              TranslateMessage(&message);
              DispatchMessage(&message);
            }
            return message.wParam;
          }

          //----------------------------------------------------------------------
          LRESULT CALLBACK procedureFenetrePrincipale(HWND   fenetrePrincipale,
                                                      UINT   message,
                                                      WPARAM wParam,
                                                      LPARAM lParam)
          {
            HDC            hDC;
            PAINTSTRUCT    pst;
            static HBITMAP hBitmap;
            static HWND    boutons[2] = {NULL};

            switch(message)
            {
              case WM_CREATE:
                hBitmap = LoadImage(instance,
                                    NOM_IMAGE,
                                    IMAGE_BITMAP,
                                    0, 0,
                                    LR_DEFAULTSIZE | LR_LOADFROMFILE);
                boutons[0] = CreateWindow("BUTTON",
                                          "Parler",
                                          WS_CHILD | WS_VISIBLE,
                                          5, 5, 383, 30,
                                          fenetrePrincipale,
                                          (HMENU)ID_B_PARLER,
                                          instance,
                                          NULL);
                boutons[1] = CreateWindow("BUTTON",
                                          "Quitter",
                                          WS_CHILD | WS_VISIBLE,
                                          5, 340, 383, 30,
                                          fenetrePrincipale,
                                          (HMENU)ID_B_QUITTER,
                                          instance,
                                          NULL);
                return 0;

              case WM_PAINT:
                hDC = BeginPaint(fenetrePrincipale, &pst);
                DrawState(hDC,
                          NULL, NULL,
                          (LPARAM)hBitmap,
                          0, 0, 0, 0, 0,
                          DST_BITMAP|DSS_NORMAL);
                EndPaint(fenetrePrincipale, &pst);
                return 0;

              case WM_COMMAND:
                switch(LOWORD(wParam))
                {
                  case ID_B_PARLER:
                    MessageBox(fenetrePrincipale,
                               "Clic",
                               "Bienvenue ceci a été créé par christopher.",
                               MB_ICONINFORMATION);
                    break;

                  case ID_B_QUITTER:
                    SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                    break;
                }
                return 0;

              case WM_DESTROY:
                DeleteObject(hBitmap);   
                PostQuitMessage(0);
                return 0;

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


          • Partager sur Facebook
          • Partager sur Twitter
            2 novembre 2006 à 16:10:18

            Merci beaucoup de ton aide.

            J'ai rajouter le code que tu ma envoyé au mien que j'avais avancé :

            #include <windows.h>

            #define ID_B_PARLER  0
            #define ID_B_QUITTER 1
            #define ID_B_ouiquitter 0
            #define ID_B_nonquitter 1
            //Image de fond
            #define NOM_IMAGE    "c:\\image.bmp"

            HINSTANCE instance;

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

            //----------------------------------------------------------------------
            int WINAPI WinMain (HINSTANCE cetteInstance,
                                HINSTANCE precedenteInstance,
                                LPSTR     lignesDeCommande,
                                int       modeDAffichage)
            {
              HWND fenetrePrincipale;
              MSG message;
              WNDCLASS classeFenetre;

              instance = cetteInstance;

              classeFenetre.style         = 0;
              classeFenetre.lpfnWndProc   = procedureFenetrePrincipale;
              classeFenetre.cbClsExtra    = 0;
              classeFenetre.cbWndExtra    = 0;
              classeFenetre.hInstance     = NULL;
              classeFenetre.hIcon         = LoadIcon(NULL, IDI_APPLICATION);
              classeFenetre.hCursor       = LoadCursor(NULL, IDC_ARROW);
              classeFenetre.hbrBackground = (HBRUSH)(7 + COLOR_BTNFACE);
              classeFenetre.lpszMenuName  =  NULL;
              classeFenetre.lpszClassName = "classeF";

              // On prévoit quand même le cas où ça échoue
              if(!RegisterClass(&classeFenetre)) return FALSE;

              fenetrePrincipale = CreateWindow("classeF",
                                               "Ordinateur Facile !",
                                               WS_OVERLAPPEDWINDOW,
                                               CW_USEDEFAULT, CW_USEDEFAULT,
                                               600, 600,
                                               NULL, NULL,
                                               cetteInstance,
                                               NULL);
              if (!fenetrePrincipale) return FALSE;

              ShowWindow(fenetrePrincipale, modeDAffichage);
              UpdateWindow(fenetrePrincipale);

              while (GetMessage(&message, NULL, 0, 0))
              {
                TranslateMessage(&message);
                DispatchMessage(&message);
              }
              return message.wParam;
            }

            //----------------------------------------------------------------------
            LRESULT CALLBACK procedureFenetrePrincipale(HWND   fenetrePrincipale,
                                                        UINT   message,
                                                        WPARAM wParam,
                                                        LPARAM lParam)
            {
              HDC            hDC;
              PAINTSTRUCT    pst;
              static HBITMAP hBitmap;
              static HWND    boutons[2] = {NULL};

              switch(message)
              {
                case WM_CREATE:
                  hBitmap = LoadImage(instance,
                                      NOM_IMAGE,
                                      IMAGE_BITMAP,
                                      0, 0,
                                      LR_DEFAULTSIZE | LR_LOADFROMFILE);
                  boutons[0] = CreateWindow("BUTTON",
                                            "Parler",
                                            WS_CHILD | WS_VISIBLE,
                                            5, 5, 383, 30,
                                            fenetrePrincipale,
                                            (HMENU)ID_B_PARLER,
                                            instance,
                                            NULL);
                  boutons[1] = CreateWindow("BUTTON",
                                            "Quitter",
                                            WS_CHILD | WS_VISIBLE,
                                            5, 340, 383, 30,
                                            fenetrePrincipale,
                                            (HMENU)ID_B_QUITTER,
                                            instance,
                                            NULL);
                  return 0;

                case WM_PAINT:
                  hDC = BeginPaint(fenetrePrincipale, &pst);
                  DrawState(hDC,
                            NULL, NULL,
                            (LPARAM)hBitmap,
                            0, 0, 0, 0, 0,
                            DST_BITMAP|DSS_NORMAL);
                  EndPaint(fenetrePrincipale, &pst);
                  return 0;
            case WM_COMMAND:
                        switch(LOWORD(wParam))
                        {
                            case ID_B_ouiquitter:
                                SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                                PostQuitMessage(0);
                                break;


                            case ID_B_nonquitter:
                                SendMessage(fenetrePrincipale, WM_DESTROY, 0, 0);
                                PostQuitMessage(0);
                                break;

             }
                        return 0;


                        }
                        return 0;

                    case WM_DESTROY:
                        PostQuitMessage(0);
                        return 0;

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




            Et il me renvoie sa comme erreur :

            Citation : Pas de titre

            erreur :

            main.cpp:79: error: invalid conversion from `void*' to `HBITMAP__*'
            main.cpp:128: error: case label `2' not within a switch statement
            main.cpp:132: error: case label not within a switch statement
            main.cpp: At global scope:
            main.cpp:135: error: expected declaration before '}' token
            Process terminated with status 1 (0 minutes, 1 seconds)s




            Merci beaucoup de ton aide.
            • Partager sur Facebook
            • Partager sur Twitter
              3 novembre 2006 à 17:18:56

              J'aurai vraiment besoin de votre aide
              Merci.
              • Partager sur Facebook
              • Partager sur Twitter

              Probleme de background API

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown