Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : mettre une bmp en arrière plan d'une fenetre Windows [ Windows / System ] (delmann31)

mercredi 14 mai 2008 à 01:11:05 | mettre une bmp en arrière plan d'une fenetre Windows

delmann31

Bonsoir à toutes et à tous!

Je développe actuellement un projet sous Dev C++ en utilisant une API Windows.

Je voudrais savoir comment insérer une image en arrière plan sur fenetre principale de mon programme (en arrière plan d'un texte par exemple).

J'ai trouvé des aides sur internet pour insérer une BMP mais il me semble (ou alors je n'ai pas bien vu ou compris...) que l'image se met par dessus le texte...On ne peut donc plus rien lire... Et ce n'est ce que je veux...

Merci d'avance pour vos réponses.


mercredi 14 mai 2008 à 12:40:53 | Re : mettre une bmp en arrière plan d'une fenetre Windows

delmann31

petite info complémentaire... Je code en C et pas en C++...

mercredi 14 mai 2008 à 16:11:40 | Re : mettre une bmp en arrière plan d'une fenetre Windows

jfrancois

Bonjour,

Voici un petit programme Win32 en C qui gère une image de fond de 3 façons différentes (dupliquée, étirée ou centrée) et provenant soit des ressources du programmes soit d'un fichier ayant le même nom que l'application mais avec l'extension "bmp" (dans le même répertoire que l'application, ça permet à l'utilisateur de "customiser" le programme !).

La maquette originale de ce programme est en C++. J'espère que je l'ai bien passée en C : Commentaires entre /* */ et variables déclarées en début de blocs !

Fichier source Test.c (par exemple) :

/* ================================== */
/* Fenêtre Windows avec image de fond */
/* ================================== */

#include <windows.h>
#include <commctrl.h>

/* --- Librairie pour "InitCommonControls()" */
#pragma comment(lib,"comctl32.lib")

/* --- Constante nouvelle dans l'API */
/* --- (inexistante quand Microsoft Visual C++ 6.0 est sorti !) */
#if _MSC_VER <= 1200
#define CS_DROPSHADOW  0x00020000
#endif

/* --- Constantes */
#define ID_ZONE_EDIT              1000
#define ID_ZONE_STATIC            1001
#define ID_RADIOBOUTON_DUPLIQUER  1002
#define ID_RADIOBOUTON_ETIRER     1003
#define ID_RADIOBOUTON_CENTRER    1004
#define ID_BOUTON_QUITTER         1005

/* --- Instance de l'application */
static HINSTANCE g_hInstance = NULL;

/* --- Largeur et hauteur de la fenêtre */
static int g_iFenetreLargeur = 400;
static int g_iFenetreHauteur = 300;

/* --- Type de remplissage par défaut de la zone client */
static int g_iTypeRemplissage = ID_RADIOBOUTON_DUPLIQUER;

/* --- Prototypes des fonctions locales */
int WINAPI       WinMain(HINSTANCE,HINSTANCE,LPSTR,int);
LRESULT CALLBACK WinProc(HWND,UINT,WPARAM,LPARAM);

 

/* =================== */
/* Fonction principale */
/* =================== */

