| |
|
|
| Bitmaps flickern desafortunadamente (XP,Vista,7) si uno esta así una neues hPic zuweisen möchte: KompilierenMarcaSeparaciónCLS
var HPIC&=CREATE("hNewPic",100,100,$FF0000)
var HBMP&=CREATE("bitmap",%HWND,HPIC&,10,10)
WHILE 1
WAITINPUT 10
SENDMESSAGE(HBMP&,370,0,HPIC&)//stm_setImage
END /a>
Vlt. podría uno una Control hPicDisplay erfinden welches incluso una zugewiesenes (vlt. gwl_userData) hPic características z.B. en wm_draw.
Dann podría uno en así una Control auch dibujar.
Apéndice: Siehe Canvas.Inc: [...] |
|
|
| |
|
|
|
| Es me nun endlich gelungen el auch veces a kompilieren: [...]
Was uno sieht es una "flickerndes" Mapa de bits. |
|
|
| |
|
|
|
Andreas Miethe
| Kann el auch al Rechner mentira ? En me flackert nichts. |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 21.09.2010 ▲ |
|
|
|
|
| Salve!
Jain, el Flackern geschieht en allen Computern halbwegs igual o. je después de Computer- Geschwindigkeit y Mapa de bits-Größe.
En Bitmaps o. BitmapStatics en Verbindung con stm_setImage flackern esta sólo "mehr oder weniger" si uno stm_setImage anwendet - Yo podría me aber vorstellen en el "neusten" UI's como AREO o.ä. el Flackern "weggecached" se aber el weiß Yo no.
Mi "Idee" es una einfaches Owner-Draw-Static welches sólo z.B. en wm_paint una HPic características - dieses sería entonces sí de Haus de no flickern si uno una Bildänderung anweist.
Tal vez könntest Usted me de tiempo solch Owner-Draw-Static vormachen - also uno el en el FastMode con eigener WProc una beliebiges hPic características - Yo schätze Yo podría lo entonces wiederum una "Control" herstellen y umbauen para el "nicht-Fastmode" por WProc como nProc y Roland podría dies entonces wiederum bastante direkt en Delphi umsetzen y direkt para XProfan una Crear("canvas",...) herstellen. |
|
|
| |
|
|
|
Jörg Sellmeyer | En me flackerts auch. Windows XP |
|
|
| Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 22.09.2010 ▲ |
|
|
|
|
Andreas Miethe
| ¿Te ha algo en dieser Art ?
Yo habe el eben veces de el Ärmel geschüttelt, por lo tanto son todavía feste Werte drin. Tiempo sehen, si Yo al Wochenende dazu komme el auszubauen. KompilierenMarcaSeparación $H Windows.ph
$H Structs.ph
$H Messages.ph
DEF &CAPTUREBLT $40000000
Struct WNDCLASSEX = ~WNDCLASSEX
Struct PS = ~PAINTSTRUCT
Declare Ende&,CanvasClassname$
WindowTitle "Canvas"
CLS ~GetSysColor(~Color_BTNFACE)
'Klassen Info holen
Var wndc# = New(WNDCLASSEX)
wndc#.cbSize& = SizeOf(wndc#)
~GetClassInfoEx(%hInstance,"STATIC",wndc#)
'alte controlprocadresse speichern
Var OldWndProc& = wndc#.lpfnWndProc&
' neue controlprocadresse setzen
wndc#.lpfnWndProc& = Procaddr("CanvasProc",4)
'neuen Klassennamen setzen
CanvasClassname$ = "PrfCanvas"
wndc#.lpszClassName& = Addr(CanvasClassname$)
wndc#.hInstance& = %hInstance
' Neue Klasse registrieren
~RegisterClassEx(wndc#)
Set("Fastmode",1)
Var Canvas& = ~CreateWindowEx(0,"PrfCanvas","", ~WS_CHILD | ~WS_VISIBLE | ~SS_SUNKEN,10,10,300,300,%hwnd,0,%hInstance,0)
Whilenot Ende&
Waitinput
Endwhile
End
Proc CanvasProc
Parameters wnd&,msg&,wparam&,lparam&
Select msg&
Caseof ~WM_PAINT
Var PS# = New(PS)
Var DC& = ~BeginPaint(wnd&,PS#)
~BitBlt(DC&,0,0,298,298,~GetDC(%Desktop),0,0,~SRCCOPY | &CAPTUREBLT)
~EndPaint(wnd&,PS#)
Dispose PS#
Return 0
Endselect
Return ~CallWindowProc(OldWndProc&,wnd&,msg&,wparam&,lparam&)
ENDPROC
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.09.2010 ▲ |
|
|
|
|
Andreas Miethe
| Ok, es ya expandido.
Ob lo en Euch flackert kann Yo no sagen, en me flackert nichts. KompilierenMarcaSeparación $H Windows.ph
$H Structs.ph
$H Messages.ph
DEF &CAPTUREBLT $40000000
Struct WNDCLASSEX = ~WNDCLASSEX
Struct PS = ~PAINTSTRUCT
Struct BITMAP = ~BITMAP
Declare Ende&,CanvasClassname$
WindowTitle "Canvas"
CLS ~GetSysColor(~Color_BTNFACE)
'Klassen Info holen
Var wndc# = New(WNDCLASSEX)
wndc#.cbSize& = SizeOf(wndc#)
~GetClassInfoEx(%hInstance,"STATIC",wndc#)
'alte controlprocadresse speichern
Var OldWndProc& = wndc#.lpfnWndProc&
' neue controlprocadresse setzen
wndc#.lpfnWndProc& = Procaddr("CanvasProc",4)
'neuen Klassennamen setzen
CanvasClassname$ = "PrfCanvas"
wndc#.lpszClassName& = Addr(CanvasClassname$)
wndc#.hInstance& = %hInstance
' Neue Klasse registrieren
~RegisterClassEx(wndc#)
Set("Fastmode",1)
Var Canvas& = ~CreateWindowEx(0,"PrfCanvas","", ~WS_CHILD | ~WS_VISIBLE | ~SS_SUNKEN | ~SS_BITMAP,10,10,0,0,%hwnd,0,%hInstance,0)
var HPIC&=CREATE("hNewPic",100,100,$FF0000)
SendMessage(Canvas&,~STM_SETIMAGE,0,HPIC&)
Whilenot Ende&
WAITINPUT 10
Startpaint HPIC&
TextColor $00FFFF,$FF0000
Drawtext 10,10,Time$(0)+":"+Left$(Time$(1),2)
EndPaint
SENDMESSAGE(Canvas&,370,0,HPIC&)'stm_setImage
Endwhile
End
Proc CanvasProc
Parameters wnd&,msg&,wparam&,lparam&
Select msg&
Caseof ~WM_PAINT
Var PS# = New(PS)
Var DC& = ~BeginPaint(wnd&,PS#)
Var CompDC& = ~CreateCompatibleDC(DC&)
Var Bmp& = ~SendMessage(wnd&,~STM_GETIMAGE,0,0)
Var BMP# = New(BITMAP)
~GetObject(Bmp&,SizeOf(BMP#),BMP#)
Var Width& = BMP#.bmwidth&
var Height& = BMP#.bmHeight&
~SelectObject(CompDC&,Bmp&)
~ReleaseDC(CompDC&)
~BitBlt(DC&,0,0,Width&,Height&,CompDC&,0,0,~SRCCOPY | &CAPTUREBLT)
~EndPaint(wnd&,PS#)
~DeleteDC(CompDC&)
Dispose PS#
Dispose BMP#
Return 0
Caseof ~STM_SETIMAGE
~InvalidateRect(wnd&,0,0)
Endselect
Return ~CallWindowProc(OldWndProc&,wnd&,msg&,wparam&,lparam&)
ss=s4 href='./../../function-references/XProfan/ENDPROC/'>ENDPROC
|
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.09.2010 ▲ |
|
|
|
|
| Klasse y vielen Dank, para mein Vorhaben incluso ya a viel - así kann Yo super herstellen Yo meinte!
[offtopic] Nebenbei bemerkt: El Línea Struct WNDCLASSEX = ~WNDCLASSEX lässt XPSE abstürzen porque WNDCLASSEX ya bekannt _und gleichnamig el Zuweisung - en nächster Versión Fijo. Abhilfe: Línea simplemente entfernen como Struktur automáticamente eingebunden se si benötigt. [/offtopic] |
|
|
| |
|
|
|
| Hab el veces como Incluir canvas.inc ( [...] ) verpackt -
en dieser Form hilft lo me persönlich al meisten. |
|
|
| |
|
|
|
| @Roland: Diese Canvassses [...] son simplemente "super" - todavía superer wäre lo si XProfan esta de Haus de erzeugen kann y si yo me el Inc anschaue son lo auch sólo wenige Zeilen que sí bastante 1:1 después de Delphi portieren liessen a una eingebauten create("canvas". |
|
|
| |
|
|
|
Andreas Miethe
| ¡Hola David,
si el todavía para Win98 y ME kompatibel hacer willst entonces nimm en Bitblt() el 2.Parámetro ()$40000000 en el Flags fuera. . Den Tuve sólo para el erste Ejemplo, para el Kopieren des Desktops instalado. Damit voluntad auch "Layered Windows" con eingefangen. Für normale Bitmaps Usted necesita el sí no, y bajo Win98 o. ME funktioniert el Sache no con el Flag !
Hast Usted ya veces probiert el código con Xprofan12 laufen que se ? En me folgt una Choque. |
|
|
| Gruss Andreas ________ ________ ________ ________ _ Profan 3.3 - XProfanX2 Win 95,98,ME,2000,XP,Vista - Win 7 32 / 64 Bit ASUS X93S - Intel Core I7-NVIDIA GForce 540M 8GB Arbeitsspeicher Homepage : [...] | 22.09.2010 ▲ |
|
|
|
|
| Das Flag Aprovecho fuera, tambor el Incluir como V0.0 auch un hilo verpasst fürs Weiterdranentwickeln oder "Blödsinn" como en "$40000000" Herausnehmen. ^ ^
>> Hast Usted ya veces probiert el código con Xprofan12 laufen que se ?
Posesiones Yo no getestet porque aktueller xpse para neuste XProfan 11 Versión es - Yo, el para XProfan 12 sólo fertigstellen muss. Ein pocos Gründe fallen me ya una por qué una XProfan 11 "enh" bajo XProfan 12 momentan abstürzen podría. ^ ^ |
|
|
| |
|
|