Zum Inhalt springen

TreeView_GetItem funktionert nicht


paule22

Empfohlene Beiträge

Hallo WinAPIndianer,

warum kann ich mit folgenden code, keine Einträge aus der TreeView lesen (ich will die einträge (Text der einzelnen Items) ....

Der Aufruf von TreeView_GetItem gibt stets und ständig false zurück :(


ic = TreeView_GetCount(user_window); // Das geht


char buf[100];

hitem = TreeView_GetRoot(user_window);
TreeView_SelectItem(user_window,hitem); // Das geht auch !!!

// ab hier wird es interessant ...
pitem.mask = TVIF_TEXT;
pitem.hItem = hitem;
pitem.pszText = buf;
pitem.cchTextMax = sizeof(buf);
if (TreeView_GetItem(user_window, &pitem) == true)
{
AnsiString as;
as = "txt: ";
as += pitem.pszText;
as += " ";
as += (int) hitem;
user_list->Add(as);
}
else {
user_list->Add("null getimtem");
}
[/PHP]

Danke schonmal für hilfe

paule22

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

das Problem ist, das TreeView Control ist in einer Externen Anwendung.

user_window habe ich aber schon heraus frimmeln können.

wie meinst du das mit der Länge ??

ich weis nicht wie lang der Text ist aber dürfte 100 zeichen nicht überschreiten (wenn überhaupt 55 Zeichen erreicht werden)

ich hab mal folgendes gemacht:

eine externe Anwendung programmiert (CBuilder) und eine form angelegt

auf dieser Form habe ich zum testen ein TTreeView gelegt.

dieses Fenster handle habe ich dann in der zweiten Anwendung mit "ChildWindowFromPoint" ermittelt und EnumWindows natürlich.

ich habe keine Properties geändert einfach das TreeView in der externen Anwendung auf die Form gezogen.

jetzt versuch ich schon den ganzen Tag, die Items auszulesen - 2 von der Anzahl

beide Root also:

+-Node1

|

+-Node2

mich verwundert, das es bei dir funktioniert und bei mir nicht :(

schade eigentlich

aber das muss doch irgendwie funktionieren .... !!!

Paule22

Link zu diesem Kommentar
Auf anderen Seiten teilen

Originally posted by paule22

das Problem ist, das TreeView Control ist in einer Externen Anwendung.

Jetzt kommen wir der Sache näher. Hier liegt nämlich das Problem. Die Adresse des Puffers, die du übergibst, bezieht sich auf den Adressraum deines Prozesses. Damit kann der andere Prozess nichts anfangen.

Möglicherweise kommst du mit VirtualAllocEx weiter. Damit kannst du Speicher im Adressraum eines fremden Prozesses reservieren.

Schau mal hier rein, da hatte wohl jemand das gleiche Problem:

http://www.experts-exchange.com/Programming/Programming_Platforms/Win_Prog/Q_20096218.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...