int WINAPI WinMain
(
    HINSTANCE hInstance        /* E:instance courante */
   ,HINSTANCE hInstancePrec    /* E:instance précédente */
   ,LPSTR     pszLigneCommande /* E:ligne de commande */
   ,int       iModeAffichage   /* E:mode d'affichage */
)                              /* S:code retour */
{
   /* --- Variables locales */
   HDC        hDCScreen;
   HWND       hWnd;
   MSG        Msg;
   WNDCLASSEX WndClass;
   static const char* szNomClasse = "TestClassName";


   /* --- Initialiser */
   g_hInstance = hInstance;
   InitCommonControls();
   
   /* --- Enregistrer la classe de la fenêtre */
   WndClass.cbSize        = sizeof(WNDCLASSEX);
   WndClass.style         = 0;
   WndClass.lpfnWndProc   = WinProc;
   WndClass.cbClsExtra    = 0;
   WndClass.cbWndExtra    = 0;
   WndClass.hInstance     = g_hInstance;
   WndClass.hIcon         = LoadIcon(g_hInstance,"ICON_APP");
   WndClass.hCursor       = LoadCursor(NULL,IDC_ARROW);
   WndClass.hbrBackground = (HBRUSH)(COLOR_APPWORKSPACE + 1);
   WndClass.lpszMenuName  = NULL;
   WndClass.lpszClassName = szNomClasse;
   WndClass.hIconSm       = NULL;
   if (! RegisterClassEx(&WndClass)) return 0;


   /* --- Largeur et hauteur de l'écran */
   hDCScreen = CreateDC("DISPLAY","","",NULL);
   int iEcranLargeur = GetDeviceCaps(hDCScreen,HORZRES);
   int iEcranHauteur = GetDeviceCaps(hDCScreen,VERTRES);


   /* --- Créer la fenêtre (centrée sur l'écran) */
   hWnd = CreateWindowEx
   (
       0
      ,szNomClasse
      ,"Exemple"
      ,WS_OVERLAPPED | WS_SYSMENU | WS_MINIMIZEBOX
      ,(iEcranLargeur - g_iFenetreLargeur) / 2 /* x */
      ,(iEcranHauteur - g_iFenetreHauteur) / 2 /* y */
      ,g_iFenetreLargeur /* largeur */
      ,g_iFenetreHauteur /* hauteur */
      ,(HWND)NULL
      ,(HMENU)NULL
      ,g_hInstance
      ,(LPVOID)NULL
   );
   if (hWnd == NULL) return 0;


   /* --- Montrer la fenêtre */
   ShowWindow(hWnd,iModeAffichage);
   UpdateWindow(hWnd);


   /* --- Traiter les messages de la fenêtre */
   while (GetMessage(&Msg,NULL,0,0))
   {
      TranslateMessage(&Msg);
      DispatchMessage(&Msg);
   }
   return Msg.wParam;
}

 

/* ================================== */
/* Traiter les messages de la fenêtre */
/* ================================== */

