| |
|
|
Uwe ''Pascal'' Niemeier | Hi Personas, hallo Roland!
Hier ni Sache, el me de aktuellem Anlaß al Herzen liegt: Lo va por lo tanto, daß Profans SubClassing sólo begrenzt a Verwendung de CUSTOMDRAW-Controls taugt. (Roland hatte sí incluso ya darauf hingewiesen). Hier otra vez el Vergleich ProcAddr/SubClass: KompilierenMarcaSeparaciónwindow 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
KompilierenMarcaSeparaciónwindow 500,500
$H Messages.ph
$H Windows.ph
$H commctrl.ph
declarar LvDraw#
struct LvDraw= HwndFrom&,idFrom&,Code&,DrawStage&,Hdc&,Rect#(16),ItemSpec&,ItemState&,ItemLparam&,Text&,Textbk&,SubItem&
dim LvDraw#,LvDraw
subclassproc'--------------------------------------------------------
if subclassmessage(%hwnd,~WM_NOTIFY)
LvDraw#=&slparam
if (LvDraw#.Hwndfrom&=Lv&)*(LvDraw#.Code&=~NM_CUSTOMDRAW)
set("winproc",0)
caso LvDraw#.DrawStage&=~CDDS_PREPAINT: volver ~CDRF_NOTIFYITEMDRAW
caso LvDraw#.DrawStage&=~CDDS_ITEMPREPAINT:volver ~CDRF_NOTIFYSUBITEMDRAW
if LvDraw#.DrawStage&=~CDDS_SUBITEM | ~CDDS_ITEMPREPAINT
caso LvDraw#.SubItem&=0:LvDraw#.Textbk&=rgb(255,200,200)
caso LvDraw#.SubItem&=1:LvDraw#.Textbk&=rgb(200,255,200)
caso 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
mientras que 1
waitinput
endwhile
Auffällig es esta, daß en Versión 2 el ListView farbig se, si la ventana principal de Außen para Neuzeichnen gezwungen se. Jeder Intento, esta Effekt en el Programa incluso a erzeugen, schlug fehl. Nun frage Yo mich, si uno el Befehl RePaint tal vez derart modifizieren podría, daß dadurch el SubClassProc aufgerufen se? Möglicherweise encima una neuen Modus-Parámetro?
BTW: Yo habe auch intenta, el SubClassProc a Initialisierung des Controls como "normale" Windowprozedur einzusetzen (por &ScProc) , aber como hay neben el spezifischen ENDPROC/Volver-Comportamiento wohl todavía otro Unterschiede.
Oder gibt's todavía otro Möglchkeiten?
SeeYou Pascal |
|
|
| |
|
|
|
| ¡Hola Uwe,
como el XProfan-Technik begrenzt es Tuve para solche Sachen el nProcs erfunden - así funktioniert algo como alles fehlerfrei. Wers also "braucht" ha una profane Möglichkeit y muss no z.B. en Fremdsprachen zurückgreifen. So funktioniert auch el canvas-Incluir ( [...] ) .
Was Roland hacer podría wäre una sicheres ProcAddr para WNDPRocs - esta debería él el Ablauf des XProfan-Programmes en una vom UI-Hilo unabhängigen eigenen Hilo umlegen y propio Hilo podría entonces vom UI-Hilo "bemeldet" voluntad.
Yo weiß ya genau como el trabajo sería y cómo el programa debería - se aber una kleiner Akt y Roland ha vlt. no Tiempo. |
|
|
| |
|
|
|
RGH | ¡Hola, en a el Versión X2 algo a drehen, es definitiv a spät, porque sonst se ellos nie fertig.
Aber a otro Punto Yo sí ya en Aussicht gestellt, dass lo en absehbarer Tiempo una Verson .1 geben podría (natürlich entonces para kostenlosen Dowenload para todos X2-Besitzer). Como podría Yo mich entonces auch dieses Themas annehmen.
Saludo 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, quería nichts verdrehen - war me des Verdrehens no bewusst. ^ ^ |
|
|
| |
|
|