[citation=4507,1][nom]jcassagne a écrit[/nom]Je souhaite écrire un petit programme dont une des fonctions est d’afficher des images .bmp dans une fenêtre avec ascenseur.
Il faut que ce programme soit le plus indépendant possible de Windows (95-98-… XP) et qu’il s’exécute directement sans installation. Je souhaite, de plus, l’écrire sous Microsoft Visual C++ en C (voire C++).
Quelqu’un pourrait-il me conseiller et m’indiquer où trouver des exemples et quelle librairie utiliser ?
Merci.
[/citation]
Il faut passer par l'API win32. C'est un peu pénible à faire mais krosoft fournit gratuitement un sample qui montre comment le faire tout à fait correctement. Le sample s'appelle DIBLOOK, le souci étant qu'il faut télécharger tous les samples du VC6 pour l'avoir (130Mo de code).
Tu peux aussi faire ça comme un bourrin si tu utilises les MFC.
dans ta fenêtre, tu ajoutes un control statique soit avec le wizard (faut alors lui associer une variable) soit directement dans le .h de ta classe (CStatic mon_controle);
Puis dans l'initialisation de la fenetre ou plus tard si tu le veux comme ça :
[cpp]/* loading bitmap */
HBITMAP hBitmap = (HBITMAP)LoadImage(NULL, "mon_image.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE );
/* setting bitmap */
mon_controle.SetBitmap(hBitmap);[/cpp]
Et puis voilà ! C'est pas tip top parce que ca t'oblige à utiliser un controle, donc plus de ressources, mais ca t'économise pas mal des lignes de code nécessaires pour avoir un prog vraiment clean.
Ah, et puis il faut pas oublier de faire le ménage avant la fin du programme sinon sous windaube95/98/me ton utilisateur risque d'avoir des petits soucis :
[cpp]/* unsetting bitmap */
mon_controle.SetBitmap(NULL);
/* freeing loaded bitmap */
DeleteObject((HGDIOBJ)hBitmap);[/cpp]