LRESULT CALLBACK WinProc
(
    HWND   hWnd   /* E:handle de la fenêtre */
   ,UINT   uiMsg  /* E:message à traiter */
   ,WPARAM wParam /* E:paramètre WPARAM */
   ,LPARAM lParam /* E:paramètre LPARAM */
)                 /* S:code retour */
{
   /* --- Variables locales permanentes */
   static HBITMAP hBitmapBg   = NULL;
   static HDC     hBitmapBgDC = NULL;
   static HFONT   hFontTexte  = NULL;

   switch (uiMsg)
   {
      /* ---------------- */
      /* Créer la fenêtre */
      /* ---------------- */
      case WM_CREATE:
      {
         /* --- Variables locales */
         HDC hDC;
         HMODULE hModule;
         HWND hWndEdit,hWndStatic,hWndDupliquer,hWndEtirer,hWndCentrer,hWndQuitter;
         int iBordLargeur,iBordHauteur,iTitreHauteur,iMarge,iBoutonLargeur,iBoutonHauteur,iLargeurDispo;

         /* --- Remplacer la petite icône standard dans la barre de titre */
         SetClassLong(hWnd,GCL_HICON,(long)LoadIcon(g_hInstance,"ICON_APPLICATION"));
        
        
         /* --- Ajouter un ombrage à la fenêtre !!! */
         SetClassLong(hWnd,GCL_STYLE,GetClassLong(hWnd,GCL_STYLE) | CS_DROPSHADOW);


         /* --- Créer le nom du fichier image */
         /* --- (nom de l'appli avec extension "bmp" à la place de "exe") */
         hModule = GetModuleHandle(NULL);
         char szNomFichier[MAX_PATH];
         GetModuleFileName(hModule,szNomFichier,MAX_PATH);
         szNomFichier[strlen(szNomFichier) - 3] = 0; /* - "exe" */
         strcat(szNomFichier,"bmp");                 /* + "bmp" */

  
         /* --- Charger le bitmap en mémoire */
         hDC = GetDC(hWnd);
         hBitmapBgDC = CreateCompatibleDC(hDC);
         if (hBitmapBgDC)
         {
            /* --- Charger le fichier image */
            hBitmapBg = (HBITMAP)LoadImage(0,szNomFichier,IMAGE_BITMAP,0,0,LR_LOADFROMFILE);

            /* --- Si le fichier n'a pas été chargé (inexistant ?) */
            /* --- alors charger le bitmap défini dans les ressources */
            if (hBitmapBg == NULL) hBitmapBg = LoadBitmap(g_hInstance,(LPCTSTR)"BITMAP_BACKGROUND");

            /* --- Selectionner en mémoire le bitmap (fichier ou ressource) */
            if (hBitmapBg) SelectObject(hBitmapBgDC,hBitmapBg);
         }
         ReleaseDC(hWnd,hDC);

        
         /* --- Fonte de caractères pour les textes */
         /* --- (pour remplacer l'inesthétique fonte par défaut) */
         hFontTexte = CreateFont
         (
            -MulDiv(10,GetDeviceCaps(GetDC(hWnd),LOGPIXELSY),72),0,0,0
            ,FW_NORMAL    /* graisse */
            ,(DWORD)TRUE  /* italique */
            ,(DWORD)FALSE /* souligné */
            ,(DWORD)FALSE /* barré */
            ,ANSI_CHARSET,OUT_DEFAULT_PRECIS,CLIP_DEFAULT_PRECIS
            ,PROOF_QUALITY,DEFAULT_PITCH | FF_SWISS
            ,"Verdana"
         );


         /* --- Dimensions autour de la zone clients */
         /* --- (bordure, barre de titre, marge dans la zone client! */
         iBordLargeur  = GetSystemMetrics(SM_CXFIXEDFRAME);
         iBordHauteur  = GetSystemMetrics(SM_CYFIXEDFRAME);
         iTitreHauteur = GetSystemMetrics(SM_CYCAPTION);
         iMarge        = 10;
         iLargeurDispo = g_iFenetreLargeur - 2 * (iMarge + iBordLargeur);
        

         /* --- Créer un contrôle EDIT (zone de saisie) */
         /* --- sur toute la largeur disponible hors marges */
         hWndEdit = CreateWindowEx
         (
             0
            ,"EDIT"
            ,"Contrôle de type EDIT modifiable"
            ,WS_VISIBLE | WS_CHILD | WS_BORDER
            ,iMarge,iMarge /* x,y */
            ,iLargeurDispo,20 /* largeur,hauteur */
            ,hWnd
            ,(HMENU)ID_ZONE_EDIT
            ,g_hInstance
            ,NULL
         );
         SendMessage(hWndEdit,WM_SETFONT,(WPARAM)hFontTexte,(LPARAM)TRUE);

        
         /* --- Créer un contrôle STATIC (zone non saisissable) */
         /* --- sur toute la largeur disponible hors marges */
         hWndStatic = CreateWindowEx
         (
             0
            ,"STATIC"
            ,"Contrôle de type STATIC non modifiable"
            ,WS_VISIBLE | WS_CHILD | WS_BORDER | ES_CENTER
            ,iMarge,50 /* x,y */
            ,iLargeurDispo,20 /* largeur,hauteur */
            ,hWnd
            ,(HMENU)ID_ZONE_STATIC
            ,g_hInstance
            ,NULL
         );
         SendMessage(hWndStatic,WM_SETFONT,(WPARAM)hFontTexte,(LPARAM)TRUE);

        
         /* --- Radioboutons de sélection du type de remplissage */
         hWndDupliquer = CreateWindowEx
         (
             0
            ,"BUTTON"
            ,"Bitmap dupliqué pour remplir la zone client"
            ,WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON
            ,iMarge,90 /* x,y */
            ,iLargeurDispo,20 /* largeur,hauteur */
            ,hWnd
            ,(HMENU)ID_RADIOBOUTON_DUPLIQUER
            ,g_hInstance
            ,NULL
         );
         SendMessage(hWndDupliquer,WM_SETFONT,(WPARAM)hFontTexte,(LPARAM)TRUE);
         hWndEtirer = CreateWindowEx
         (
             0
            ,"BUTTON"
            ,"Bitmap étiré pour remplir la zone client"
            ,WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON
            ,iMarge,120 /* x,y */
            ,iLargeurDispo,20 /* largeur,hauteur */
            ,hWnd
            ,(HMENU)ID_RADIOBOUTON_ETIRER
            ,g_hInstance
            ,NULL
         );
         SendMessage(hWndEtirer,WM_SETFONT,(WPARAM)hFontTexte,(LPARAM)TRUE);
         hWndCentrer = CreateWindowEx
         (
             0
            ,"BUTTON"
            ,"Bitmap unique centré dans la zone client"
            ,WS_CHILD | WS_VISIBLE | BS_AUTORADIOBUTTON
            ,iMarge,150 /* x,y */
            ,iLargeurDispo,20 /* largeur,hauteur */
            ,hWnd
            ,(HMENU)ID_RADIOBOUTON_CENTRER
            ,g_hInstance
            ,NULL
         );
         SendMessage(hWndCentrer,WM_SETFONT,(WPARAM)hFontTexte,(LPARAM)TRUE);


         /* --- Positionner le radiobouton par défaut */
         CheckRadioButton
         (
             hWnd
            ,ID_RADIOBOUTON_DUPLIQUER /* ID premier radiobouton */
            ,ID_RADIOBOUTON_CENTRER   /* ID dernier radiobouton */
            ,g_iTypeRemplissage       /* ID radiobouton à positionner */
         );

        
         /* --- Bouton pour quitter */
         /* --- (cadré en bas à droite) */
         iBoutonLargeur = 100;
         iBoutonHauteur = 30;
         hWndQuitter = CreateWindowEx
         (
             0
            ,"BUTTON"
            ,"Quitter"
            ,WS_CHILD | WS_VISIBLE
            ,g_iFenetreLargeur - iBordLargeur - iMarge - iBoutonLargeur /* x */
            ,g_iFenetreHauteur - iBordHauteur - iMarge - iBoutonHauteur - iTitreHauteur /* y */
            ,iBoutonLargeur,iBoutonHauteur /* largeur,hauteur */
            ,hWnd
            ,(HMENU)ID_BOUTON_QUITTER
            ,g_hInstance
            ,NULL
         );
         SendMessage(hWndQuitter,WM_SETFONT,(WPARAM)hFontTexte,(LPARAM)TRUE);


         /* --- Focus dans le control EDIT */
         SetFocus(hWndEdit);
      }
      return 0;

 

      /* ----------------------- */
      /* Peindre l'image de fond */
      /* ----------------------- */
      case WM_PAINT :
      {
         /* --- Variables locales */
         PAINTSTRUCT Paint;
         HDC hDC;
         RECT Client;
         BITMAP Bitmap;
         int iRet,iX,iY,iBX,iBY;

         /* --- Quitter si le bitmap n'a pas pu être créé */
         if (hBitmapBg == NULL) return 0;

         /* --- DÉBUT DU REMPLISSAGE */
         hDC = BeginPaint(hWnd,&Paint);
         if (hDC == NULL) return 0;

         /* --- Dimensions de la zone client */
         /* --- Client.right  = largeur de la zone client */
         /* --- Client.bottom = hauteur de la zone client */
         GetClientRect(hWnd,&Client);

         /* --- Dimensions du bitmap */
         iRet = GetObject(hBitmapBg,sizeof(BITMAP),&Bitmap);
         if (iRet == 0) return 0;

         /* --- Remplir la zone client */
         switch(g_iTypeRemplissage)
         {
            /* --- Dupliquer le bitmap dans la zone client */
            case ID_RADIOBOUTON_DUPLIQUER :
            {
               for (iX=0 ; iX<Client.right ; iX+=Bitmap.bmWidth)
                  for (iY=0 ; iY<Client.bottom ; iY+=Bitmap.bmHeight)
                     BitBlt(hDC,iX,iY,Bitmap.bmWidth,Bitmap.bmHeight,hBitmapBgDC,0,0,SRCCOPY);
            }
            break;

            /* --- Etirer le bitmap aux dimensions de la zone client */
            case ID_RADIOBOUTON_ETIRER :
            StretchBlt(hDC,0,0,Client.right,Client.bottom
                      ,hBitmapBgDC,0,0,Bitmap.bmWidth,Bitmap.bmHeight,SRCCOPY);
            break;

            /* --- Centrer le bitmap dans la zone client */
            case ID_RADIOBOUTON_CENTRER :
            {
               iX  = (Client.right    - Bitmap.bmWidth)  / 2; if (iX  < 0) iX  = 0;
               iY  = (Client.bottom   - Bitmap.bmHeight) / 2; if (iY  < 0) iY  = 0;
               iBX = (Bitmap.bmWidth  - Client.right)    / 2; if (iBX < 0) iBX = 0;
               iBY = (Bitmap.bmHeight - Client.bottom)   / 2; if (iBY < 0) iBY = 0;
               BitBlt(hDC,iX,iY,Client.right,Client.bottom,hBitmapBgDC,iBX,iBY,SRCCOPY);
            }
            break;
         }
  
         /* --- FIN DU REMPLISSAGE */
         EndPaint(hWnd,&Paint);
      }
      return 0;

 

      /* ------------------------------------------ */
      /* Changer la couleur dans les contrôles EDIT */
      /* ------------------------------------------ */
      case WM_CTLCOLOREDIT :
      {
         /* --- Variable locale */
         int iID;

         /* --- Identificateur du contrôle statique */
         iID = GetDlgCtrlID((HWND)lParam);

         if (iID == ID_ZONE_EDIT)
         {
            /* --- Zone EDIT */
            SetBkMode((HDC)wParam,TRANSPARENT);
            SetTextColor((HDC)wParam,RGB(0,255,0)); /* vert */
         }
      }
      return (LRESULT)GetStockObject(BLACK_BRUSH); /* fond noir */

 

      /* -------------------------------------------- */
      /* Changer la couleur dans les contrôles STATIC */
      /* -------------------------------------------- */
      case WM_CTLCOLORSTATIC :
      {
         /* --- Variable locale */
         int iID;

         /* --- Identificateur du contrôle statique */
         iID = GetDlgCtrlID((HWND)lParam);

         if (iID == ID_ZONE_STATIC)
         {
            /* --- Zone STATIC */
            SetBkMode((HDC)wParam,TRANSPARENT);
            SetTextColor((HDC)wParam,RGB(255,0,0)); /* rouge */
         }
         else if (iID == ID_RADIOBOUTON_DUPLIQUER)
         {
            /* --- Radiobouton de duplication */
            SetBkMode((HDC)wParam,TRANSPARENT);
            SetTextColor((HDC)wParam,RGB(0,0,255)); /* bleu */
         }
         else if (iID == ID_RADIOBOUTON_ETIRER)
         {
            /* --- Radiobouton d'étirement  */
            SetBkMode((HDC)wParam,TRANSPARENT);
            SetTextColor((HDC)wParam,RGB(255,255,255)); /* blanc */
         }
         else if (iID == ID_RADIOBOUTON_CENTRER)
         {
            /* --- Radiobouton de centrage */
            SetBkMode((HDC)wParam,TRANSPARENT);
            SetTextColor((HDC)wParam,RGB(255,255,0)); /* jaune */
         }
      }
      return (LRESULT)GetStockObject(NULL_BRUSH); /* fond transparent */

 

      /* -------------------- */
      /* Traiter une commande */
      /* -------------------- */
      case WM_COMMAND:
      switch(LOWORD(wParam))
      {
         /* --- Radiobouton pour le type de remplissage */
         case ID_RADIOBOUTON_DUPLIQUER :
         case ID_RADIOBOUTON_ETIRER    :
         case ID_RADIOBOUTON_CENTRER   :
         g_iTypeRemplissage = LOWORD(wParam);
         InvalidateRect(hWnd,NULL,TRUE);
         break;


         /* --- Quitter */
         case ID_BOUTON_QUITTER :
         case IDCANCEL :
         SendMessage(hWnd,WM_DESTROY,0,0);
         break;
      }
      return 0;

 

      /* --------------------- */
      /* Quitter l'application */
      /* --------------------- */
      case WM_DESTROY:
      {
         /* --- Détruire les objets */
         if (hBitmapBg)   DeleteObject((HGDIOBJ)hBitmapBg);
         if (hBitmapBgDC) DeleteDC(hBitmapBgDC);
         if (hFontTexte)  DeleteObject((HGDIOBJ)hFontTexte);

         PostQuitMessage(0);
      }
      return 0;
   }


  
   /* ------------------------------- */
   /* Retour du traitement par défaut */
   /* ------------------------------- */
   return DefWindowProc(hWnd,uiMsg,wParam,lParam);
}


