Das OFFIZIELLE PROFAN SUPPORT FORUM
Einsteigerfragen
PROFAN-Programmierung
Helfer & Tools
Anregungen & Vorschläge
PROFAN-NEWS
Die Regeln!
2 - PROFAN-Programmierung

 Neues Thema  |  Zur Übersicht  |  Suchen  |  Einloggen   Vorherige Nachricht  |  Nächste Nachricht 
 Re: Custom Draw mit Gridboxen
Autor: Gerd Telzerow (---.dynamic.kabel-deutschland.de)
Datum:   04.12.17 20:07

$H windows.ph
$H messages.ph
$H commctrl.ph

struct NMHDR=hwndFrom&,idFrom&,code&
struct NMCUSTOMDRAW=NMHDR,dwDrawStage&,hdc&,rcLeft&,rcTop&,rcRight&,rcBottom&,dwItemSpec&,uItemState&,lItemlParam&
struct NMLVCUSTOMDRAW=NMCUSTOMDRAW,clrText&,clrTextBk&,iSubItem&,dwItemType&,clrFace&,iIconEffect&,iIconPhase&,iPartId&,iStateId&,rcTextLeft&,rcTextTop&,rcTextRight&,rcTextBottom&,uAlign&
declare _ende%,_hGB%,_OldLstVProc&,_i%,_s$

'-CallBack Routine Gridbox----------------------------------------------------
Proc ListViewWndProc
Parameters hWnd&,Message&,wParam&,lParam&
declare b#,ret&
ret&=0
if message&=~WM_NOTIFY
dim b#,NMLVCUSTOMDRAW
b#=lparam&
if b#.code&=~NM_CUSTOMDRAW
if b#.dwDrawStage&=~CDDS_PREPAINT 'gleich wird das Listview neu gezeichnet
ret&=~CDRF_NOTIFYITEMDRAW 'Folgemessages anfordern
endif
if ((b#.dwDrawStage& & ~CDDS_ITEMPREPAINT)=~CDDS_ITEMPREPAINT) and ((b#.dwDrawStage& & ~CDDS_SUBITEM)=0) 'gleich wird ein Item gezeichnet
ret&=~CDRF_NOTIFYSUBITEMDRAW 'Folgemessages vor dem Zeichnen jedes einzelnen Subitems anfordern
'beep 'wenn man dies beep aktiviert, sieht man, dass dieses Stadium erreicht wird
endif
if (b#.dwDrawStage& & (~CDDS_ITEMPREPAINT Or ~CDDS_SUBITEM))=(~CDDS_ITEMPREPAINT Or ~CDDS_SUBITEM) 'gleich wird ein Subitem gezeichnet
beep
'Hier kommen wir gar nicht erst hin (nichts piept) - warum???
b#.clrText&=@rgb(255,255,0) 'Textfarbe der Zelle ändern
b#.clrTextBk&=@rgb(0,255,255) 'Hintergrundfarbe der Zelle ändern
ret&=~CDRF_NEWFONT
endif
endif
dispose b#
endif
if ret&<>0
return ret& 'Customdraw-spezifischen Wert zurückgeben
else
return ~CallWindowProc(_OldLstVProc&,hWnd&,Message&,wParam&,lParam&) 'kein Customdraw --> Windows-Standardroutine aufrufen
endif
EndProc

'***** Hauptprogramm
windowstyle 1+2+4+8+16+512
window 0,(%maxy-470-40)-%maxx,470
popup "&Datei"
appendmenu 190,"&beenden"
_s$=""
for _i%,0,6
case _s$<>"": _s$=_s$+";"
_s$=_s$+@str$(_i%)+";0;"+@str$((@width(%HWnd)-3)\7)
endfor
_hGB%=@create("GRIDBOX",%HWnd,_s$,0,0,0,@width(%HWnd),@height(%HWnd))
for _i%,0,18
@addstring(_hGB%,@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00|"+@str$(6+_i%)+":00")
endfor
settext _hGB%,1,1,"TEST"
'Callback für Gridbox einrichten

@set("FastMode",1) 'erweitertes Messagehandling abschalten
_OldLstVProc&=~GetWindowLong(_hGB%,~GWL_WNDPROC)
~SetWindowLong(_hGB%,~GWL_WNDPROC,@procaddr("ListViewWndProc",4))
'1x neu zeichnen, um die Wirkung zu sehen
@showwindow(%HWnd,0)
@showwindow(%HWNd,1)
'Eingabehandling
_ende%=0
whilenot _ende%
waitinput
if @iskey(27) or (%key=2) or @menuitem(190)
_ende%=1
endif
endwhile
'Callback für Gridbox beenden
~SetWindowLong(_hGB%,~GWL_WNDPROC,_OldLstVProc&)
@set("FastMode",0) 'erweitertes Messagehandling wieder einschalten
end


'| = binäres ODER (im Gegensatz zu: OR = logisches ODER)
'nun bist du drin
:-)



 Beitrag beantworten  |  Foren-Liste  |  Alle Antworten   Neuerer Beitrag  |  Älteres Thema 

 Beiträge Autor  Datum
 Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 12.11.17 19:45 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 18.11.17 19:34 
 Re: Custom Draw mit Gridboxen  Neu
p. specht 19.11.17 23:39 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 20.11.17 00:38 
 Re: Custom Draw mit Gridboxen  Neu
Gerd Telzerow 03.12.17 20:51 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 04.12.17 19:08 
 Re: Custom Draw mit Gridboxen  Neu
Gerd Telzerow 04.12.17 20:07 
 Re: Custom Draw mit Gridboxen  Neu
Jens-Arne Reumschüssel 04.12.17 20:47 


 Foren-Liste  |  Zur Registrierung 
 Benutzerlogin
 Benutzername:
 Passwort:
 Login-Daten speichern:
   
 Passwort vergessen?
E-Mail-Adresse oder Username unten eingeben. Dann wird Dir per e-Mail ein neues Passwort zugeschickt.

phorum.org