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

Windows Discussion :

Contrôle EDIT en mode remplacement


Sujet :

Windows

  1. #1
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 124
    Points
    124
    Par défaut Contrôle EDIT en mode remplacement
    Salut tout le monde,

    Après bien des recherches, je ne trouve pas de solution pour que quand mon contrôle EDIT reçois le focus, il se trouve en mode remplacement et non en mode insertion.
    De plus, je ne peux modifier la boucle de translation de message de l'application.

    Merci d'avance.

    CAMIC

  2. #2
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Juin 2006
    Messages
    154
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2006
    Messages : 154
    Points : 124
    Points
    124
    Par défaut
    Voici une solution simple que j'ai trouvé.

    Chaque fois que le contrôle reçois un char, je test si je suis en mode insertion ou remplacement, si je suis en mode remplacement, je test s'il y a déjà une sélection de texte, au cas où il n'y en a pas, je sélectionne le premier caractère qui suit le point d'insertion, ce qui fait qu'après Windows remplacera le caractère sélectionné par le caractère tapé.

    Pour mon client, quand le contrôle reçois le focus, il doit être en mode remplacement, si vous voulez l'inverse mettre FALSE dans l'événement WM_SETFOCUS.

    Le code gére aussi la touche Ins pour basculer d'un mode à l'autre.

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    BOOL m_bRemplacer;
    
    LRESULT APIENTRY EditProc(HWND hWnd, UINT uiMsg, WPARAM wParam, LPARAM lParam)
    {
    	switch (uiMsg)
    	{
    		...
    		...
    
    		case WM_CHAR :
    			if (m_bRemplacer)
    			{
    				DWORD dwBegin, dwEnd;
    				SendMessage(hWnd, EM_GETSEL, (WPARAM)&dwBegin, (LPARAM)&dwEnd);
    				if ((dwEnd - dwBegin) == 0)
    				{
    					SendMessage(hWnd, EM_SETSEL, dwBegin, dwBegin + 1);
    				}
    			}
    				
    			break;
    
    		case WM_KEYDOWN :
    			if (wParam == VK_INSERT)
    			{
    				m_bRemplacer = m_bRemplacer ? FALSE : TRUE;
    				break;
    			}
    
    			break;
    
    		case WM_SETFOCUS :	// Edit receive focus
    			m_bRemplacer = TRUE;
    			vSetFocus(hWnd, TRUE);
    			break;	// windows show carret
    	}
    }
    Comme vous pouvez le constater, quelque ligne on suffit.

    CAMIC

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

Discussions similaires

  1. variable contrôle EDIT?
    Par charif591 dans le forum Windows
    Réponses: 13
    Dernier message: 09/03/2010, 18h49
  2. Réponses: 1
    Dernier message: 06/03/2010, 18h07
  3. Réponses: 5
    Dernier message: 29/06/2009, 16h11
  4. [EXO] Equivalence à "Edit navigation mode" dans exo portal 2.X ?
    Par yleny33 dans le forum SpagoBI
    Réponses: 0
    Dernier message: 10/04/2009, 15h34
  5. Réponses: 9
    Dernier message: 13/03/2007, 11h58

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