Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » SB_GETTEXT funktioniert nicht

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
15.03.2006, 23:15 Uhr
~GismoLupo
Gast


Hallo Leute, ich habe folgendes Problem.

Ich möchte gerne in der Statuszeile eines Programms, in der mehrere Panele vorhanden sind, von allen Panelen die Informationen auslesen bzw. ändern können.

Ich habe also folgendes versucht um in das jeweilige Panel (hier eben das Panel mit der Nr. 0) der Statuszeile zu schreiben:

SendMessage(Child_hwnd, SB_SETTEXT, 0, int("Bla"));

Leider aber ohne Erfolg. Ich überschreibe dann zwar die Daten des jeweiligen Panels
aber irgendwie stehen da dann immer nur wirre Zeichen drin.

Das gleiche passiert beim Versuch das jeweilige Panel der Statusleiste auszuslesen.

char Daten[256];

SendMessage(Child_hwnd, SB_GETTEXT, 0, (LPARAM)Daten);



Was mache ich falsch?

Vielen Dank im Voraus für Eure Hilfe.

MfG Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
16.03.2006, 16:23 Uhr
xXx
Devil


Ist doch ziemlich simpel... warum übergibtst du dem int("bla") ?! Wenn dann muss da ein String(bzw char pointer) hin guck dir mal noch mal folgendes an: MSDN - SB_SETTEXT.

Mal kurz die wichtige Stelle:

Zitat von MSDN:

szText
Pointer to a null-terminated string that specifies the text to set. If uType is SBT_OWNERDRAW, this parameter represents 32 bits of data. The parent window must interpret the data and draw the text when it receives the WM_DRAWITEM message. The text for each part is limited to 127 characters.




Wenn de das mal umänderst, sollte das mit dem SB_GETTEXT auch funktionieren...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
16.03.2006, 20:57 Uhr
~GismoLupo
Gast


Hallo und vielen Dank für Deine Antwort.
Nur leider funzt das auch nicht so wie ich mir das vorstelle.
Dabei spielt es auch keine Rolle ob ich nun in die Statuszeile schreibe oder aus ihr lese.
Hier mein aktueller Code in dem ich versuche aus der Zeile zu lesen.
( Mein Compiler ist übrigens der C++ Builder 6 )

Im Beispiel habe ich mit Outlook Express experimentiert.


HWND hwnd;
HWND Child_hwnd;
char *zPuffer = NULL;
int Len;


//Ermittelt das Outlook Window-Handle mit Hilfe der Class
hwnd = FindWindow("Outlook Express Browser Class", NULL);
if(hwnd != 0) //<- Wenn Window-Handle gefunden, hier weiter
{
//Prüft, ob ein ChildWindow mit dem Classennamen "msctls_statusbar32"
//existiert.
Child_hwnd = FindWindowEx(hwnd, NULL, "msctls_statusbar32", NULL);
if(Child_hwnd != 0) //<- Wenn Window-Handle gefunden, hier weiter
{
Len = SendMessage(Child_hwnd, SB_GETTEXTLENGTH, 1, 0);

zPuffer = new char [Len + 1];

SendMessage(Child_hwnd, SB_GETTEXT, 1, (LPARAM)zPuffer);

frmMain->Memo1->Lines->Add(LPARAM(zPuffer));

delete zPuffer;
}
}


Die folgende Methode mit WM_GETTEXT oder auch mit WM_SETTEXT funktioniert prima aber eben nur mit dem Panel 0 der Statuszeile und auch mit anderen Objekten.

char Puffer[256];

//Fragt den Objekt-Text ab
SendMessage(Child_hwnd, WM_GETTEXT, 255, int(Puffer));


frmMain->Memo1->Lines->Add(Puffer);


Komme da irgendwie nicht klar.
Hast Du da vielleicht auch noch eine Idee ?

MfG Andreas
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: