Fonte/ Codesnippets | | | | Jörg Sellmeyer |
$H windows.ph
SubProc Create.XBitmap
Parameters hwnd&,hPic&,x%,y%,ToolTip$,ExtStyle%
Case %pcount = 5:ExtStyle% = 0
If ExtStyle% = 1
ExtStyle% = ~WS_EX_DLGMODALFRAME
ElseIf ExtStyle% = 2
ExtStyle% = ~WS_EX_CLIENTEDGE
ElseIf ExtStyle% = 3
ExtStyle% = ~WS_EX_CLIENTEDGE | ~WS_EX_DLGMODALFRAME
EndIf
SizeOf(hPic&)
Var hdl& = Control("STATIC","test",$5400090E,x%,y%,%bmpx,%bmpy,hwnd&,0,%hinstance,ExtStyle%)
SendMessage(hdl&,~STM_SETIMAGE,0,hPic&)
Create("Tooltip",hwnd&,hdl&,ToolTip$)
Return hdl&
EndProc
Cls
ChDir $WinPath
Print FindFirst$("*.bmp"),
If %Ioresult
Print "Keine Bilder vorhanden"
WaitInput
End
Else
print FindNext$(),FindNext$(),FindNext$()
EndIf
Var hPic1& = Create("hSizedPic",-1,FindFirst$("*.bmp"),80,80,1)
Var hPic2& = Create("hSizedPic",-1,FindNext$(),80,80,1)
Var hPic3& = Create("hSizedPic",-1,FindNext$(),80,80,1)
Var hPic4& = Create("hSizedPic",-1,FindNext$(),80,80,1)
var h1& = Create("XBitmap",%hwnd,hPic1&,10,100,FindFirst$("*.bmp"),2)
var h2& = Create("XBitmap",%hwnd,hPic2&,110,100,FindNext$(),1)
var h3& = Create("XBitmap",%hwnd,hPic3&,210,100,FindNext$(),2)
var h4& = Create("XBitmap",%hwnd,hPic4&,310,100,FindNext$(),3)
AddString(0,Str$( hpic1&))
AddString(0,Str$( hpic2&))
AddString(0,Str$( hpic3&))
AddString(0,Str$( hpic4&))
Randomize
Declare bild&
Print "einfach mal die Bilder anklicken"
While 1
WaitInput
bild& = Val(GetString$(0,Rnd(4)))
If %key = 27
Break
ElseIf (&wparam = h1&) Or (&lparam = h1&)
~LockWindowUpdate(h1&)
SendMessage(h1&,~STM_SETIMAGE,0,bild&)
~LockWindowUpdate(0)
ElseIf (&wparam = h2&) Or (&lparam = h2&)
SendMessage(h2&,~STM_SETIMAGE,0,bild&)
ElseIf (&wparam = h3&) Or (&lparam = h3&)
SendMessage(h3&,~STM_SETIMAGE,0,bild&)
ElseIf (&wparam = h4&) Or (&lparam = h4&)
SendMessage(h4&,~STM_SETIMAGE,0,bild&)
EndIf
Wend
DeleteObject hPic1&,hPic2&,hPic3&,hPic4&
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.11.2011 ▲ |
| |
| | | Was ich schade finde ist das man Bitmaps irgendwie nicht flickerfrei neue Bilder zuweisen kann. |
| | | | |
| | Jörg Sellmeyer | bei den kleinen Bildern fällt es nicht so auf aber selbst mit LockWindowUpdate sieht man ab und an so einen weißen Streifen. Meinst Du das? |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 11.11.2011 ▲ |
| |
| | | Ob klein oder grande... ist halt die Frage wieviel Zeit der Rechner grad hat etc...
bei größeren Bitmaps fällt das naturalmente eher auf.
Musst mal z.B. sehr fix aktualisieren z.B. 50 Bilder pro Sekunde oder viele kleine Bitmaps. . |
| | | | |
| | | Solch direkt in XProfan eingbautes Canvas ( [...] ) wäre der Brüller aber steht ja offensichtlich nicht einmal zur Diskussion obwohl es einfach umzusetzen ist da im Prinzip nur ein hPic bei wmPaint gemalt werden muss. Quasi ein create.canvas das ein Control/ Fenster erstellt dem ein hPic zugeordnet werden kann welches gezeichnet wird bei wm_paint. (Es muss ja nicht gleich eine scrollbare Zeichenfläche sein wie sie von der Inc erzeugt wird die dynamisch per Proc zeichnet statt ein hPic.) |
| | | | |
| | Jörg Sellmeyer | Noch mehr Spielereien mit Tooltips und Bitmaps. Keine Ahnung, ob das so "statthaft" ist. Ist aber lustich:
Window %maxx,%maxy
Declare hBmp&,t&
ChDir $winpath
AddFiles "*.bmp"
Declare hPic&[],hBack&[]
Var y% = 2
Declare bmptext$
WhileLoop 0,%getcount'-270
hPic&[&Loop] = Create("hSizedPic",-1,GetString$(0,&Loop),80,80,1)
hBmp& = Create("Bitmap",%hwnd,hPic&[&Loop],5 + (&Loop Mod 23) * 81,y%)
hBack&[&Loop] = Create("hSizedPic",-1,GetString$(0,&Loop),380,380,1)
bmptext$ = MkStr$(Space$(%bmpx \ 3) + "\n",%bmpy \ 13)
t& = Create("Tooltip",%hwnd,hBmp&,bmptext$)
SetText t&, %hwnd, 0,"",0,GetString$(0,&Loop)
'das bewirkt leider nichts
' SetWindowPos t& = 2000,0 - %bmpx,%bmpy;1
Create("Bitmap",t&,hBack&[&Loop],10,30)
SetStyle hBmp&,GetStyle(hbmp&) | $100
CaseNot (&Loop + 1) Mod 23:Inc y%,80
WindowTitle Str$(%getcount - &Loop)
Wend
Print "fertig!"
Randomize
While 1
Waitinput
If IsKey(27)
Break
EndIf
Wend
WhileLoop 0,SizeOf(hPic&[])-1
DeleteObject hPic&[&Loop],hBack&[&Loop]
Wend
|
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 15.11.2011 ▲ |
| |
| | | Öhm... bei mir hier grad unter Vista sehe ich ("nur") ein weißes Fenster mit der Ausgabe "fertig!".
|
| | | | |
| | Jörg Sellmeyer | Hast Du denn Bitmaps im Windowsordner? Sonst paß den Pfad doch mal an. Geht ja auch mit allen anderen Formaten, wenn Du den Code entsprechend änderst. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 16.11.2011 ▲ |
| |
| | | Hmpf, X11 gibt mir naturalmente bei dieser Anweisung: die Meldung:
aus.
Also fix erstmal XProfan12 zusammengesucht da ich auf diesem Computer hier noch "neu" bin und siehe da:
Nur rechts der Rand zwischen Bild und ToolTip-Rand ist nicht so breit wie links. |
| | | | |
| | Jörg Sellmeyer |
Nur rechts der Rand zwischen Bild und ToolTip-Rand ist nicht so breit wie links.
Ja, die Platzierung ist sehr rudimentär, da SetWindowPos anscheinend nicht funktioniert bei Tooltips. |
| | | Windows XP SP2 XProfan X4... und hier mal was ganz anderes als Profan ... | 16.11.2011 ▲ |
| |
| | Jörg Sellmeyer | Ich probier grad mal aus, das auf einen Dialog auszulagern und peng - geht nicht Ist das jetzt ne profaneigene Schikane oder will Windows das nicht? Auf dem Dialog kommt zwar der Mausklick mit Rechts durch aber der linke Klick nur, wenn er als Doppelklick erfolgt. Ist doch plöd!
$H windows.ph
SubProc Create.XBitmap
Parameters hwnd&,hPic&,x%,y%,ToolTip$,ExtStyle%
Case %pcount = 5:ExtStyle% = 0
If ExtStyle% = 1
ExtStyle% = ~WS_EX_DLGMODALFRAME
ElseIf ExtStyle% = 2
ExtStyle% = ~WS_EX_CLIENTEDGE
ElseIf ExtStyle% = 3
ExtStyle% = ~WS_EX_CLIENTEDGE | ~WS_EX_DLGMODALFRAME
EndIf
SizeOf(hPic&)
Var hdl& = Control("STATIC","test",$5400090E,x%,y%,%bmpx,%bmpy,hwnd&,0,%hinstance,ExtStyle%)
SendMessage(hdl&,~STM_SETIMAGE,0,hPic&)
Create("Tooltip",hwnd&,hdl&,ToolTip$)
Return hdl&
EndProc
Cls
Var dlg& = Create("Dialog",%hwnd,"Test",%winLeft + 50,%wintop + 100,600,400)
ChDir $WinPath
Print FindFirst$("*.bmp"),
If %Ioresult
Print "Keine Bilder vorhanden"
WaitInput
End
Else
print FindNext$(),FindNext$(),FindNext$()
EndIf
Var hPic1& = Create("hSizedPic",-1,FindFirst$("*.bmp"),80,80,1)
Var hPic2& = Create("hSizedPic",-1,FindNext$(),80,80,1)
Var hPic3& = Create("hSizedPic",-1,FindNext$(),80,80,1)
Var hPic4& = Create("hSizedPic",-1,FindNext$(),80,80,1)
var h1& = Create("XBitmap",dlg&,hPic1&,10,100,FindFirst$("*.bmp"),2)
var h2& = Create("XBitmap",dlg&,hPic2&,110,100,FindNext$(),1)
var h3& = Create("XBitmap",dlg&,hPic3&,210,100,FindNext$(),2)
var h4& = Create("XBitmap",dlg&,hPic4&,310,100,FindNext$(),3)
AddString(0,Str$( hpic1&))
AddString(0,Str$( hpic2&))
AddString(0,Str$( hpic3&))
AddString(0,Str$( hpic4&))
Randomize
Declare bild&
Print "einfach mal die Bilder anklicken"
While 1
WaitInput
bild& = Val(GetString$(0,Rnd(4)))
If %key = 27
Break
ElseIf (&wparam = h1&) Or (&lparam = h1&)
print "a"
~LockWindowUpdate(h1&)
SendMessage(h1&,~STM_SETIMAGE,0,bild&)
~LockWindowUpdate(0)
ElseIf (&wparam = h2&) Or (&lparam = h2&)
SendMessage(h2&,~STM_SETIMAGE,0,bild&)
ElseIf (&wparam = h3&) Or (&lparam = h3&)
SendMessage(h3&,~STM_SETIMAGE,0,bild&)
ElseIf (&wparam = h4&) Or (&lparam = h4&)
SendMessage(h4&,~STM_SETIMAGE,0,bild&)
EndIf
Wend
DeleteObject hPic1&,hPic2&,hPic3&,hPic4&
|
| | | | |
|
Zum QuelltextTopic-Options | 14.548 Views |
ThemeninformationenDieses Thema hat 2 subscriber: |