| |
|
|
| allô gens,
viel habe je encore pas avec Prospeed gemacht et daher peux es son cela mon Frage gelächter auslöst. On peut einem Static champ un BMP zuweisen, quoi on auparavant avec LoadImageA lire hat. qui Hintergrund ist, dass on ensuite joli Scrollen peux sans sich um den Neuaufbau des Fensters trop kümmern. eh bien versuche je un Bild quoi je auparavant avec LoadExtMemory erstellt habe per SendMessage à cela Static champ trop transfert, quoi naturellement pas allez. Gibt es une Possibilité, dass cela Static champ cela Bild à nimmt? ou bien une comment je un Bild dans einem avec CreateWindow erstelltem la fenêtre, quoi kleiner comme cela Bild ist, Montrer peux et ensuite avec Scrollbars es Déplacer peux?
Viele Grüße Georg |
|
|
| |
|
|
|
| allô Georg.
pourquoi Gelächter ? Du übergibst dem Static, soviel je sais, une Handle sur une Bitmap. ProSpeeds LoadExt...() gibt dir mais den Handle des HDCs zurück, à den qui Bitmap gekoppelt ist. avec cela funktioniert SendMessage naturellement pas. Du müßtest den Handle qui Bitmap aus dem HDC erfragen, cela allez mittels qui API GetCurrentObject():
bitmaphandle&=GetCurrentObject(prospeedhdc&,7) 7 = OBJ_BITMAP
avec diesem Handle devrait es problemlos marcher...
Salut, Frank |
|
|
| |
|
|
|
| allô Frank,
vielen Dank pour qui Antwort. malheureusement klapt es encore pas entier, on voit zwar cela quelque chose passiert mais cela Bild wird pas angezeit, siehe Code.
direct encore une autre Frage, si le Desktopauflösung aus 16Bit steht et on un 24Bit Bild anzeigt entstehen naturellement Schlieren. peux on ca irgendwie tourner autour de, weil si je es mir dans einem Grafikprogramm ansehe wird es richtig angezeigt.
Viele Grüße Georg KompilierenMarqueSéparation $I ProSpeed_UseDll.inc
$I Prospeed_Funktionen.inc
DEF GetCurrentObject(2) ! "GDI32","GetCurrentObject"
Declare Bild$,Lenght&,Memory#,BildHDC&,BildHandle&,ExFenster&,BildFenster&
WindowStyle $200 + $8
WINDOW 150,100-800,600
WINDOWTITLE "HauptFenster"
SETTRUECOLOR 1
CLS RGB(212,208,200)
Bild$ = "bild.bmp"
Lenght& = FileSize(Bild$)
Dim Memory#,Lenght&
ReadFileFast(Addr(Bild$),Memory#,0,Lenght&)
BildHDC& = LoadExtMemory(Memory#,Lenght&)
BildHandle& = GetCurrentObject(BildHDC&,$7)
ExFenster& = CreateWindow(%HWND,"Test",50,50,700,500)
BildFenster& = Control("STATIC","",$5000110E,10,10,650,400,ExFenster&,2001,%hinstance)
SendMessage(BildFenster&,$172,0,BildHandle&)
WaitInput
DestroyWindow(ExFenster&)
Dispose Memory#
FreeAllExtBmps()
$I ProSpeed_FreeDll.inc
Fin
|
|
|
| |
|
|
|
| Salut,
peux du mir den Source plus benötigter Fichiers zusenden? ensuite peux ego besser testen...
Salut, Frank |
|
|
| |
|
|
|
| Salut,
ok, hab den Source modifiziert, sodas il maintenant funktioniert. Pour alle anderen Mitleser: cela hab je Georg geschrieben:
So, hab deinen Code modifiziert. qui Static-Message STM_SETIMAGE funktioniert seulement avec Bitmaps, qui pas à une HDC gekoppelt sommes. c'est quelquefois so, et seulement M$ sais pourquoi... Hat mich selber aussi déjà quelques Haare gekostet
eh bien, je erstelle maintenant une Pseudobitmap et koppelte vous à den HDC. Freundlicherweise wird unsere Bitmap dadurch ausgekoppelt et cela Handle wird retour. Wir sparen uns dadurch GetCurrentObject. Am Ende (solange cela Static existiert!) wird wieder zurückgekoppelt et qui Pseudobitmap gelöscht. So simple ist cela ) KompilierenMarqueSéparation $I ProSpeed_UseDll.inc
$I Prospeed_Funktionen.inc
DEF CreateCompatibleBitmap(3) ! "GDI32","CreateCompatibleBitmap"
DEF SelectObject(2) ! "GDI32","SelectObject"
Declare Bild$,Lenght&,Memory#,BildHDC&,ExFenster&,BildFenster&,XBig&,YBig&,x&,y&
WindowStyle $200 + $8
WINDOW 150,100-800,600
WINDOWTITLE "HauptFenster"
SETTRUECOLOR 1
CLS RGB(212,208,200)
Bild$ = "test.jpg"
Lenght& = FileSize(Bild$)
Dim Memory#,Lenght&
ReadFileFast(Addr(Bild$),Memory#,0,Lenght&)
BildHDC& = LoadExtMemory(Memory#,Lenght&)
XBig& = GetBmpWidth(BildHDC&)
YBig& = GetBmpHeight(BildHDC&)
x&=CreateCompatibleBitmap(BildHDC&,100,100) Irgendeine Bitmap erstellen
y&=SelectObject(BildHDC&,x&) und an den HDC koppeln. y&=Vorheriger Bitmaphandle (also unser)
ExFenster& = CreateWindow(%HWND,"Test",50,50,650,650)
BildFenster& = Control("STATIC","",$5000110E,10,10,XBig&,YBig&,ExFenster&,2001,%hinstance)
SendMessage(BildFenster&,$172,0,y&) STM_SETIMAGE
WaitInput
DestroyWindow(ExFenster&)
Dispose Memory#
SelectObject(BildHDC&,y&) Ursprüngliche Bitmap (unsere) wieder einsetzen
DeleteObject x& und die "irgendeine" ordnungsgemäß löschen
FreeAllExtBmps()
$I ProSpeed_FreeDll.inc
Fin
Salut, Frank |
|
|
| |
|
|