IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

Intervertir image


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut Intervertir image
    Bonjour,

    Je me demandais comment on pouvait intervertir deux images sur un objet.
    J'ai une boite de dialogue definit comme cela:

    IDD_TTT_DIALOG DIALOGEX 0, 0, 118, 130
    STYLE DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION
    EXSTYLE WS_EX_APPWINDOW
    CAPTION "Gestion du service"
    FONT 8, "MS Sans Serif"
    BEGIN
    LTEXT "Etat du service:",IDC_STATIC,51,117,50,8
    PUSHBUTTON "Démarrer le service",IDC_BUTTON1,6,7,104,29
    PUSHBUTTON "Arrêter le service",IDC_BUTTON2,6,40,104,29
    PUSHBUTTON "Quitter le service",IDC_BUTTON3,6,74,104,29
    CONTROL 130,IDC_IMAGE,"Static",SS_BITMAP | SS_CENTERIMAGE,103,
    119,7,6,WS_EX_ACCEPTFILES
    END

    j'ai deux images definie comme cela
    IDB_BITMAP1 BITMAP DISCARDABLE "res\\bitmap1.bmp"
    IDB_BITMAP2 BITMAP DISCARDABLE "res\\bitmap2.bmp"

    #define IDB_BITMAP1 130
    #define IDB_BITMAP2 131
    #define IDC_BUTTON1 1000
    #define IDC_BUTTON2 1001
    #define IDC_BUTTON3 1002
    #define IDC_IMAGE 1004

    Et je veux pouvoir dans mon code passer de l'image 1 à 2 et vice versa quand je clique sur un bouton.

    donc je dois récupere le handle du IDC_IMAGE via
    ptr=getdlgitem(dlg,IDC_IMAGE);
    puis sur ptr je ne sais pas ce qu'il faut appliquer.
    Si vous avez une idée?

    merci

  2. #2
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 39
    Par défaut
    Je crois que ca résoud ton probleme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    static int id = IDB_BITMAP1;
    if(id == IDB_BITMAP1)
        id = IDB_BITMAP2;
    else
        id = IDB_BITMAP1;
    HBITMAP hBmp = LoadBitmap(AfxGetInstanceHandle(), MAKEINTRESOURCE(id));
    if(hBmp == NULL)
    {
         AfxMessageBox("Cannot load bmp");
         return FALSE;
    }
    ptr=getdlgitem(dlg,IDC_IMAGE); 
    if(ptr == NULL)
    {
         AfxMessageBox("Cannot get static item");
         DeleteObject(hBmp);
         return FALSE;
    }
    hBmp = ptr->SetBitmap(hBmp);
    if(hBmp != NULL)
    {
        DeleteObject(hBmp);
    }
    return TRUE;

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut
    Merci,

    Mais je ne peux pas utiliser ptr->SetBitmap(hBmp);

    car c'est du C++, il faudrait la même fonction mais en C

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 39
    Par défaut
    J'ai pa compris tu utilises MFC non???

  5. #5
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut
    en partie,
    j'utilise les MFC, mais mon code est en C. en MFC j'appelle ma fenetre de dialogne et je gère les évenements.
    C'est vrai que c'est un peu bizarre

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 39
    Par défaut
    bizarre comme tu dis mais reste que le code ke jt'ai donne devrait marcher puisque comme tu dis ca se passe ds la classe de ton dialog y aurait pa de probs

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut
    En fait j'ai trouvé une fonction qui devrait résoundre mes problèmes en 1 ligne.

    C'est la fnc SendDlgItemMessage(Dlg, IDC_IMAGE,STM_SETIMAGE,IMAGE_BITMAP, (LPARAM)hBitmap);
    Mais bon les 3 derniers paramètres ne sont pas évidents.

  8. #8
    Futur Membre du Club
    Inscrit en
    Mai 2005
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 5
    Par défaut
    En fait il faut faire:

    img= LoadBitmap(HInstance, MAKEINTRESOURCE(IDB_BITMAP1));
    if(img!=null)
    SendDlgItemMessage(Dlg, IDC_IMAGE, STM_SETIMAGE,IMAGE_BITMAP, (LPARAM)img);


    En tout cas j'ai eu du mal a trouvé des documentations sur ça.

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2002
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 39
    Par défaut
    oui c'est l'equilvalent de SetBitmap()

Discussions similaires

  1. Intervertir la position de 2 images
    Par karibou_47 dans le forum WinDev
    Réponses: 3
    Dernier message: 27/05/2014, 21h23
  2. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  3. recherche des algorythmes pour images 2d
    Par exxos dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 24/05/2002, 13h46
  4. lire une image au format RAW
    Par Anonymous dans le forum OpenGL
    Réponses: 5
    Dernier message: 20/05/2002, 00h11
  5. Création image BMP
    Par Anonymous dans le forum C
    Réponses: 2
    Dernier message: 25/04/2002, 16h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo