begin process at 2012 05 30 09:00:13
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

API

 > 

SendMessage a deux editbox


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

SendMessage a deux editbox

mardi 12 octobre 2004 à 23:26:08 | SendMessage a deux editbox

leprov

salut a tous.
j'essaie d'nevoyer a l'affilée de message WM_SETTEXT a deux EditBox distincts, et apparement le premier EditBox recoit bien son message mais pas le second.....au depart il recevait ce message, et apres avoir effectué une modification qui n'a, a priori, aucune influence la dessus, ce second message n'est plus recu.....je pense que c'est pas assez précis et qu'il faudrait le code, mais y'en a tellement pr que ca puisse etre un minimum clair que je post pas pr l'instant, et si qqun a une idée, et qu'en fait c'est juste un fonctionnement du SendMessage que j'ai pas capté, ca m'evitera de poster tt ca. si vraiment c'est necessaire et que c'est pas un bug du au SendMessage parce que qqch ma echappé, dites le jessaierais de poster le plus concis et malgré tt complet possible. merci d'avance
mardi 12 octobre 2004 à 23:49:33 | Re : SendMessage a deux editbox

BruNews

Administrateur CodeS-SourceS
Aucun bug sur SendMessage, tu as surement un prob de handle.

ciao...
BruNews, MVP VC++
mercredi 13 octobre 2004 à 08:51:48 | Re : SendMessage a deux editbox

leprov

je parlais pas d'un bug sur sendmessage, mais de dire que mon sendmessage provoque un bug parce qu'il a un comportement que je n'avais pas controlé. qu'est ce que tu entend par pb de handle? au pire je post mon code. le plus bizarre est que quand je regarde les données que je dois envoyer a ma seconde edtibox, le message est correct, mais ma editbox la recoit pas. j'ai testé de faire une messagebox qui me fait afficher le message a envoyer, ce message est correct. d'ailleurs quand je fais cette messagebox de test, aucuns de mes 2 messages n'est envoyé....j'avoue que j'y perd mon c++
mercredi 13 octobre 2004 à 10:05:17 | Re : SendMessage a deux editbox

DeAtHCrAsH

Au lieu de perdre ton temps avec des SendMessage() pour afficher du texte, utilises l'API SetWindowText() ou SetDlgItemText(), ca sera plus rapide et ca rendra ton code plus lisible.

ex :

SetDlgItemText(hWnd, IDC_EDIT1, "Bonjour");
ou
SetWindowText(hEdit1,"Bonjour");

hEdit1 correspond au handle de ton EditBox. C'est ce dont BruNews te parle plus haut.
Pour la récupérer, utilises l'API GetDlgItem.
Exemple:

/*Déclaration du handle de l'EditBox*/
HWND hEdit1;

/*On affiche le texte dans l'EditBox*/
SetWindowText(hEdit1, "Bonjour");


Voila, rien de très compliqué.

Shell
mercredi 13 octobre 2004 à 10:11:16 | Re : SendMessage a deux editbox

leprov

bah mes handles sont en globaux....donc je connais mes handles, ya pas de pb de ce coté. la jai pas VC sous la main, mais des que j'ai ce qu'il faut, je teste ca, je reposterais pr dire si ca marche. merci pour le setwindowtexte et setdlgitem, chui pas en api depuis tres longtps, jai pas encore bcp de fonctions en tete, je fais avec ce que je connais, dc ca me fait ca en plus, merci.
il n'empeche que j'aimerais comprendre pk ca marche pas, et pk comme j'ai fait on dirais que mon deuxieme message n'est pas recu....bon pas grave pr linstant, mais si je pouvais avoir une explication, ca maiderais, jaime bien capter comment fonctionnent les choses en profondeur....
mercredi 13 octobre 2004 à 10:56:23 | Re : SendMessage a deux editbox

ymca2003

