begin process at 2012 02 11 02:43:33
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

La librairie FreeImage


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

La librairie FreeImage

samedi 13 mai 2006 à 15:31:48 | La librairie FreeImage

Alexbad

Salut,

J'ai commencé à programmer en C++ avec la librairie standard de Windows. Là, je réussis à ouvrir une jolie fenêtre grisonnante au centre de l'écran, et je veux afficher une image dedans. J'ai trouvé la librairie FreeImage, que je ne sais pas utiliser et je ne trouve absolument aucun tutorial ni aucun exemple de son utilisation à l'exception de la documentation officielle, avec laquelle j'ai tenté de faire ça, mais sans succès :

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include <freeimage/FreeImage.h>
#include "includes/resolution.c"


HWND hWnd;
MSG msg;
WNDCLASS wc;
HDC DC;
HGLRC RC;

LRESULT CALLBACK WindowProc (HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
    switch (uMsg)
    {
        case WM_CREATE:
        DC=GetDC (hwnd);
        break;
        case WM_CLOSE:
        PostQuitMessage (0);
        break;
        default:
        return DefWindowProc (hwnd,uMsg,wParam,lParam);
        break;

    }

    return 0;
}
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int CmdShow)
{
DLL_API void DLL_CALLCONV FreeImage_Initialise(BOOL load_local_plugins_only
FI_DEFAULT(FALSE));

        wc.style = CS_OWNDC;
        wc.lpfnWndProc = WindowProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hInstance;
        wc.hIcon = LoadIcon(NULL, "favicon.ico");
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        wc.hbrBackground = (HBRUSH)GetStockObject(LTGRAY_BRUSH);
        wc.lpszMenuName = NULL;
        wc.lpszClassName = "OGL";

    RegisterClass(&wc);

    Position resolution, positionWindow, dimensionsWindow;
    resolution.x = GetSystemMetrics(SM_CXSCREEN);
    resolution.y = GetSystemMetrics(SM_CYSCREEN);

    dimensionsWindow.x = 500;
    dimensionsWindow.y = 300;

    positionWindow.x = resolution.x / 2 - dimensionsWindow.x / 2;
    positionWindow.y = resolution.y / 2 - dimensionsWindow.y / 2;

    hWnd = CreateWindow("OGL", "École de La Page", WS_CAPTION | WS_POPUPWINDOW | WS_VISIBLE | WS_MAXIMIZEBOX | WS_MINIMIZEBOX, positionWindow.x, positionWindow.y, dimensionsWindow.x, dimensionsWindow.y, NULL, NULL, hInstance, NULL);
    DC = GetDC(hWnd);

    FILE* myfile = fopen("erreur.txt", "r+");



    FIBITMAP *dib = FreeImage_Load(FIF_BMP, "images/load.bmp", BMP_DEFAULT);



    // ...
    SetStretchBltMode(DC, COLORONCOLOR);

    StretchDIBits(DC, 0, 0, 0, 0, 0, 0, FreeImage_GetWidth(dib), FreeImage_GetHeight(dib), FreeImage_GetBits(dib), FreeImage_GetInfo(dib), DIB_RGB_COLORS, SRCCOPY);
    // ...
    FreeImage_Unload(dib);


    while (GetMessage (&msg, NULL, 0, 0))
    {
        TranslateMessage (&msg);
        DispatchMessage (&msg);
    }
    fclose(myfile);

   DLL_API void DLL_CALLCONV FreeImage_DeInitialise();
   return 0;
}

Voilà, merci d'avance pour votre aide
samedi 13 mai 2006 à 16:31:47 | Re : La librairie FreeImage

ymca2003

traite le message WM_PAINT et dessine dedans l'image.

case WM_PAINT :
PAINTSTRUCT ps = {0};
HDC hdc  = BeginPaint(hWnd, &ps;
...
EndPaint(hWnd, &ps); // plus  sur des param, à checker sur MSDN

  FIBITMAP *dib = FreeImage_Load(FIF_BMP, "images/load.bmp", BMP_DEFAULT);

=> à faire dans WM_CREATE

FreeImage_Unload(dib);

=> a faire dansWM_DESTROY


Ton erreur vient d'une mauvaise compréhension de la gestion d'une fenêtre Windows. Regarde le bouquin de petzold (j'ai pas le lien en tête mais il est souvent cité sur le forum) qui expliquera en détail.


Cette discussion est classée dans : hwnd, wc, freeimage, dib, dimensionswindow


Répondre à ce message

Sujets en rapport avec ce message

probleme openGl niveau debutant [ par AmK ] salut je debute en openGL et j'ai du mal a creer une fenetre le compilateur me mets 2 erreurs :PS: les erreurs du compilateur(vc++ 6.0)sont plus bas ! ressources et API !!!! [ par Xs ] salut !voila, pour me simplifier la tache, j'utlise les ressources pour creer une boite de dialog (sous VC++ 6).mais j'obtiens, lors de la compilation Pb sur un ptit bout de prog en DirectX.... [ par Haldwin ] Salut a tous....Voila j'ai deux ptits pbs quand je lance cette appli ci-dessous... (VC++)La première est q'une fois sur deux ma variable hWnd apres le Problème de programmation Win32 [ par GUNMAN ] J'ai téléchargé la source d'une des personnes ici, je compile, tout va bien, je construit le .exe et il me met : "Linking...Cpp1.obj : error LNK2001: ouvrir une 2eme fenetre avec editbox et tout et tout, c'est possible? [ par Arnaud16022 ] Hello tout le monde!je voudrais mettre un bouton dans une fenetre (ca c'est facile), mais seulement quand on clique dessus un autre fenetre s'ouvre, a Colorier un static : HEeeeeeeelp !!! [ par sprintjeffC ] salut @ tousje me mets a la programmation windows en C/C++ (pas VC++ merci ... quitte à faire du microsoft je préfère VB ;-). Je démarrai pas mal et t [C++]Problème de pointeur ou de liste chainee [ par Arkko ] Bonjour... J'essaye de convertir une liste chainée du site en une liste chainée demandant comme parametre un new par exemple ajouter(new Test);Cela f pb avec le plein écran de DirectX que je veux enlever [ par Diabolus ] Bonjour à tous !Je souhaiterai créer une fenêtre en mode normal et tout ce que j'arrive à faire c'est du plein écran. J'aimerai enlever le plein écran Problème de linker dans programme de base. [ par vith17 ] Bonjour,J'ai tapé le code suivant sous Dev-C++. Lorsque je lance la compilation, il me revoie l'erreur suivante :    [Linker error] undefined referenc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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 : 3,479 sec (3)

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