| |
|
|
Peter Mallow | Salut, ist es z.B. possible qui Hintergrundsfarbe einer Listbox trop changement sans zusätzliche DLL? chez une RichEdit brauche je seulement une Message envoyons, cependant pour Listboxen peux je aucun Message trouver. une autre Possibilité wäre eventuell avec einer Callback-Routiene comme im Beispiel dans qui Profanhilfe beschrieben ist (Listing: Callback (Textfeldfarbe))
seulement schaffe je es pas cette Code pour une Listbox umzuschreiben.
peux mir quelqu'un Ansätze liefern? Allerdings si es léger avec einer Message allez, ensuite c'est moi cela lieber |
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 03.10.2005 ▲ |
|
|
|
|
| cherche => Codes... => Codesnippets-Finder => Farbige...
Wofür habe je cela partie geproggt...?
Salve. |
|
|
| |
|
|
|
Peter Mallow | Sorry, là habe je pas gesucht.
mais cela beispiel funktioniert malheureusement pas. je vois aucun unterschiede: KompilierenMarqueSéparation {$cleq}
###########################
Thema : Subclassing
###########################
Listbox mit Hintergrundbild
###########################
Andreas Miethe
Oktober 2003
###########################
$H Windows.ph
$H Structs.ph
$H Messages.ph
Set(FastMode,1)
Proc Setcolor
Parameters Wparam&,Col&
If Brush&
~Deleteobject(Brush&)
Endif
Brush& = ~Createsolidbrush(Col&)
Return Brush&
Endproc
Struct Ps = ~Paintstruct
Struct Rect = ~Rect
Declare Ende&,Listbox&,Oldlbproc&,Brush&
Declare Hdc&, Mdc&, M2dc&, Width&, Height&, Painting&
Declare Image&,Moldobject&,M2oldobject&,Hmbitmap&
Declare Ps#,Rect#
Dim Ps#,Ps
Dim Rect#,Rect
Proc Lbproc
Declare Result&
Parameters Wnd&, Msg&, Wparam&, Lparam&
Result& = 0
If Msg& = ~Wm_erasebkgnd
Result& = 1
Elseif Msg& = ~Wm_paint
If Painting& = 0
Painting& = 1
Result& = ~Callwindowproc(Oldlbproc&, Wnd&, Msg&, M2dc&,Lparam&)
~Beginpaint(Wnd&, Ps#)
~Getclientrect(Listbox&,Rect#)
~Bitblt(M2dc&, Rect#.Left&,Rect#.Top&,Rect#.Right&,Rect#.Bottom&, Mdc&,Rect#.Left&,Rect#.Top&, ~Srcand)
~BitBlt(m2dc&, 0, 0, width&, height&, mDC&, 0, 0, ~SRCAND)
Hdc& = ~Getdc(Wnd&)
~Bitblt(Hdc&, Rect#.Left&,Rect#.Top&,Rect#.Right&,Rect#.Bottom&, M2dc&,Rect#.Left&,Rect#.Top&, ~Srccopy)
~BitBlt(hdc&, 0, 0, width&, height&, m2DC&, 0, 0, ~SRCCOPY)
~Releasedc(Wnd&, Hdc&)
~Endpaint(Wnd&, Ps#)
Painting& = 0
Endif
Else
Result& = ~Callwindowproc(Oldlbproc&,Wnd&, Msg&, Wparam&, Lparam&)
Endif
Return Result&
Endproc
Cls ~Getsyscolor(~Color_btnface)
Image& = ~Loadimage(0,tile.bmp,0,640,480,$10)
Width& = 640
Height& = 480
Hdc& = ~Getdc(%Hwnd)
Mdc& = ~Createcompatibledc(%Hdc)
Moldobject& = ~Selectobject(Mdc&, Hmbitmap&)
Moldobject& = ~Selectobject(Mdc&, Image&)
M2dc& = ~Createcompatibledc(Hdc&)
Hmbitmap& = ~Createcompatiblebitmap(%Hdc,Width&,Height&)
M2oldobject& = ~Selectobject(M2dc&, Hmbitmap&)
~Releasedc(%Hwnd,Hdc&)
Clearlist
Addfiles *.*
Listbox& = Create(Listbox,%Hwnd,,0,0,0,0)
~Setwindowpos(Listbox&,0,10,10,300,292,~Swp_showwindow)
Movelisttolist(Listbox&)
~Sendmessage(Listbox&,~Wm_setfont,~Getstockobject(~Default_gui_font),0)
Oldlbproc& = ~Setwindowlong(Listbox&,~Gwl_wndproc, Procaddr(Lbproc,4))
Repaint
Usermessages ~Wm_close
Whilenot Ende&
Waitinput
If Getfocus(Listbox&)
Sendmessage(Listbox&,~Wm_paint,0,0)
Endif
If %Umessage = ~Wm_close
~Deleteobject(Image&)
Ende& = 1
Endif
Wend
|
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 03.10.2005 ▲ |
|
|
|
|
Peter Mallow | mon faute funktioniert doch, si je qui Adresse zum Hintergrundsbild ändere.
mais gehts peut-être aussi einfacher? voudrais seulement qui la couleur des Hintergrundes (noir) et qui Schriftfarbe ($FFFFFF) einer Listbox changement. |
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 16.10.2005 ▲ |
|
|
|
|
Frank Abbing | allô Peter,
sans dir trop proche treten trop voulons, c'est moi aufgefallen, dass du dir volontiers Codes de anderen Leuten erstellen peut... prends dir doch la fois den Code de Andreas avant et versuche ihn selber abzuspecken. Beschäftige toi avec cela, so long ist il oui pas. Du wirst merken, cela lehrt ungemein. Jedenfalls plus, comme sich ständig Codes vorsetzten trop laisser.
Pour dein Problem gibt es aucun simple Solution, ausser cela Subclassing. ou bien tu prends Sebastians SKControl.dll. qui arbeitet aussi pour diesem Prinzip. |
|
|
| |
|
|
|
| peux dir là seulement voll zustimmen, Frank. |
|
|
| |
|
|
|
Frank Abbing | merci Andreas!
Peter, du könntest aussi un Listview verwenden. là sommes qui Farben einstellbar et tu peux es so ausehen laisser comment une Listbox. et il y a sogar une tolle Dll, à l'affaire encore einfacher trop gestalten.... |
|
|
| |
|
|
|
Peter Mallow | @Frank à vrai dire la hâte du déjà droite mais je versuche toujours qui Codes trop comprendre.
Habe mich déjà la fois versucht avec dem Code auseinanderzusetzten, doch cela était quelque chose trop viel nouveau sur einmal. mais je werde mich avec cela nocheinmal genauer beschäftigen, si je la fois wieder viel Zeit habe. |
|
|
| WinXP Pro SP2, XProfan 9 + XPSE AMD Athlon 64 X2 3800 | 19.10.2005 ▲ |
|
|
|