(DotNet) récupérer handle textbox

récupérer handle textbox (DotNet) - C++ - Programmation

Marsh Posté le 13-04-2006 à 11:38:43    

bonjour,
je voudrai savoir comment je pourrait récupérer le handle de ma textbox
je prog sur visual studio.net 2003 en c++

Reply

Marsh Posté le 13-04-2006 à 11:38:43   

Reply

Marsh Posté le 13-04-2006 à 11:45:55    

tu persistes à faire du .NET malgré ce que je t'ai dit dans l'autre topic... :sarcastic:
pour info, TextBox et tous les controles de Winform héritent de Control, qui possède une propriété Handle
faut lire la MSDN un peu... et tu peux récupérer tous les Hwnd que tu veux, tant que t'auras pas compris que ton problème est un mélange de code managé et non managé, tu n'avanceras pas


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-04-2006 à 11:47:52    

d'autant que le mélange managé / non managé est loin d'etre trivial (par exemple avec le marshaling...)

Reply

Marsh Posté le 13-04-2006 à 11:55:57    

c'est exactement ce que je lui dis sur l'autre topic, mais il persiste...
pour info, le plugin de ma signature utilise un tel mélange (API de Winamp en C oblige), il est codé en C#. voici un exemple de code que j'ai du pondre :

Code :
  1. private void GetTitle()
  2.        {
  3.            extendedFileInfoStruct efi;
  4.            int pos = SendMessage(pluginWindow, WM_WA_IPC, 0, IPC_GETLISTPOS);
  5.            unsafe
  6.            {
  7.                sbyte* fileName = (sbyte*)SendMessage(pluginWindow, WM_WA_IPC, pos, IPC_GETPLAYLISTFILE);
  8.                if (fileName == null)
  9.                    return;
  10.                string theTitre = new string(fileName);
  11.                if ((!(theTitre.Equals(theOldTitre))) || (thePrefs.SigChanged == true) || (winampStopped == true))
  12.                {
  13.                    theOldTitre = theTitre;
  14.                    efi.filename = fileName;
  15.                    efi.retlen = 255;
  16.                    atts = getID3Attributes(&efi);
  17.                    SongChangedEventArgs e = new SongChangedEventArgs(atts);
  18.                    if (SongChanged != null)
  19.                        SongChanged(this, e);
  20.                }
  21.                theTitre = null;
  22.            }
  23.        }
  24.  
  25.        private unsafe NameValueCollection getID3Attributes(extendedFileInfoStruct* efi)
  26.        {
  27.            NameValueCollection coll = new NameValueCollection();
  28.            StringEnumerator attrsEnumerator = attributes.GetEnumerator();
  29.            sbyte* retBuffer = (sbyte*)Marshal.AllocHGlobal(256).ToPointer();
  30.  
  31.            while (attrsEnumerator.MoveNext())
  32.            {
  33.                byte[] tmpMeta = Encoding.ASCII.GetBytes(attrsEnumerator.Current.ToCharArray());
  34.                efi->ret = retBuffer;
  35.                fixed (byte* metadata = &tmpMeta[0])
  36.                    efi->metadata = metadata;
  37.                SendMessage(pluginWindow, WM_WA_IPC, new IntPtr(efi).ToInt32(), IPC_GET_EXTENDED_FILE_INFO);
  38.                string strAttr = new String(retBuffer);
  39.                coll.Add(attrsEnumerator.Current, strAttr);
  40.            }
  41.  
  42.            Marshal.FreeHGlobal((IntPtr)retBuffer);
  43.            return coll;
  44.        }


 
merveilleux non ?


Message édité par Harkonnen le 13-04-2006 à 11:56:25

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-04-2006 à 12:06:01    

salut, au faite je suis débutant pour tout vous dire je suis en stage mais c'est de l' informatique alors que moi je suis en graduat électronique donc je suis débutant dans l'info et je ne comprends pas tjs tout, ménager ou non ménager moi??? mais c'est pas grave
 
je vous explique mon projet :
je dois réaliser un genre d'hyper terminal , pour écrire et recevoir ça fonctionne mais je voudrais récuperer les données reçues pour les envoyer dans ma textbox1.
j' ai un fichier form1.h ou je vais effectuer textBox1->Text = buf ;
 
dans le fichier serial1.cpp
c'est ici que j'effectue la fonction :
BYTE buf [4096];
ReadFile(hComm,&buf , dwtoRead ,&dwRead , &ov); cette fonction fonctionne j'en suis sûr
 
mais je ne vois pas comment je peux passer buf dans le fichier.h pour l'affecté dans la texbox , si j'arrive alors ça sera facile.  
 
j'espère que je me suis bien fais comprendre  
merci bcp de m'aider

Reply

Marsh Posté le 13-04-2006 à 12:08:40    

c'est bien ce que je dis, il a rien compris [:el g]
 
edit: http://forum.hardware.fr/hardwaref [...] m#t1345860


Message édité par Harkonnen le 13-04-2006 à 12:10:26

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 13-04-2006 à 12:10:27    

Le plus *facile*, c'est encore d'écrire ta gestion de port série dans une DLL MFC, et de l'encapsuler dans un objet managé.
 
Mais en fait, c'est loin d'etre facile ... tu es prévenu (comprendre: pas à la portée d'un débutant).

Reply

Marsh Posté le 13-04-2006 à 12:11:08    

En fait, fait tout en mfc ... La au moins t'as une chance de comprendre ce que tu fais
 
(+1 avec harko quoi)


Message édité par _darkalt3_ le 13-04-2006 à 12:11:41
Reply

Marsh Posté le 13-04-2006 à 12:12:15    

En fait, t'es au courant que le port série n'est pas du tout géré par le fw .net ?

Reply

Marsh Posté le 13-04-2006 à 12:15:37    

mon programme fonctionne avant j'arrivais a écrire et à réceptionner dans la console, mais l'étape suivant est de réception dans la textbox

Reply

Marsh Posté le 13-04-2006 à 12:15:37   

Reply

Marsh Posté le 13-04-2006 à 12:18:40    

console == mfc
textbox == .net
 
compatibilité entre les 2: hasardeuse pour toi
 
Laisse tomber, lis la doc sur les mfc, t'as des genre de textbox aussi.

Reply

Marsh Posté le 13-04-2006 à 12:19:51    

mais sacré nom d'un chien, tu as lu ce que je t'ai marqué dans mes précédentes réponses ???  
tu as fait ton IHM en Winform .NET, qui est à base de code managé, alors que ton code est non managé !!! TextBox.Text attend un type String, alors que tu essaies de lui refourguer un char[] "C-Style".  
donc, et je répete pour la derniere fois, il faut que tu utilises les fonctions de Marshalling pour convertir ton buffer, et ensuite tu pourras le passer à TextBox.Text !


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed