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 :

[MFC] savoir qd la souri click sur un objet Picture?


Sujet :

MFC

  1. #1
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Points : 52
    Points
    52
    Par défaut [MFC] savoir qd la souri click sur un objet Picture?
    hello
    j'ai une application cree en MFC dont j'ai un objet de type PICTURE declarer :
    et je voudrais savoir qd la souri est en mode click down dessu.

    sachant que j'ai deja essayer ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void CApplDlg::OnLButtonDown(UINT nFlags, CPoint point) 
    {
                    AfxMessageBox("click down sur image");
    	CDialog::OnLButtonDown(nFlags, point);
    }
    mais cela ne marche pas,par contre j'ai fait ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    LRESULT CApplDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) 
    {
    switch (message)
        {
    	case WM_MOUSEACTIVATE :
                    AfxMessageBox("click down sur image");
                    break;
    et dans ce cas ,ca marche,mais le probleme c'est que qd je clcik sur les autres objet, j'ai ce message aussi.de plus je sais pas si la souri et 'Down ou Up'

    Help plz ^^

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    si tu gardes cette solution il faut:
    recuperer la surface du static :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CRect Rect;
    m_Static.GetWindowRect(&Rect);
    ScreenToClient(&Rect); // convertire en coordonnées cliente
    intercepter le message WM_LBUTTONDOWN

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    CPoint pt(LOWORD(lParam),HIWORD(lParam)); // coordonnees du click
    if(Rect.PtInRect(pt))
    {
    // click sur le static
    }
    sinon faire une classe static derivée de CStatic et intercepter le message WM_LBUTTONDOWN

  3. #3
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Points : 52
    Points
    52
    Par défaut ^^
    la solution derivé ,j'ai deja essayer et ca marche pas
    sinon je regardais plustot dans ta 1er solution
    mais le probleme ce pose au niveau de :
    intercepter le message WM_LBUTTONDOWN de mon application
    si seulement ca marchais ca,j'aurai pas eu de probleme.
    comme j'ai di au part avant.
    je intercept que le message : WM_MOUSEACTIVATE
    quand je fais
    je intercept le message que si je click sur la fenetre et no sur les static et ni boutton

    [/code]

  4. #4
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Points : 52
    Points
    52
    Par défaut ^^
    en fait sur ce static(picture) je charge en directx une video
    ca change qlq chose?c'est ca qui lui rend inactive?

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    alors garde le message WM_MOUSEACTIVATE
    et utilise GetCursorPos pour retrouver la position de la souris .
    quelque chose comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CRect Rect;
    m_Static.GetWindowRect(&Rect); 
    POINT pt;
    GetCursorPos(&pt); // position de la souris
    CPoint Point(pt);
    if(Rect.PtInRect(Point))
    {
    // click sur le static
    }

  6. #6
    Membre du Club
    Inscrit en
    Janvier 2004
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 123
    Points : 52
    Points
    52
    Par défaut ^^
    c'est ce que je fait,mais il rest le probleme de l'etat de la souri
    je sais pas si il est down ou up ?
    enfait vu le picture est chargé par une video en mode directx,c'est normal qu'on n'a plus la main dessus ^^, c'est des fois NUL Directx

Discussions similaires

  1. Savoir si la souris est sur un élément.
    Par westernz dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 26/12/2011, 14h56
  2. click sur un objet DataGrid
    Par vince29 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 13/01/2009, 16h08
  3. Réponses: 5
    Dernier message: 01/04/2008, 08h33
  4. [MFC] Detection d'un double click sur un slider
    Par bennnun dans le forum MFC
    Réponses: 4
    Dernier message: 01/03/2006, 08h07
  5. Comment savoir si la souris est sur un TChart ?
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 1
    Dernier message: 30/09/2005, 23h16

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