Entwickler-Ecke
Windows API - Trayicon-Hint und "&"
Gausi - Di 07.08.07 13:36
Titel: Trayicon-Hint und "&"
Ich leite den letzten Bugreport zu meinem Player einfach mal weiter. Keine Ahnung, wie man das elegant lösen kann, aber irgendein Winapi-Spezialist kann das bestimmt. Bei Nemp sieht das zwar etwas anders aus, aber so gibts den Fehler auch schon (Code aus der Lib):
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| var fIconData: TNOTIFYICONDATA;
procedure TForm1.FormCreate(Sender: TObject); begin with fIconData do begin cbSize := SizeOf (TNOTIFYICONDATA); Wnd := Handle; uID := 1; uFlags := NIF_ICON + NIF_TIP; hIcon := LoadIcon (0, IDI_INFORMATION); szTip := 'Ernie & Bert'; end; If not Shell_NotifyIcon (NIM_ADD, @fIconData) then end; |
ergibt als Hint ein "Ernie Bert". Zwei & ergeben ein "Ernie _Bert", drei ein "Ernie & Bert". Das Verhalten ist also so ähnlich wie bei den Captions bei Menuitems, aber wie stelle ich das im Tray ab? Bei MSDN hab ich nichts finden können, und ne Suche nach & ist etwas knifflig. Auch Begriffe wie accelerator (so heißen die Dinger doch, oder?) bringen mich nicht weiter.
Ich habe nämlich keine Lust, meine Tooltips nach Stringofchar('&', x) abzusuchen, und diese durch Stringofchar('&', 2*x+1) zu ersetzen. Oder muss ich da durch? (Das wird dann aber wieder so ne frimmelige Funktion... :?)
arj - Di 07.08.07 13:39
Mmh wüsste momentan auch nichts. Als weitere Suchbegriff kannst du vielleicht noch "ampersand" benutzen.
Gausi - Di 07.08.07 14:14
Naja, der Begriff hat mich nur insofern weitergebracht, dass XMPlay (der Player vom Entwickler der bass.dll), dasselbe Problem auch mal hatte, und dass das dort wohl durch ne Verdopplung der &'s gelöst hat...Mist. Warum ich allerdings scheinbar ne Verdopplung+1 brauche, hab ich noch nicht raus...
Dunkel - Di 07.08.07 16:39
Titel: Re: Trayicon-Hint und "&"
Gausi hat folgendes geschrieben: |
{ ... }ergibt als Hint ein "Ernie Bert". Zwei & ergeben ein "Ernie _Bert", drei ein "Ernie & Bert". |
Dass Du 3 & brauchst um ein & anzuzeigen, ist sehr komisch, normalerweise reichen 2 &.
Gausi hat folgendes geschrieben: |
Auch Begriffe wie accelerator (so heißen die Dinger doch, oder?) bringen mich nicht weiter. |
Ich spiele gerade ein wenig mit
DrawText und
DrawTextW rum, die Hilfe sagt dazu folgendes:
Zitat: |
DT_HIDEPREFIX
Windows 2000/XP: Ignores the ampersand (&) prefix character in the text. The letter that follows will not be underlined, but other mnemonic-prefix characters are still processed. For example:
input string: "A&bc&&d"
normal: "Abc&d"
DT_HIDEPREFIX: "Abc&d"
|
Vielleicht geht es ja ähnlich mit dem Trayicon-Hint?!?
Gausi hat folgendes geschrieben: |
Ich habe nämlich keine Lust, meine Tooltips nach Stringofchar('&', x) abzusuchen, und diese durch Stringofchar('&', 2*x+1) zu ersetzen. Oder muss ich da durch? (Das wird dann aber wieder so ne frimmelige Funktion... :?) |
Delphi-Quelltext
1:
| StringReplace(str,'&','&&',[rfReplaceAll]); |
Was ist daran frimmelig? (wenn es sonst nicht anders geht...)
Gausi - Di 07.08.07 17:01
Delphi-Quelltext
1:
| StringReplace(str,'&','&&',[rfReplaceAll]); |
Das reicht leider nicht, weil ich &&&&& brauche, um ein && darzustellen, und kein &&&&. Ich brauche also 2n+1 viele &'s, wenn ich n aufeinanderfolgende &'s ausgegeben haben möchte.
Dunkel hat folgendes geschrieben: |
Dass Du 3 & brauchst um ein & anzuzeigen, ist sehr komisch, normalerweise reichen 2 &. |
Das finde ich auch, aber zwei && ergeben ein unterstrichenes Leerzeichen. :nixweiss:
Wäre aber nett, wenn du (oder jemand anders) das auf deinem System mit obigem Code verifizieren könntest, oder ob das ne Eigenheit meines Systems ist.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!