Fichier des ressources Test.rc (par exemple) à ajouter au projet :

ICON_APPLICATION   ICON DISCARDABLE    "Test.ico" // 32x32 pixels
BITMAP_BACKGROUND  BITMAP DISCARDABLE  "Fond.bmp"


Les bitmaps [en ressource (Fond.bmp) ou en fichier (Test.bmp)] font environ 100 pixels par 100 pixels avec des couleurs intermédiaires (pour voir des textes aussi bien clairs que foncés).

Jean-François


mercredi 14 mai 2008 à 19:41:26 | Re : mettre une bmp en arrière plan d'une fenetre Windows

mogwai93

on peut aussi le faire tout au début (pour la duplication) :

    HBITMAP hBmp=(HBITMAP)(LoadImage(hThisInstance,
                                                 MAKEINTRESOURCE(IDB_BITMAP1),
                                                 IMAGE_BITMAP,0,0,
                                                 LR_CREATEDIBSECTION));       
    WndClass.hbrBackground = CreatePatternBrush(hBmp);
    DeleteObject(hBmp); 


mercredi 14 mai 2008 à 21:01:31 | Re : mettre une bmp en arrière plan d'une fenetre Windows

jfrancois

Il n'y a pas de duplication, le message WM_CREATE n'est généré qu'une seule fois. Ajouter une trace du message Windows juste avant le switch(message) dans la procédure de traitement des messages et vous le constaterez sans problème. Voici ce que celà donne pour une exécution complète de ce petit programme :

