Need help_API - debutant.

Signaler
Messages postés
9
Date d'inscription
samedi 29 mars 2003
Statut
Membre
Dernière intervention
19 avril 2004
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
j'ai cree un progamme qui affiche une image (stoquee dans un fichier .bmp), et une phrase (lu a partir d'un fichier TXT), j'ai deux problemes : une fois l'execution du programme fini, j'ai l'image qui reste figer a l'ecran (non mise a jour des fenetres une fois le progamme termine), deplus je sais pas comment je peut faire pour que l'image soit centree (en fonction de la resolution de l'ecrant).

Merci pour votre aide, voivi mon code source (compite avec visual studio 2002) :

#include <windows.h>
#include <stdio.h>
#include <time.h>

extern void afficheImage(char monImage[]);
extern void afficheTXT(char monTXT[]);

int coordonneeIMG_x = 0;
int coordonneeIMG_y = 0;
int coordonneeTXT_x = 50;
int coordonneeTXT_y = 50;
HBITMAP imageAAfichier;
HDC hdc;
HDC handleMemoire;
HWND hwnd;
BITMAP bitmap;

int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,PSTR szCmdLine,int iCmdShow)
{
char titreFilm[101];
char nomFichier[30] = "image.bmp";
FILE * fichierTitre;

fichierTitre = fopen("titre.txt","r");
while (fgets(titreFilm,sizeof(titreFilm),fichierTitre) != NULL);
fclose(fichierTitre);

hdc=GetDC(hwnd); // obtient un handle de contexte de périphérique
handleMemoire = CreateCompatibleDC(NULL); //utilisation du periph ecrant

afficheImage(nomFichier);
afficheTXT(titreFilm);

DeleteDC(handleMemoire); //liberation handel memoire
DeleteObject(imageAAfichier); //supprime le handel image en memoire

}
//----------------------------------------------------------------------------------------
void afficheImage(char monImage[])
{
imageAAfichier = (HBITMAP)LoadImage(NULL,monImage,IMAGE_BITMAP,0,0,LR_LOADFROMFILE );
/* imageAAfichier : Resultat (handel)
(HBITMAP) : forcage de type (le resultat sera de type HBITMAP
NULL : le fichier image est externe au prog
"image.bmp" : le fichier image
IMAGE_BITMA : il type de l'image, ici bimtape
1er 0 : largeur initial
2eme 0 : hauteur initial
LR_LOADFROMFILE : image charger depuis fichier exterieur au prog
*/
SelectObject(handleMemoire,imageAAfichier); //chargement de l'image dans la memoire
GetObject(imageAAfichier,sizeof(bitmap),&bitmap); //determination de la taille de l'image (hauteur, largeur)
BitBlt(hdc,coordonneeIMG_x,coordonneeIMG_y,bitmap.bmWidth,bitmap.bmHeight,handleMemoire,0,0,SRCCOPY); //affichage de l'image a l'ecrant
}
//-----------------------------------------------------------------------------------------
void afficheTXT(char monTXT[])
{
SetTextColor(hdc,RGB(255,0,0)); //ecriture rouge
SetBkColor(hdc,RGB(250,255,36)); //fond jaune
TextOut(hdc,coordonneeTXT_x,coordonneeTXT_y,&monTXT[0],strlen(monTXT));
}

1 réponse

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
SetDIBitsToDevice(hdc, (cxClient - cxDib) / 2, (cyClient - cyDib) / 2, cxDib, cyDib, 0, 0, 0, cyDib, m_pBits, m_pbmi, DIB_RGB_COLORS);
BruNews, ciao...