SetWindowText, SetDlgItemText, SendMessage(WM_SETTEXT), c'est pareil :

"The SetWindowText function causes a WM_SETTEXT message to be sent to the specified window or control."

"The SetDlgItemText function sends a WM_SETTEXT message to the specified control."

Donc c'est pas plus rapide, mais plus lisible oui.
mercredi 13 octobre 2004 à 11:23:01 | Re : SendMessage a deux editbox

leprov

et a part ca, qqun a une explication a mon pb?
mercredi 13 octobre 2004 à 13:55:53 | Re : SendMessage a deux editbox

ymca2003

si tu es sous visual C++, il y a un outils appelé Spy++ qui permet de connaître le handle des contrôles (et ainsi vérifier que tu as le bon) et de voir les messages qu'il traite.

Sinon tu parle d'une modification apportée qui fait que ça ne marche plus, qu'elle est elle ? elle a peut être un effet caché.
mercredi 13 octobre 2004 à 18:58:12 | Re : SendMessage a deux editbox

leprov

bon je vais essayer de mettre un code relativement explicite avec explications.
j'ai une fenetre avec 12 boutons (pour l'instant), et deux editbox. (juste pour la partie qui pose probleme). lorsque je click sur un bouton, je veux sauvegarder les parametres entrées dans les editbox dans un objet contenant toutes les données relatives a ce bouton, puis afficher les données concernant le bouton sur lequel j'ai clické(en gros...) j'ai donc codé ca:


case WM_COMMAND:
if (IndCurrentNode != 999 && IndCurrentButton != 999)
{
char Buf [64];
char Buf2 [2];
GetWindowText (Zone_Texte, Buf, 64);
GetWindowText (Zone_Racc, Buf2, 2);
VNodes[IndCurrentNode].ModifButton (IndCurrentButton,string (Buf),Buf2[0]);
break;

}

