AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Edit_GetCueBannerText (Win XP)

Ein Thema von MathiasSimmack · begonnen am 10. Nov 2003 · letzter Beitrag vom 11. Sep 2006
 
MathiasSimmack
(Gast)

n/a Beiträge
 
#1

Edit_GetCueBannerText (Win XP)

  Alt 10. Nov 2003, 14:15
Hallo.

Ich habe ein kleines Rätsel, das gelöst werden muss. Unter Win XP gibt es die Möglichkeit, mit "EM_SETCUEBANNER" bzw. dem Makro "Edit_SetCueBannerText" einen grau dargestellten Text in ein Editfeld zu schreiben. Das ist aus der Suchfunktion im Explorer bekannt: Dort, wo man den Text reinschreiben kann, der in den gesuchten Dateien enthalten sein soll, steht standardmäßig Geben Sie in der Datei enthaltene Worte ein.

Um die Funktion nutzen zu können, benötigt man (zumindest für alte Delphi-Versionen) folgende Deklarationen:
Delphi-Quellcode:
const
  ECM_FIRST = $1500;
  EM_SETCUEBANNER = ECM_FIRST + 1;
  EM_GETCUEBANNER = ECM_FIRST + 2;
Nun lässt sich der Text bspw. so übergeben:
Delphi-Quellcode:
// var
// unicodechars : array[0..1024]of widechar;

lstrcpyW(unicodechars,'Geben Sie hier etwas ein');
SendMessage(hEdit,EM_SETCUEBANNER,0,LPARAM(@unicodechars));
oder einfacher mit dem o.g. Makro
Edit_SetCueBannerText(hEdit,'Geben Sie hier etwas ein'); Das Makro muss man natürlich selbst deklarieren, wobei man aber auch nur die o.g. Nachricht aufruft und den Puffer übergibt.
So weit, so gut.

Nun soll man den Text aber auch mit EM_GETCUEBANNER bzw. "Edit_GetCueBannerText" auslesen können. Und da geht das Rätsel los. Wenn ich mich nach der Vorlage in der "CommCtrl.h" (s. PSDK) richte
Code:
#define Edit_GetCueBannerText(hwnd, lpwText, cchText) \
  (BOOL)SNDMSG((hwnd), EM_GETCUEBANNER, (WPARAM)(lpwText), (LPARAM)(cchText))
dann müsste die Funktion in Delphi so aussehen:
Delphi-Quellcode:
function Edit_GetCueBannerText(hEdit: HWND; lpwText: PWideChar;
  cchText: longint): bool;
begin
  Result := Bool(SendMessage(hEdit,EM_GETCUEBANNER,WPARAM(lpwText),
    LPARAM(cchText)));
end;
Richtig? (Jetzt mal abgesehen davon, dass ich "hEdit" und nicht "hwnd" benutzt habe.) Schaut man aber ins PSDK, dann findet man unter EM_GETCUEBANNER die folgende Beschreibung:
Zitat von PSDK (EM_GETCUEBANNER):
Parameters

wParam
Not used; must be zero.

lParam
Pointer to a Unicode string that receives the text set as the textual cue.
So, und damit bin ich verwirrt.

Abgesehen davon funktioniert beides nicht. Es sei denn, ich habe irgendwo versehentlich einen Fehler eingebaut:
Delphi-Quellcode:
// var
// iLen : longint;

// laut PSDK:
ZeroMemory(@unicodechars,sizeof(unicodechars));
SendMessage(hEdit1,EM_GETCUEBANNER,0,LPARAM(@unicodechars));
MessageBoxW(wnd,unicodechars,nil,0);

// laut "CommCtrl.h"-Makro
ZeroMemory(@unicodechars,sizeof(unicodechars));
iLen := sizeof(unicodechars);
SendMessage(hEdit1,EM_GETCUEBANNER,WPARAM(@unicodechars),LPARAM(iLen));
MessageBoxW(wnd,unicodechars,nil,0);

// spaßeshalber mal umgedreht, hätte ja sein können ...
ZeroMemory(@unicodechars,sizeof(unicodechars));
iLen := sizeof(unicodechars);
SendMessage(hwndEdit1,EM_GETCUEBANNER,WPARAM(iLen),LPARAM(@unicodechars));
MessageBoxW(wnd,unicodechars,nil,0);
Die Frage ist jetzt: Bekommt das jemand zum Laufen?
Und wenn Ja: Wie?


Zum Testen ist übrigens ein Manifest (Common Controls 6.0) notwendig.

Gruß.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz