Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2748 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  (DotNet c++) SendMessage et WindowProc

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

(DotNet c++) SendMessage et WindowProc

n°1344415
stgi02
Posté le 11-04-2006 à 19:43:36  profilanswer
 

salut,  
 
je voudrais avoir de l'aide car je suis vraiment perdu, j'ai essayé pleins de choses mais rien ne va!!!
j'ai pensé à une solution mais il me manque des données(?): dans le fichier.h
 
[LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
  {
//je voudrais récuperer les données du buf pour les placer dans la textbox    
   switch ( lParam )
   {
   case (?) :
     
    textBox1->Text = (?);
     break;
     
   }
   ;
  return DefWindowProc(hf,uMsg,wParam,lParam);
  }  
}
]
dans le .cpp:
 
[SendMessage(hf,NULL, NULL ,LPARAM(buf));
 
// hf est obtenue avec HWND hf = GetForegroundWindow();cette fonction est placée dans le fichier.h mais peut-être que cela ne donne pas le handle de mon formulaire
 
]
je prog sur visual studio .net 2003 c++
si vous pouvez me conseiller, merci!

mood
Publicité
Posté le 11-04-2006 à 19:43:36  profilanswer
 

n°1344435
stgi02
Posté le 11-04-2006 à 20:08:13  profilanswer
 

Posté le: Mar Avr 11, 2006 20:04    Sujet du message:      
 
--------------------------------------------------------------------------------
 
salut,  
 
je voudrais avoir de l'aide car je suis vraiment perdu, j'ai essayé pleins de choses mais rien ne va!!!  
j'ai pensé à une solution mais il me manque des données(?): dans le fichier.h  
 
public: System::Void WndProc(LP)  
{  
//je voudrais récuperer les données du buf pour les placer dans la textbox  
         switch ( lParam )  
         {  
           case (?) :  
 
           textBox1->Text = (?);  
           break;  
 
           }  
 
         Form::WndProc(m);  
}  
 
dans le fichier .cpp:  
 
SendMessage(hf,NULL, NULL ,LPARAM(buf));  
 
// hf est obtenue avec HWND hf = GetForegroundWindow();cette fonction est placée dans le fichier.h mais peut-être que cela ne donne pas le handle de mon formulaire  
 

n°1344675
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 07:34:21  profilanswer
 

1/ Merci de ne pas paster le message pour upper, il suffit juste de poster un "up"
2/ upper un topic 20 mn après l'avoir créé, c'est limite... surtout pour de la prog Win32 pour laquelle les compétences sur ce forum sont peu nombreuses (on doit être à peine une dizaine en tout à maitriser le sujet)
3/ pour ton problème, je vois pas ce que le GetForegroundWindow() vient faire ici. il n'y en a absolument pas besoin. la fonction callback rattachée à une fenêtre se transmet au membre lpfnWndProc de la structure WNDCLASS rattachée à la fenêtre (que tu enregistres avec RegisterClass()).
4/ formidable le SendMessage() sans identifiant de message. vachement pratique pour que ta callback puisse identifier le message et le traiter en conséquence...


---------------
J'ai un string dans l'array (Paris Hilton)
n°1344700
slash33
Posté le 12-04-2006 à 09:00:32  profilanswer
 

Code :
  1. LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam )
  2. {
  3.   LRESULT result = 0; // code de retour
  4.   // en fonction du message...
  5.   switch ( uMsg)
  6.   {
  7.     case WM_MESSAGE_Y_WANT_TO_INTERCEPT:
  8.       // note: pas de parenthèses
  9.    
  10.       // en supposant que Text soit déclaré en char[aSize]
  11.       strcpy(textBox1->Text, (const char*)lParam);
  12.       break;
  13.    
  14.     // d'autres messages, case ...
  15.     default: // traitement par défaut
  16.         result = DefWindowProc(hwnd, uMsg, wParam, lParam);
  17.   }
  18.   return result;
  19. }
  20. // utilisation
  21. SendMessage(hWnd, WM_MESSAGE_Y_WANT_TO_INTERCEPT, WPARAM(0), LPARAM(buf));


 
 
Par contre en quoi SetWindowText() ne fonctionne pas pour toi ?

Message cité 1 fois
Message édité par slash33 le 12-04-2006 à 09:11:41
n°1344702
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 09:06:45  profilanswer
 

slash33 a écrit :

Code :
  1. // utilisation
  2. SendMessage(hf,NULL, NULL ,LPARAM(buf));



t'as pas l'impression d'avoir oublié un truc là ? [:petrus dei]
 
edit: le fourbe a édité

Message cité 1 fois
Message édité par Harkonnen le 12-04-2006 à 09:07:10

---------------
J'ai un string dans l'array (Paris Hilton)
n°1344705
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 09:12:29  profilanswer
 

de toute façon, c'est bancal son truc : il mélange du C/Win32 non managé avec du C++/.NET managé, ça va finir par lui péter au nez si ça ne l'a pas déja fait. parce que le mélange managé et non managé, si on ne sait pas utiliser les fonctions de marshalling qui vont bien, c'est une bombe à retardement


---------------
J'ai un string dans l'array (Paris Hilton)
n°1344706
slash33
Posté le 12-04-2006 à 09:13:15  profilanswer
 

Harkonnen a écrit :

t'as pas l'impression d'avoir oublié un truc là ? [:petrus dei]
 
edit: le fourbe a édité


Je précise : édité avant d'avoir lu ton message.  :o  
 
Mais je ne comprends pas en quoi les fonctions standard de manipulation de champ texte ne lui suffisent pas.
En plus avec google, les exemples de WindowProc ne manquent pas.

n°1344710
slash33
Posté le 12-04-2006 à 09:15:08  profilanswer
 

Harkonnen a écrit :

de toute façon, c'est bancal son truc : il mélange du C/Win32 non managé avec du C++/.NET managé, ça va finir par lui péter au nez si ça ne l'a pas déja fait. parce que le mélange managé et non managé, si on ne sait pas utiliser les fonctions de marshalling qui vont bien, c'est une bombe à retardement


Tu veux dire que c'est spécifique à .NET cette façon d'initialiser le texte d'un champ ? :sweat:

n°1344714
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 09:18:09  profilanswer
 

slash33 a écrit :


Mais je ne comprends pas en quoi les fonctions standard de manipulation de champ texte ne lui suffisent pas.
En plus avec google, les exemples de WindowProc ne manquent pas.


il n'a meme pas besoin de WindowProc, strcpy, et de tout son bousin C/Win32. il utilise .NET et ça prend une ligne :

Code :
  1. textBox1->Text = S"kikoo lol asv ?"


voila ! 1 ligne, pas de win32 et de C troué de partout, du code managé propre et net


---------------
J'ai un string dans l'array (Paris Hilton)
n°1344716
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 09:18:36  profilanswer
 

slash33 a écrit :

Tu veux dire que c'est spécifique à .NET cette façon d'initialiser le texte d'un champ ? :sweat:


non, c'est lui qui se chie dessus : cf mon précédent message


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le 12-04-2006 à 09:18:36  profilanswer
 

n°1344718
FlorentG
Unité de Masse
Posté le 12-04-2006 à 09:19:15  profilanswer
 

slash33 a écrit :

Tu veux dire que c'est spécifique à .NET cette façon d'initialiser le texte d'un champ ? :sweat:


En l'occurence, oui...

n°1344719
slash33
Posté le 12-04-2006 à 09:19:22  profilanswer
 

Ah je crois que j'ai compris : le deuxième message de stgi02 montre une WindowProc de type WinForms, c'est ça ?

n°1344727
slash33
Posté le 12-04-2006 à 09:22:02  profilanswer
 

Harkonnen a écrit :

voila ! 1 ligne, pas de win32 et de C troué de partout, du code managé propre et net


Ah oui effectivement, ça à l'air sympa à l'usage!
 
Le S"some text" c'est pour forcer le type String ? (désolé je débute en .NET)

n°1344743
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 09:41:40  profilanswer
 

FlorentG a écrit :

En l'occurence, oui...


plait il ? [:heink]
 

slash33 a écrit :


Le S"some text" c'est pour forcer le type String ? (désolé je débute en .NET)


oui voila. la chaine précédée d'un S indique que la chaine sera de type System::String*. en C++ managé, ce type de chaine est bien plus performant que les chaines littérales du C++ normal


---------------
J'ai un string dans l'array (Paris Hilton)
n°1344744
FlorentG
Unité de Masse
Posté le 12-04-2006 à 09:42:00  profilanswer
 
n°1344745
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 12-04-2006 à 09:43:14  profilanswer
 


[:indiana jones]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1345834
stgi02
Posté le 13-04-2006 à 11:16:42  profilanswer
 

bonjour, pouvez vous m'aider  
au faite j' ai un fichier Form1.h [design] ou j' ai placer mon formulaire , ma textbox,..
un fichier Form1.h  
j' ai aussi un fichier serial.cpp
ou j'effectue la réception et l'émission sur le port série
pour récupérer les données ,j'utlise :
ReadFile(hComm,&buf,..,..,..) ça fonctionne j' en suis sûr
mais mon problème est que je voudrai envoyer les données contenues dans buf dans la textbox, mais je suis bloqué  
je ne peux pas faire Texbox1->text = "" dans ce fichier..
 
merci de bien vouloir m'aider car je suis bloqué depuis une semaine..

n°1345860
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-04-2006 à 11:32:20  profilanswer
 

