Accueil > Forum > > > > Empécher la modification d'une zone Edit
Empécher la modification d'une zone Edit
mercredi 16 août 2006 à 11:28:51 |
Empécher la modification d'une zone Edit

skirby
|
Bonjour tout le monde, J'aimerais savoir quelle est la méthode la plus simple et la plus propre pour empécher la saisie dans une zone de texte (contrôle Edit) Je sais que l'on peut : - Sous classer l'objet pour contrôler la saisie au clavier - Mettre le contrôle en read only puis changer la couleur de fond (pour restaurer la couleur blanche) Mais n'existe t'il pas une méthode plus simple comme l'interception d'un message Windows genre WM_KEYDOWN ? Merci d'avance pour votre aide.
|
|
mercredi 16 août 2006 à 11:45:59 |
Re : Empécher la modification d'une zone Edit

BruNews
|
L'interception passe par le sous classement et C'EST très simple.
ciao... BruNews, MVP VC++
|
|
mercredi 16 août 2006 à 12:08:41 |
Re : Empécher la modification d'une zone Edit

skirby
|
Salut BruNews,
Donc si je comprend bien, il n'existe pas d'autre méthode ?
N'est t'il pas possible d'annuler l'événement WM_KEYDOWN pour le contrôle en question genre : case WM_COMMAND: case IDC_EDT_MONCONTROLE: switch (HIWORD(wParam)) { case WM_KEYDOWN: // blocage de l'événement pour l'annuler return FALSE; break; }
|
|
mercredi 16 août 2006 à 12:45:47 |
Re : Empécher la modification d'une zone Edit

BruNews
|
Faut bien saisir la diff entre pre-event et notif sur fenetre mère (post-event). Ce que tu reçois sur la fenêtre parent est une notif d'action faite alors qu'aller récupérer le WM_KEYDOWN (ou autre) sur les events system par sous classement est une interception directe qui permet de l'annuler en ne repassant pas l'event au controle.
ciao... BruNews, MVP VC++
|
|
mercredi 16 août 2006 à 14:21:31 |
Re : Empécher la modification d'une zone Edit

skirby
|
Ok, j'ai bien compris la différence.
Pour la version avec le sous classement, comment faire pour n'autoriser que le copier (Ctrl + C) dans la zone Edit ?
Sinon, pour ma culture, j'essaye la version avec le contrôle en Read Only. J'essaye de récupérer la couleur de fond d'une autre zone Edit afin de lui appliquer la même couleur (dans l'hypothèse où l'utilisateur utiliserait une autre couleur que le blanc pour les fenêtres).
Voici un extrait de mon code : // Variables globales HBRUSH g_hbrBkgnd;
case WM_INITDIALOG: ... HDC hdc = GetDC(hEditNom); COLORREF crBkgnd = GetBkColor(hdc); g_hbrBkgnd = CreateSolidBrush(crBkgnd); ReleaseDC(hEditNom, hdc); break;
case WM_CTLCOLORSTATIC: switch (GetDlgCtrlID((HWND)(DWORD)LOWORD(lParam))) { case IDC_EDT_INFO: // Contrôle dont je désire changer la couleur return (LONG)g_hbrBkgnd; break; } break;
Mon problème est que la fonction GetBkColor retourne toujours 0xFFFFFF (code erreur) Est ce que j'utilise correctement la fonction ?
J'ai regardé sur le site de MSDN et il semblerait que oui. Si quelqu'un pouvait faire un test et me dire ce qui ne va pas ce serait sympa.
Merci d'avance.
|
|
mercredi 16 août 2006 à 15:02:51 |
Re : Empécher la modification d'une zone Edit

BruNews
|
Réponse acceptée !
Va voir GetSysColor() pour avoir la couleur, faut aussi respecter le choix utilisateur défini dans le panneau de config, API te le donnera. Dans proc de sous classement, "return 0" sur ce que tu veux interdire et repasse à la oldProc le reste.
ciao... BruNews, MVP VC++
|
|
mercredi 16 août 2006 à 16:38:41 |
Re : Empécher la modification d'une zone Edit

racpp
|
Salut, Pour empêcher la modification d'un Edit , tu peux regarder mon dernier code source: http://www.cppfrance.com/codes/EFFET-TYPEWRITER-WIN32_39064.aspxIl te suffira de modifier la procédure de sous-classement selon ce que tu veux faire GetBkColor() retourne la couleur d'arrière-plan et non la couleur de fond. La couleur d'arrière-plan concerne le texte alors que la couleur de fond concerne toute la zone interne de l'Edit.
|
|
mercredi 16 août 2006 à 19:37:29 |
Re : Empécher la modification d'une zone Edit

adrienva
|
Si tu bosse sous Vstudio, il me semble qu'il y a la propriété Readonly pour empecher la saisie. A moins que je n'aie pas compris le probleme ^^ 
|
|
mercredi 16 août 2006 à 23:13:43 |
Re : Empécher la modification d'une zone Edit

skirby
|
Merci à tous pour vos réponses ! ! !
adrienva : J'avais mentionné cette possibilité au début mais merci quand même.
BruNews : Je ne connaissais pas GetSysColor, c'est parfait pour ce que je veux faire. Merci aussi pour cette petite leçon sur les interceptions ;o)
racpp: Super ta source. C'est original ! Il ne me reste plus qu'a trouver comment autoriser seulement le Ctrl+C mais je trouverais bien.
Merci et A+
|
|
jeudi 17 août 2006 à 00:31:40 |
Re : Empécher la modification d'une zone Edit

racpp
|
Dans la procédure de sous-classement, tu peux ne laisser passer que le message WM_COPY. Mais il faut quand-même laisser passer d'autres messages comme pour le clic gauche, clic droit, etc. Il serait donc préférable de bloquer les messages comme WM_CLEAR, WM_CUT, et WM_PASTE.
|
|
Cette discussion est classée dans : edit, zone, méthode, modification, empécher
Répondre à ce message
Sujets en rapport avec ce message
!!!!!!!!!!!SysKeyUP!!!!!!!!!!!!!! [ par furiouspk ]
bonjour a vous!!!!!!!je cherche le moyen pour recuperer un evenement du style SysKeyUp dans une zone edit d'une boite de dialogcar l evenement generé
ENTER dans une zone de texte [ par anthraxx ]
Comment on fait pour que lorsque l'utilisateur, en train de taper un texte dans un controle "EDIT", tape entrée, une fonction soit appelée?J'ai pas tr
Re:Comment appliquer une police et une couleur à un contrôle ? [ par marcel6566 ]
rebonjour et merci pour l'aide, mais ...Toujours pas de modification de police, fonte, couleur dans le controle Edit.Une partie de mon programme :void
Edit box et couleur de text help [ par Shouwi ]
Alos la question est une des plus con dans le monde : comment je peux faire pour appliquer une couleur à du text selectionner dans une RICH editbox 2
Focus MFC [ par Helau ]
Bonjour,J'ai une appli qui utilise des onglets.Quand j'arrive sur un onglet, j'ai certaines zones de saisie grisées, d'autres active, en fonction de c
binarization image [ par darksoul07 ]
bonjour je dois binarizer une image en C. J'ai essayer en utilisant la méthode de binarization automatique par la valeur moyenne (histogramme) mais j'
Edit box [ par c2millet ]
Je voudrais savoir comment faire pour pouvoir changer la couleur de fond de mon editbox en rouge au lieu du blanc.Voilà c toutMerciCmill
Controls [ par ngatcha ]
comment definir un edit text dans visualc++.Par exemple j'ai pour Radiobutton BS_AUTORADIOBUTTON,j'aimerais la meme chose pour d'autres elements comme
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|