| |
|
|
Jac de Lad | Hallo Frank!
Schau dir mal bitte den Quelltext an. Warum verschwindet das Bild, nachdem das Fenster von einem anderen überlagert wurde? Kann man was dagegen tun? KompilierenMarkierenSeparierendeclare pdlg&,clo&,dll&,pic&,w&,h&,f$
DEF LoadExtImage(1) !"ProSpeed","LoadExtImage"
DEF FreeExtBmp(1) !"ProSpeed","FreeExtBmp"
DEF GetBmpWidth(1) !"ProSpeed","GetBmpWidth"
DEF GetBmpHeight(1) !"ProSpeed","GetBmpHeight"
DEF CopyExtBmp(9) !"ProSpeed","CopyExtBmp"
cls
dll&=UseDLL("Prospeed.dll")
f$="d:\neue dateien\halo.jpg"anpassen!
pic&=LoadExtImage(Addr(f$))
w&=GetBmpWidth(pic&)
h&=GetBmpHeight(pic&)
pdlg&=Create("Dialog",%HWnd,f$,(%MaxX-w&)/2,(%MaxY-h&-32-%CyCaption)/2,w&,h&+32+%CyCaption)
clo&=Create("Button",pdlg&,"Schließen",w&-84,h&,80,24)
StartPaint pdlg&
CopyExtBmp(%HDC,0,0,w&,h&,pic&,0,0,0)
CopyExtBmp(%HDC2,0,0,w&,h&,pic&,0,0,0)
EndPaint
FreeExtBmp(pic&)
whilenot Or(Clicked(clo&),Equ(%Key,2))
waitinput
wend
FreeDLL dll&
end
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 26.08.2006 ▲ |
|
|
|
|
Frank Abbing | Hi Jac,
das ist eben so, wenn du ein Bild auf ein Dialogfenster legst. Profan unterstützt die Bilderneuerung nur auf dem Hauptfenster. Abhilfe kannst du schaffen, wenn du WM_PAINT abfragst und selber neu zeichnest, oder ein Staticcontrol benutzt, das mit einem Bild belegt ist. Für beide Methoden findest du in den Profanforen entsprechende Threads. |
|
|
| |
|
|
|
Jac de Lad | Danke. (Also ich hab das jetzt so verstanden: Wenn ich das Bild auf ein Static lege gibts keine Probleme mehr?! Ich probiers aus)
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.08.2006 ▲ |
|
|
|
|
| |
|
| |
|
|
|
Jac de Lad | Danke, ich probiers aus...ich machs jetzt mit Timer; sieht eigentlich nicht schlecht aus!
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 27.08.2006 ▲ |
|
|
|
|
Frank Abbing | [quote:172d9ab7f4]Danke. (Also ich hab das jetzt so verstanden: Wenn ich das Bild auf ein Static lege gibts keine Probleme mehr?! Ich probiers aus)
Nein das ist so auch nicht ganz richtig Du sollst ein PictureStatic nehmen [...] [/quote:172d9ab7f4] Natürlich muss das Static ein Bild zeigen können, keine Texte. Sowas erzeugst du auf einfachste Weise so: KompilierenMarkierenSeparierenstatic&=Control("STATIC", "", $54000301, 0,0, 640, 480, dialogfenster&, 2000, %hInstance, $00020000)
Den letzten Parameter kannst du auf Null setzen, wenn das Teil keinen Rahmen haben soll. KompilierenMarkierenSeparierentext$="Bildname.jpg"
bild&=LoadExtImage(addr(text$))
staticbild&=CreateExtBmp(%hdc,640,480) Grösse des Statics
SizeExtBmp(staticbild&,0,0,640,480,bild&,0,0,GetBmpWidth(bild&),GetBmpHeight(bild&),0)
newbitmap&=~CreateCompatibleBitmap(staticbild&,640,480)
oldbitmap&=~SelectObject(staticbild&,newbitmap&)
Sendmessage(static&,$0172,0,oldbitmap&)
bei Programmende: KompilierenMarkierenSeparieren Unter WindowsXP sind Bitmap-Statics einfacher zu handhaben. Dort ist ein weiteres Grössen-Flag hinzugekommen. Dieser Code funktioniert so aber ab Windows95.
[quote:172d9ab7f4]Danke, ich probiers aus...ich machs jetzt mit Timer; sieht eigentlich nicht schlecht aus! [/quote:172d9ab7f4] Äh, verbraucht aber Unmengen Systempower. Machs über Static. Ist ne sichere Sache. |
|
|
| |
|
|
|
Jac de Lad | Ui, danke Frank, ich probiers aus! |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.08.2006 ▲ |
|
|
|
|
Frank Abbing | Wehe nicht... |
|
|
| |
|
|
|
Jac de Lad | Das funktioniert trotzdem nicht. Meine Timer-Lösung hat auch maximal eine Auslastung von 19% und das auch nur, wenn ich das Fenster mit hoher Geschwindigkeit über den Desktop zerre. Also bleibe ich bei meiner Timer-Variante!
Jac |
|
|
| Profan² 2.6 bis XProfan 11.1+XPSE+XPIA+XPRR (und irgendwann XIDE) Core2Duo E8500/T2250, 8192/1024 MB, Radeon HD4850/Radeon XPress 1250, Vista64/XP | 28.08.2006 ▲ |
|
|
|