c'est normal que tu sois bloqué ! tu as lu ce que j'ai écrit ? tu mélanges du code managé avec du code non managé, et ça je peux te dire pour l'avoir testé et pour m'en être dépatouillé, que c'est une galère absolue !
ce qu'il faut que tu fasses, c'est du marshalling entre tes données managées et non managées.
en l'occurence, ici, il te faut convertir ton buffer (qui est un char[] je suppose) en type String de .NET. tu crois que ça se fait par l'opération du St Esprit ?
prends la MSDN, et regarde voir du coté de MarshalAs et UnmanagedType. utilise les pour faire ta conversion.
sinon, bien plus simple : n'utilise pas .NET, c'est de trop haut niveau pour ton application. étant donné que tu sembles coder bas niveau, le mieux dans ton cas, si tu ne veux pas te faire chier avec le Win32, est d'utiliser les MFC

Message cité 1 fois
Message édité par Harkonnen le 13-04-2006 à 11:33:42

---------------
J'ai un string dans l'array (Paris Hilton)
n°1345916
slash33
Posté le 13-04-2006 à 12:08:07  profilanswer
 

Harkonnen a écrit :

étant donné que tu sembles coder bas niveau, le mieux dans ton cas, si tu ne veux pas te faire chier avec le Win32, est d'utiliser les MFC


Heu ça reste à voir  :D

n°1345919
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-04-2006 à 12:09:52  profilanswer
 

ben s'il tient absolument à utiliser VS 2003 pour faire ses fenêtres, il n'a pas le choix : Winforms ou MFC
sinon, c'est à la bite et au couteau, en Win32 [:banzai]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1345977
slash33
Posté le 13-04-2006 à 13:18:56  profilanswer
 

Au fait, tu étais sérieux quand tu disais dans une autre file qu'il n'y avait qu'une dizaine de dévelo windows (WIN32/MFC) sur le forum ?


Message édité par slash33 le 13-04-2006 à 13:21:12
n°1345984
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-04-2006 à 13:30:18  profilanswer
 

ben si tu regardes l'historique des topics MFC ou Win32, tu verras que très peu de forumeurs maitrisent le sujet finalement ! y'a chrisbk, moi, et quelques autres. il suffit de voir les intervenants du topic de chrisbk :D
http://forum.hardware.fr/forum2.ph [...] w=0&nojs=0
 
edit: ou alors, y'a plein de gens qui connaissent Win32 mais qui veulent pas répondre :D

Message cité 1 fois
Message édité par Harkonnen le 13-04-2006 à 13:30:51

---------------
J'ai un string dans l'array (Paris Hilton)
n°1345993
slash33
Posté le 13-04-2006 à 13:43:37  profilanswer
 

Harkonnen a écrit :

y'a chrisbk, moi, et quelques autres


Ah. Je vois que je n'y suis pas... [:spamafote]
 

Harkonnen a écrit :

y'a plein de gens qui connaissent Win32 mais qui veulent pas répondre :D


Ben je dois être de ceux là alors...  :D  
 
Mais, pour ma défense, je n'ai vu ce super topic que récemment  :jap:

Message cité 1 fois
Message édité par slash33 le 13-04-2006 à 13:44:07
n°1345994
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-04-2006 à 13:45:08  profilanswer
 

slash33 a écrit :

Ah. Je vois que je n'y suis pas... [:spamafote]

j'ai pas tout le monde en tete non plus :D


---------------
J'ai un string dans l'array (Paris Hilton)
n°1345996
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-04-2006 à 13:46:10  profilanswer
 

y'a HelloWorld aussi qui maitrise pas mal


---------------
J'ai un string dans l'array (Paris Hilton)
n°1345998
slash33
Posté le 13-04-2006 à 13:47:18  profilanswer
 

Oui effectivement ce pseudo me dit quelque chose

n°1346023
stgi02
Posté le 13-04-2006 à 14:05:31  profilanswer
 

est ce que quelqu'un peut m'aider à mon problème

n°1346026
_darkalt3_
Proctopathe
Posté le 13-04-2006 à 14:07:59  profilanswer
 

on t'as déjà répondu plusieurs fois !
 
lis les réponses rognotudju !

n°1346029
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-04-2006 à 14:12:02  profilanswer
 

stgi02 a écrit :

est ce que quelqu'un peut m'aider à mon problème


euh, tu as lu mes réponses ou tu le fais exprès ???
non parce que si tu continues à faire semblant de ne pas lire, j'ai une meilleure idée hein ! je ferme tes topics, et je t'envoie chez les teletubbies, comme ça tu ne pourras plus poster et tu auras tout le temps de lire les différentes réponses que je t'ai faites


---------------
J'ai un string dans l'array (Paris Hilton)
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  (DotNet c++) SendMessage et WindowProc

 

Sujets relatifs
(DotNet c++) handle d'un formulaire(DotNet) question WndProc
(DontNet c++) SendMessage et WndProc(DotNet c++) envoi vers une textbox
utilisation de WindowProcC'est quoi DOTNET?
PHP grignoté par dotNet ?PBM d'inportation d'un DLL C++ dans Visual DOTNET
[VB]SendMessageEssbase Connexion à partir de dotnet ?
Plus de sujets relatifs à : (DotNet c++) SendMessage et WindowProc


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR