| |
|
|
Georg Hovenbitzer | Hallo zusammen,
ich versuche nun schon seit einiger Zeit die Icongröße in einem ToolTip zu ändern, welches ein eigenes Icon zugewiesen bekommen hat. Mehr als 16x16 oder es könnte auch 24x24 sein ist mir nicht gelungen. Geht dies überhaupt und wenn wie ? KompilierenMarkierenSeparierenDef LoadImage(6) !USER32.DLL,LoadImageA
Def DestroyIcon(1) !USER32.DLL,DestroyIcon
Declare Font&
Declare Dll&
Declare Icon&
Declare Name$
Declare Button&
Declare ToolTip&
Font& = @Create(FONT,ARIAL,24,0,0,0,0)
Cls
Dll& = @UseDLL(SHELL32.DLL)
Name$ = #20 + @Chr$(0)
Icon& = LoadImage(DLL&,@Addr(Name$),1,48,48,$2000)
Button& = @Control(BUTTON,,$5000804A,100,100,64,64,%hWnd,100,%hInstance,$10000)
@SendMessage(Button&,$00F7,1,Icon&)
ToolTip& = @Create(Tooltip,%Hwnd,Button&,Wieso geht es nicht?)
SetStyle ToolTip&,$D000040
@SendMessage(ToolTip&,$30,Font&,0) WM_SetFont
Name$ = großes Icon ? + @Chr$(0)
@SendMessage(ToolTip&,$0420,Icon&,@Addr(Name$)) TTM_SetTitle
@SendMessage(ToolTip&,$0403,$2,15000) TTM_SetDelayTime ~TTDT_AutoPop
@SetFocus(%hWnd)
While 1
Waitinput
Wend
DeleteObject Font&
DestroyIcon(Icon&)
FreeDLL DLL&
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 20.11.2005 ▲ |
|
|
|
|
Frank Abbing | Hm, unter XP Home tut sich da gar nix. Kommt überhaupt kein Tooltext, geschweige denn einer mit Icon... |
|
|
| |
|
|
|
Rolf Koch | @Frank Liegt an dieser Zeile: Setstyle Tooltip&,$D000040
hast bestimmt auch die Bubbles abgeschaltet.
Rolf |
|
|
| |
|
|
|
Frank Abbing | Klar, Rolf. Nerven ja sonst zu viel Hab den Code nur kurz überflogen und dann getestet. |
|
|
| |
|
|
|
Rolf Koch | Georg, zum Problem kurz: Vor dieser Frage stand ich auch mal (Danke Dir für die Erinnerung mit dem Icon, denn habs vergessen in Noctramic einzubauen *lol* ). Als ich dann irgendwann die Schnauze voll hatte, hab ich kurzerhand die Icons mit einem Staticbitmap überlagert. Funktioniert. Und ein Staticbitmap (Hintgrundfarbe ident mit Tooltip Hintergrundfarbe) lässt sich sehr bequem in der Grösse anpassen. Die Fläche ansich ist ja bereits gross genung um dort ein Bitmap einzupflanzen. (aber vielleicht gibt ja noch einer eine richtige Lösung)
Hier ein Beispiel: KompilierenMarkierenSeparierenDef Loadimage(6) !USER32.DLL,LoadImageA
Def Destroyicon(1) !USER32.DLL,DestroyIcon
Declare Font&,icon1&
Declare Dll&
Declare Icon&
Declare Name$
Declare Button&
Declare Tooltip&
PROC ICONPIC
Declare h&,abx#,statbild&
Parameters bild$,mausx%,mausy%,breitobj&,hochobj&,handl&
Dim abx#,Add(Len(bild$),1)
String abx#,0=bild$
Let h&=LoadImage(%hinstance,abx#,0,breitobj&,hochobj&,$50)
Let statbild&=@Control(STATIC,,$05000010E,mausx%,mausy%,breitobj&,hochobj&,handl&,$7918,%hinstance)
SendMessage(statbild&,$172,0,h&)
DISPOSE abx#
Return statbild&
ENDPROC
Font& = @Create(FONT,ARIAL,24,0,0,0,0)
Cls
Dll& = @Usedll(SHELL32.DLL)
Name$ = #20 + @Chr$(0)
Icon1& = Loadimage(Dll&,@Addr(Name$),1,48,48,$2000)
Button& = @Control(BUTTON,,$5000804A,100,100,64,64,%Hwnd,100,%Hinstance,$10000)
@Sendmessage(Button&,$00F7,1,Icon1&)
Tooltip& = @Create(Tooltip,%Hwnd,Button&,Wieso geht es nicht?)
@Sendmessage(Tooltip&,$30,Font&,0)WM_SetFont
Name$ = großes Icon ? + @Chr$(0)
@Sendmessage(Tooltip&,$0403,$2,15000)TTM_SetDelayTime ~TTDT_AutoPop
ICONPIC Pic1.bmp,2,2,30,30,Tooltip&
Pic1.BMP mit gleichem Hintergrund wie Tooltip am besten
ICON&=&(0)
@Sendmessage(Tooltip&,$0420,Icon&,@Addr(Name$))TTM_SetTitle
@Setfocus(%Hwnd)
While 1
Waitinput
Wend
Deleteobject Font&
Destroyicon(Icon&)
Freedll Dll&
Rolf |
|
|
| |
|
|
|
Georg Hovenbitzer | Hallo Rolf,
vielen Dank für den Tip. Ich werde ihn mir morgen mal genauer ansehen.
Was mich nur wundert ist, dass man mit der TTM_GETTITLE Message die Größe des Icons auslesen kann. Der Umkehrschluss wäre doch, dass man mit TTM_SETTITLE die Größe setzen kann, was leider nicht der Fall ist. Woran macht Windows die Größe des Icons fest ?
Ich melde mich morgen nochmals, sobalt ich es getestet habe. |
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 21.11.2005 ▲ |
|
|
|
|
Georg Hovenbitzer | Hallo Rolf,
ich hatte nun Zeit mir den code mal genauer anzusehen, klappt super klasse Klasse Idee es so zu machen ! Wenn man folgendes ändert geht es auch mit Icons: KompilierenMarkierenSeparierenStatbild&=@Control(STATIC,,$50000903,Mausx%,Mausy%,0,0,Handl&,$7918,%hInstance)
Sendmessage(Statbild&,$172,1,H&)
|
|
|
| Viele Grüsse, Georg Hovenbitzer(Windows XP Pro, XProfan 11.2, Profan2Cpp 1.6a) | 22.11.2005 ▲ |
|
|
|
|
Rolf Koch | ... gut zu wissen
Rolf |
|
|
| |
|
|