Windows message      hWnd     wParam   lParam
WM_GETMINMAXINFO     00BA0316 00000000 0012F8E8
WM_NCCREATE          00BA0316 00000000 0012F8CC
W
M_NCCALCSIZE        00BA0316 00000000 0012F908
WM_CREATE            00BA0316 00000000 0012F8B4
WM_COMMAND           00BA0316 040003E8 0023050C
WM_COMMAND           00BA0316 030003E8 0023050C
WM_PARENTNOTIFY      00BA0316 03E80001 0023050C
WM_PARENTNOTIFY      00BA0316 03E90001 0023045E
WM_PARENTNOTIFY      00BA0316 03EA0001 002B046E
WM_PARENTNOTIFY      00BA0316 03EB0001 00330514
WM_PARENTNOTIFY      00BA0316 03EC0001 0029049C
WM_PARENTNOTIFY      00BA0316 03ED0001 003D04CC
WM_WINDOWPOSCHANGING 00BA0316 00000000 0012F558
WM_ACTIVATEAPP       00BA0316 00000001 00000C6C
WM_NCACTIVATE        00BA0316 00000001 00000000
WM_GETICON           00BA0316 00000002 00000000
WM_GETICON           00BA0316 00000000 00000000
WM_GETICON           00BA0316 00000001 00000000
WM_ACTIVATE          00BA0316 00000001 00000000
WM_IME_SETCONTEXT    00BA0316 00000001 C000000F
WM_IME_NOTIFY        00BA0316 00000002 00000000
WM_SETFOCUS          00BA0316 00000000 00000000
WM_KILLFOCUS         00BA0316 0023050C 00000000
WM_IME_SETCONTEXT    00BA0316 00000000 C000000F
WM_COMMAND           00BA0316 010003E8 0023050C
WM_SHOWWINDOW        00BA0316 00000001 00000000
WM_WINDOWPOSCHANGING 00BA0316 00000000 0012FEA4
WM_NCPAINT           00BA0316 00000001 00000000
WM_ERASEBKGND        00BA0316 6E0128A9 00000000
WM_WINDOWPOSCHANGED  00BA0316 00000000 0012FEA4
WM_NCCALCSIZE        00BA0316 00000001 0012FAD8
WM_NCPAINT           00BA0316 00000001 00000000
WM_ERASEBKGND        00BA0316 6E0128A9 00000000
WM_SIZE              00BA0316 00000000 010C018A
WM_MOVE              00BA0316 00000000 01940283
WM_PAINT             00BA0316 00000000 00000000
WM_CTLCOLOREDIT      00BA0316 A7010AC4 0023050C
WM_CTLCOLOREDIT      00BA0316 A7010AC4 0023050C
WM_CTLCOLORSTATIC    00BA0316 A7010AC4 0023045E
WM_CTLCOLORSTATIC    00BA0316 6E0128A9 002B046E
WM_CTLCOLORSTATIC    00BA0316 0C0128D3 00330514
WM_CTLCOLORSTATIC    00BA0316 0C0128D3 0029049C
WM_CTLCOLORBTN       00BA0316 0C0128D3 003D04CC
WM_GETICON           00BA0316 00000002 00000000
WM_GETICON           00BA0316 00000000 00000000
WM_GETICON           00BA0316 00000001 00000000
WM_SETCURSOR         00BA0316 00330514 02000001
WM_SETCURSOR         00BA0316 00330514 02000001
WM_SETCURSOR         00BA0316 00330514 02000001
WM_SETCURSOR         00BA0316 00330514 02000001
WM_NCHITTEST         00BA0316 00000000 02190409
WM_SETCURSOR         00BA0316 00BA0316 02000001
WM_MOUSEMOVE         00BA0316 00000000 00850186
WM_NCACTIVATE        00BA0316 00000000 00000000
WM_ACTIVATE          00BA0316 00000000 00000000
WM_ACTIVATEAPP       00BA0316 00000000 000007F8
WM_COMMAND           00BA0316 020003E8 0023050C
WM_WINDOWPOSCHANGING 00BA0316 00000000 0012FE78
WM_ACTIVATEAPP       00BA0316 00000001 000007F8
WM_NCACTIVATE        00BA0316 00000001 00000000
WM_ACTIVATE          00BA0316 00000001 00000000
WM_IME_SETCONTEXT    00BA0316 00000001 C000000F
WM_IME_NOTIFY        00BA0316 00000002 00000000
WM_SETFOCUS          00BA0316 00000000 00000000
WM_NCACTIVATE        00BA0316 00000000 00000000
WM_ACTIVATE          00BA0316 00000000 00000000
WM_ACTIVATEAPP       00BA0316 00000000 00000560
WM_KILLFOCUS         00BA0316 00000000 00000000
WM_IME_SETCONTEXT    00BA0316 00000000 C000000F
WM_IME_NOTIFY        00BA0316 00000001 00000000
WM_WINDOWPOSCHANGING 00BA0316 00000000 0012FE78
WM_NCPAINT           00BA0316 00000001 00000000
WM_ERASEBKGND        00BA0316 A7010AC4 00000000
WM_WINDOWPOSCHANGED  00BA0316 00000000 0012FE78
WM_ACTIVATEAPP       00BA0316 00000001 00000560
WM_NCACTIVATE        00BA0316 00000001 00000000
WM_ACTIVATE          00BA0316 00000001 00000000
WM_IME_SETCONTEXT    00BA0316 00000001 C000000F
WM_IME_NOTIFY        00BA0316 00000002 00000000
WM_SETFOCUS          00BA0316 00000000 00000000
WM_PAINT             00BA0316 00000000 00000000
WM_CTLCOLOREDIT      00BA0316 DD0122AF 0023050C
WM_CTLCOLOREDIT      00BA0316 DD0122AF 0023050C
WM_CTLCOLORSTATIC    00BA0316 DD0122AF 0023045E
WM_CTLCOLORSTATIC    00BA0316 DD0122AF 002B046E
WM_CTLCOLORSTATIC    00BA0316 DD0122AF 00330514
WM_CTLCOLORSTATIC    00BA0316 DD0122AF 0029049C
WM_CTLCOLORBTN       00BA0316 DD0122AF 003D04CC
WM_NCHITTEST         00BA0316 00000000 02A003E5
WM_SETCURSOR         00BA0316 00BA0316 02000001
WM_MOUSEMOVE         00BA0316 00000000 010C0162
WM_NCHITTEST         00BA0316 00000000 029F03E5
WM_SETCURSOR         00BA0316 00BA0316 02000001
WM_MOUSEMOVE         00BA0316 00000000 010B0162
WM_NCHITTEST         00BA0316 00000000 029D03E2
WM_SETCURSOR         00BA0316 00BA0316 02000001
WM_MOUSEMOVE         00BA0316 00000000 0109015F
WM_NCHITTEST         00BA0316 00000000 029B03E1
WM_SETCURSOR         00BA0316 00BA0316 02000001
WM_MOUSEMOVE         00BA0316 00000000 0107015E
WM_NCHITTEST         00BA0316 00000000 029A03E0
WM_SETCURSOR         00BA0316 00BA0316 02000001
WM_MOUSEMOVE         00BA0316 00000000 0106015D
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_SETCURSOR         00BA0316 003D04CC 02000001
WM_PARENTNOTIFY      00BA0316 00000201 00F80157
WM_MOUSEACTIVATE     00BA0316 00BA0316 02010001
WM_SETCURSOR         00BA0316 003D04CC 02010001
WM_KILLFOCUS         00BA0316 003D04CC 00000000
WM_IME_SETCONTEXT    00BA0316 00000000 C000000F
WM_CTLCOLORBTN       00BA0316 0C0128D3 003D04CC
WM_CTLCOLORBTN       00BA0316 0C0128D3 003D04CC
WM_CTLCOLORBTN       00BA0316 6E0128A9 003D04CC
WM_CTLCOLORBTN       00BA0316 6E0128A9 003D04CC
WM_COMMAND           00BA0316 000003ED 003D04CC
WM_DESTROY           00BA0316 00000000 00000000