if (HIWORD(wParam) == BN_CLICKED) switch (wParam)
{
case ID_BUTTON_1:
FindButton (0,0);
goto Lbl;
case ID_BUTTON_2:
FindButton (1,0);
goto Lbl;
case ID_BUTTON_3:
FindButton (2,0);
goto Lbl;
case ID_BUTTON_4:
FindButton (3,0);
goto Lbl;
case ID_BUTTON_5:
FindButton (0,1);
goto Lbl;
case ID_BUTTON_6:
FindButton (1,1);
goto Lbl;
case ID_BUTTON_7:
FindButton (2,1);
goto Lbl;
case ID_BUTTON_8:
FindButton (3,1);
goto Lbl;
case ID_BUTTON_9:
FindButton (0,2);
goto Lbl;
case ID_BUTTON_10:
FindButton (1,2);
goto Lbl;
case ID_BUTTON_11:
FindButton (2,2);
goto Lbl;
case ID_BUTTON_12:
FindButton (3,2);
Lbl:
SendMessage (Zone_Texte, WM_SETTEXT, 0,(LPARAM) string (VNodes[IndCurrentNode].GetButtons()[IndCurrentButton].GetTexte()).c_str());

SendMessage (Zone_Racc, WM_SETTEXT, 0,(LPARAM) string (1, VNodes[IndCurrentNode].GetButtons()[IndCurrentButton] .GetRaccourci()).c_str());


pour essayer d'eclaircir tout ca, j'ai un vecteur qui contient les différents boutons a afficher dans tel ou tel cas, et chaque element de ce vector contient un vector avec les informations relatives a chaque bouton. les valeurs 999 sont pour au vas ou on aurait eut une selection invalide du noeud pour ne pas fausser les informations, puisque dans aucun cas on n'aura 999 valeurs dans un des 2 vecteurs.

les variables IndCurrentXX sont declarées en globales de meme que mes handles. FindButton permet de trouver a quel bouton du vecteur correspond le bouton sur lequel on a cliqué.
voila pour le résumé.
le probleme ne se pose pas si j'enleve



if (IndCurrentNode != 999 && IndCurrentButton != 999)
{
char Buf [64];
char Buf2 [2];
GetWindowText (Zone_Texte, Buf, 64);
GetWindowText (Zone_Racc, Buf2, 2);
VNodes[IndCurrentNode].ModifButton (IndCurrentButton,string (Buf),Buf2[0]);
break;
}

et ne se pose plus si je sort les declarations de mes buffers du bloc "if" et que j'appelle modifbutton apres avoir fait mes deux sendmessage (..., WM_SETTEXT, ...);

en bref mon pb est résolu, mais je n'ai pas la moidre idée de ce qui se passe et j'aimerais sincerement comprendre......
merci d'avance a ceux qui passeront du tps sur ce code pour essayer de m'expliquer
mercredi 13 octobre 2004 à 23:13:25 | Re : SendMessage a deux editbox

DeAtHCrAsH

Bababababa, c'est quoi ce truc dégeulasse!!!!
Pour commencer tu peux virer tout ces goto et mettre en mettant a la suite tout les ID de controles qui appellent le meme bloc d'instruction, et tu ne mets pas de break entre.
Comme ce des que tu as un événements qui est généré, ca ira directement au bloc d'instruction sans appeller de goto.

Sinon je vois pas dans ton code ou tu récupère le handle de tes editbox.

ymca2003> j'entendais par plus rapide, non pas le temps d'execution, mais la taille de la ligne a écrire entre un SendMessage et SetDlgItemText ou SetWindowText.
Autant pour moi.

Shell


Cette discussion est classée dans : message, sendmessage, pr, editbox, second


Répondre à ce message

Sujets en rapport avec ce message

librairie en vis c++ pr message box [ par pipic ] slt todo el mundoquelle est la librairie a utiliser pour faire afficher les messages box sous visual c++ ?????G des classes externes avec lesquelles SendMessage vers une fenêtre minimisée [ par Keenes ] Bonjour,Le sujet du message n'étant pas très explicite, voici de quoi il s'agit :Je cherche à réaliser une logiciel de capture d'écran, comme il en ex Envoyer un message à un bouton ??? [ par RV2931 ] Bonjour,J'ai fait un programme qui contient un EditBox et un bouton qui est censé envoyer le contenu de l'EditBox.Le truc c que je souhaite intercepte Sous classement editbox [ par julienbj ] Je cherche à sous classer une editbox pour modifier son affichage. Je sous classe donc le message WM_PAINT pour pouvoir modifier l'apparence de l'edit SendMessage à Dialog [ par vecchio56 ] Salut J'ai un question pour la valeur retournée pas SendMessage quand on l'utilise pour envoyer un message à un Dialog. Voici un exemple: INT_PTR CAL pb avec SendMessage() [ par minet03 ] Hello, voilà mon problème... depuis ma DlgProc() j'envoi un message avec la fonction SendMessage() comme ci : SendMessage(hWindow,IDC_MESSAGE,(WPARAM) probleme de SendMessage [ par kor6k ] Bonjour,J'ai créé une classe dérivant d'un CButton et dans ma fenêtre principale, je crée une instance de cette nouvelle classe.Je veux pouvoir gérer edit et autre [ par deck_bsd ] Bonsoir a tous :D Voila c'est une bête question mais dans les propriétés d'une editbox,... je n'ai pas trouvé comment faire en sorte que l'affichage transparence + focus + message entre apps [ par alphaone ] Bonours, 1)Voila je faire un exe qui rend les autre féntre plus ou moin transparente si elle sont selectionner ou non. 2)Et je veux aussi que si on l EditBox et Unicode avec Visual studio 6 [ par hibou ] Je cherche comment créé une EditBox pouvant accpeter les caratères UNICODE et sans utiliser MFC. Quelqu'un pourrait-il m'aider ? Je ne sais pas commen


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,936 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales