| |
|
|
Uwe ''Pascal'' Niemeier | Hi gens, allô Roland!
ici encore une l'affaire, qui mir aus aktuellem Anlaß am Herzen liegt: und dir tout autor, qui Profans SubClassing seulement begrenzt zur Verwendung de CUSTOMDRAW-Controls taugt. (Roland hatte oui selbst déjà puis hingewiesen). ici nochmal qui comparaison ProcAddr/SubClass: KompilierenMarqueSéparationwindow 500,500
$H Messages.ph
$H Windows.ph
$H commctrl.ph
declare LvDraw#
struct LvDraw= HwndFrom&,idFrom&,Code&,DrawStage&,Hdc&,Rect#(16),ItemSpec&,ItemState&,ItemLparam&,Text&,Textbk&,SubItem&
dim LvDraw#,LvDraw
proc ColorProc'--------------------------------------------------------
parameters wnd&,msg&,wparam&,lparam&
if msg&=~WM_NOTIFY
LvDraw#=lparam&
if (LvDraw#.Hwndfrom&=Lv&)*(LvDraw#.Code&=~NM_CUSTOMDRAW)
case LvDraw#.DrawStage&=~CDDS_PREPAINT: return ~CDRF_NOTIFYITEMDRAW
case LvDraw#.DrawStage&=~CDDS_ITEMPREPAINT:return ~CDRF_NOTIFYSUBITEMDRAW
if LvDraw#.DrawStage&=~CDDS_SUBITEM | ~CDDS_ITEMPREPAINT
case LvDraw#.SubItem&=0:LvDraw#.Textbk&=rgb(255,200,200)
case LvDraw#.SubItem&=1:LvDraw#.Textbk&=rgb(200,255,200)
case LvDraw#.SubItem&=2:LvDraw#.Textbk&=rgb(200,200,255)
endif
endif
endif
return ~CallWindowProc(&WinProc,wnd&,msg&,wparam&,lparam&)
endproc'-------------------------------------------------------------
var Lv&=create("gridbox",%hwnd,"Spalte 0;0;100;Spalte 1;0;100;Spalte 2;0;100",0,20,20,400,300)
whileloop 0,50
addstring(Lv&,"Test|Test|Test")
endwhile
set("FastMode",1)
~SetWindowLong(%hwnd,~GWL_WNDPROC,procaddr(ColorProc,4))
repaint
while 1
waitinput
endwhile
KompilierenMarqueSéparationwindow 500,500
$H Messages.ph
$H Windows.ph
$H commctrl.ph
declare LvDraw#
struct LvDraw= HwndFrom&,idFrom&,Code&,DrawStage&,Hdc&,Rect#(16),ItemSpec&,ItemState&,ItemLparam&,Text&,Textbk&,SubItem&
dim LvDraw#,LvDraw
subclassproc'--------------------------------------------------------
si subclassmessage(%hwnd,~WM_NOTIFY)
LvDraw#=&slparam
si (LvDraw#.Hwndfrom&=Lv&)*(LvDraw#.Code&=~NM_CUSTOMDRAW)
set("winproc",0)
cas LvDraw#.DrawStage&=~CDDS_PREPAINT: return ~CDRF_NOTIFYITEMDRAW
cas LvDraw#.DrawStage&=~CDDS_ITEMPREPAINT:return ~CDRF_NOTIFYSUBITEMDRAW
si LvDraw#.DrawStage&=~CDDS_SUBITEM | ~CDDS_ITEMPREPAINT
cas LvDraw#.SubItem&=0:LvDraw#.Textbk&=rgb(255,200,200)
cas LvDraw#.SubItem&=1:LvDraw#.Textbk&=rgb(200,255,200)
cas LvDraw#.SubItem&=2:LvDraw#.Textbk&=rgb(200,200,255)
endif
endif
endif
endproc'-------------------------------------------------------------
var Lv&=create("gridbox",%hwnd,"Spalte 0;0;100;Spalte 1;0;100;Spalte 2;0;100",0,20,20,400,300)
whileloop 0,50
addstring(Lv&,"Test|Test|Test")
endwhile
subclass %hwnd,1
tandis que 1
waitinput
endwhile
Auffällig ist dabei, qui chez Version 2 cela ListView farbig wird, si cela Hauptfenster de Außen zum Neuzeichnen gezwungen wird. chacun Versuch, cette effet im Programme selbst trop erzeugen, schlug fehl. eh bien frage je mich, si on den Befehl RePaint peut-être derart modifizieren pourrait, qui dadurch qui SubClassProc aufgerufen wird? Möglicherweise sur une neuen Modus-paramètre?
BTW: j'ai aussi versucht, qui SubClassProc zur initialisation des Controls comme "normale" Windowprozedur einzusetzen (per &ScProc) , mais là gibt es près de dem spezifischen ENDPROC/Retour-Verhalten wohl encore autre Unterschiede.
ou bien gibt's encore autre Möglchkeiten?
SeeYou Pascal |
|
|
| |
|
|
|
| allô Uwe,
là qui XProfan-technologie begrenzt ist J'ai eu pour solche Sachen qui nProcs erfunden - avec cela funktioniert quelque chose comme alles correct. Wers alors "braucht" hat une profane Possibilité et muss pas z.B. sur Fremdsprachen zurückgreifen. So funktioniert aussi qui canvas-Include ( [...] ) .
quoi Roland faire pourrait wäre une sicheres ProcAddr pour WNDPRocs - hierfür devrait il den le bout des XProfan-Programmes dans une vom L'assurance-chômage-Fil unabhängigen eigenen Fil umlegen et qui eigene Fil pourrait ensuite vom L'assurance-chômage-Fil "bemeldet" volonté.
je sais déjà oui c'est ca comment cela marcher serait et comment on cela programmieren devrait - wird mais un kleiner Akt et Roland hat vlt. aucun Zeit. |
|
|
| |
|
|
|
RGH | Salut, um à qui Version X2 quelque chose trop drehen, ist es définitif trop spät, car sonst wird vous nie fertig.
mais à anderer Stelle habe je oui déjà dans vue gestellt, dass es dans absehbarer Zeit une Verson .1 donner pourrait (naturellement ensuite zum kostenlosen Dowenload pour alle X2-Besitzer). là pourrait je mich ensuite aussi cet Themas annehmen.
Salut Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 16.12.2010 ▲ |
|
|
|
|
Uwe ''Pascal'' Niemeier | |
|
| |
|
|
|
| Sorry, voulais rien verdrehen - était mir des Verdrehens pas bewusst. ^ ^ |
|
|
| |
|
|