Jean-François


dimanche 18 mai 2008 à 00:05:19 | Re : mettre une bmp en arrière plan d'une fenetre Windows

delmann31

Merci pour ton aide Jean-François je vais suivre tes directives.... Et voir si ça marche parce que je suis pas sorti, ça a l'air difficile toutes les modifs qu'il faut apporter au winmain() !!!

Bye



Cette discussion est classé dans : plan, windows, fenetre, insérer, bmp


Répondre à ce message

Sujets en rapport avec ce message

Insérer une image Bitmap dans une fenetre windows [ par 3pson ] Bien le bonjour a tous!! ceci est mon 1er post sur ce forum.Alors voila je m'explique, je suis en train de créer une fenêtre windows sur laquelle je v service windows [ par lilington ] salut j'ai fait un prog qui change le papier paint sous XP  malheureusement je dois redemarer ma machine à chaque fois pour que le changement prennes Nettoyer la fenetre windows [ par bordeaux ] Bonjour,je viens de faire ma premiere application grpahique et je remarque que lorsque le call_back WS_PAINT est appele,il ne nettoie pas la fenetre.c fenetre windows (none) [ par bilaloch ] Bonjour tout le monde  ,J'ai un ptit probleme... Je sais creer une fenetre normale avec l'API Windows, mais je voudrais en creer une qui n'a pas de ba comment mettre une bmp dans une fenetre avec dev-c++ [ par makina0711 ] comment mettre une bmp dans une fenetre avec dev-c++ ? vsc++ fenetre dos windows [ par maladedede ] J'utilise vsc++ et j'ai besoin de faire une application ou l'on voit la  fenetre Windows et celle du dos.J'ai donc regardé sur la msdn et j'ai vu qu'i Mouvement d une fenetre sous Windows API [ par nej92 ] Bonjour.J ai une fenetre sous windows API avec une partie qui est transparente et une autre ou je fais un dessin.Je decide ensuite de bouger cette fen plusieurs fenetre windows [ par christdu13 ] bonjour à tous, voila je voudrai savoir comment on fait pour avoir dès la fermeture de la premiere fenetre en avoir une 2eme qui s'ouvre avec elle c'e fenetre windows [ par logant83 ] bonjour , comment je peux faire pour changer le fond de ma fenétre windows ? (fenétre du programme)comment je pourrai faire pôur changer l'intensité d Programme C sous windows en arrière plan [ par Madkiller92 ] Bonjour à tous !Je vais faire simple opur exposer mon problème :j'ai récupéré le code sur ce site pour utiliser le port parallèle comme Entrée/Sortie,


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,343 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.