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 :

Mettre un contrôle en surbrillance


Sujet :

MFC

  1. #1
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut Mettre un contrôle en surbrillance
    Bonjour,

    J'ai remarqué que quand je mets le focus sur un contrôle avec SetFocus, il n'apparaît pas toujours en surbrillance, même s'il a bien le focus. Par contre, après chaque frappe sur la touche "Tab", le contrôle qui a le focus est bien en surbrillance.
    Est-ce que quelqu'un a déjà remarqué ce phénomène ? Comment faire pour que le contrôle qui a le focus soit systématiquement en surbrillance ?

  2. #2
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Bon ! Je n'ai toujours pas compris d'où venait mon problème, mais j'ai réussi à le résoudre en m'y prenant autrement.

  3. #3
    Membre très actif
    Profil pro
    Développeur indépendant
    Inscrit en
    Août 2004
    Messages
    374
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur indépendant
    Secteur : Transports

    Informations forums :
    Inscription : Août 2004
    Messages : 374
    Par défaut comment.??
    j'ai eu le meme probleme, je dirais, sauf que là il fallait que le composant ayant le focus devienne d'une autre couleur pour que le pauvre utilisateur n'ait pas à parcourir tous les composants de la fenetre pour savoir ou il se trouve.

    pour traiter les composants CEdit, je l'ai fait dans le OnctlColor ainsi
    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
    26
    27
    28
    29
    HBRUSH CChargeurView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) 
    {
    	HBRUSH hbr = CFormView::OnCtlColor(pDC, pWnd, nCtlColor);
    	CWnd *focused;
    	focused=GetFocus();
     
    	if (nCtlColor==1)  // seulement pour les edit control. reste à traiter les combo box
    	{
    		if (pWnd==focused)
    		{   // traiter le composant ayant le focus.
     
    		pDC->SetTextColor(RGB(255,255,255));
    		pDC->SetBkColor(couleurfocus); 
     
    		hbr=brushfocus;
    		return hbr; 
     
    		}
    		else
    		{
    // pas de focus, traitement par defaut.
    			pDC->SetTextColor(RGB(0,0,0));
    			pDC->SetBkColor(RGB(255,255,255));
    			return (HBRUSH) GetStockObject(WHITE_BRUSH);
     
    		}
    	}
     return hbr;
    }
    comme mis dans le code, pour les combo box, ca a été plus difficile, il a fallu dériver la combo box pour traiter en interne le changement de la partie Cedit de la combobox.
    mais ca se fait..
    comment tu as fait toi.?

  4. #4
    Membre chevronné
    Avatar de PetitPapaNoël
    Développeur informatique
    Inscrit en
    Septembre 2006
    Messages
    559
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 559
    Par défaut
    Je comprends ce que tu as fait. Effectivement, je trouve moi aussi que la surbrillance des contrôles quand ils ont le focus n'est pas très visible. Surtout lorsque ça ne marche pas, comme c'était mon cas. Mais je m'en contente quand même.

    En ce qui me concerne, le contexte est un peu différent. J'ai des boîtes de dialogues incluses dans d'autres boîtes de dialogues ou dans des vues. Le but est de les gérer comme des contrôles, sauf que je n'utilise pas la propriété Control, car son fonctionnement ne m'a pas satisfait.
    Ma diffciculté, partant de là, était de passer le focus au bon contôle dans les boîtes de dialogues imbriquées lorsque l'utilisateur tappe sur la touche Tab (ou Ctrl + Tab). Par exemple, si deux boîtes de dialogues sont incluses dans une vue, la frappe sur Tab quand le focus est sur le dernier contrôle de la première boîte de dialogue, doit donner le focus au premier contrôle de la deuxième boîte de dialogue. Et la frappe sur Ctr + Tab quand le focus est sur le premier contrôle de la deuxième boîte de dialogue doit donner le focus au dernier de la première...
    Dans ce contexte, j'ai remarqué que la méthode SetFocus ne mettait pas systématiquement le contrôle qui avait effectivement le focus en surbrillance. Il était donc impossible de localiser le focus visuellement...

    J'ai résolu ce problème, dans mon contexte particulier, en utilisant les méthodes NextDlgCtrl et PrevDlgCtrl plutôt que SetFocus. Je ne sais pas pourquoi, mais ça marche mieux...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Mettre les ImageButton en surbrillance
    Par Dorube dans le forum Android
    Réponses: 1
    Dernier message: 20/10/2014, 23h32
  2. [WD14] mettre un tuple en surbrillance après une recherche
    Par farabi dans le forum WinDev
    Réponses: 3
    Dernier message: 13/09/2013, 22h21
  3. Mettre des mots en surbrillance dans un texte
    Par Moloc'h dans le forum Contribuez / Téléchargez Sources et Outils
    Réponses: 0
    Dernier message: 14/02/2011, 19h03
  4. Mettre un <LI> en surbrillance
    Par Jolt0x dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 08/02/2010, 19h13
  5. Mettre un texte en surbrillance
    Par Loceka dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 30/05/2008, 16h40

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