Deutsch
Forum

Bild verschwindet nach Überlagerung

 

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?
KompilierenMarkierenSeparieren
declare 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.
 
27.08.2006  
 




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  
 



Nein das ist so auch nicht ganz richtig

Du sollst ein PictureStatic  nehmen  [...] 
 
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:
KompilierenMarkierenSeparieren
static&=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.
KompilierenMarkierenSeparieren
text$="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
newbitmap&=SelectObject(staticbild&,oldbitmap&)
DeleteObject newbitmap&
FreeAllExtBmps()

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.
 
27.08.2006  
 




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...
 
28.08.2006  
 




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  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.109 Betrachtungen

Unbenanntvor 0 min.
Uwe Lang28.12.2012
Andreas Koch19.12.2011

Themeninformationen

Dieses Thema hat 3 Teilnehmer:

Jac de Lad (5x)
Frank Abbing (3x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie