Foro | | | | - Página 1 - |
| Nico Madysa | ¡Hola miteinander!
Yo habe mein Programa veces el Minimum reduziert, en el lo siempre todavía zwei merkwürdige Erscheinungen son: KompilierenMarcaSeparación $H Messages.ph
proc Zeige_Kugeln
declare ly% , gueltig%
alle Buttons durchgehen
whileloop 0,9
ly% = &loop
whileloop 0,9
if xor(not(&loop mod 9),not(ly% mod 9)) or (not(&loop) and (ly% = 9))
Rand deaktivieren
EnableWindow But&[&loop,ly%],0
elseif (&loop mod 9) and (ly% mod 9)
Mittelfeld aufdecken
ShowWindow(But&[&loop,ly%],0)
endif
Die Kullern anzeigen
if between(&loop,1,8,ly%,1,8)
SetTimer 0 : waitinput : KillTimer
if feld%[&loop - 1,ly% - 1]
DrawPic PTrue&,&loop * 48,ly% * 48;-1
endif
endif
EndWhile
EndWhile
Das gemalte ans Hintergrundbild klatschen
PLsg& = Create("hPic",0,"&SCRBMP")
SendMessage(hBack&,~STM_SETIMAGE,0,PLsg&)
SavePic "D:\Dat1.bmp",PLsg&
SavePic "D:\Dat2.bmp",SendMessage(hBack&,~STM_GETIMAGE,0,0)
Zu guter Letzt den deaktivierten Rand wegmachen
whileloop 0,9
ly% = &loop
whileloop 0,9
case xor(not(&loop mod 9),not(ly% mod 9)) : ShowWindow(But&[&loop,ly%],0)
EndWhile
EndWhile
endproc
proc Button
parameters px% , py%
Rand: Bilder, Mitte: normal
ifnot (px% mod 9) and (py% mod 9)
But&[px%,py%] = Create("PicButton",%hWnd,PTrue&,px% * 48,py% * 48,48,48)
else
But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)
endif
endproc
proc Button_2
parameters px% , py%
nur ein Button am Rande ist kein Bild
if (px% = 0) and (py% = 9)
But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)
elseif not((px% mod 9) and (py% mod 9))
But&[px%,py%] = Create("PicButton",%hWnd,PTrue&,px% * 48,py% * 48,48,48)
else
But&[px%,py%] = Create("Button",%hWnd,"",px% * 48,py% * 48,48,48)
endif
endproc
proc Bereite_Bilder
Hintergrundbild
PBack& = Create("hNewPic",481,481,$FFFFFF)
StartPaint PBack&
UsePen 0,1,0
whileloop 2,8
Rectangle (48*&loop-1),0 - (48*&loop+1),480
EndWhile
whileloop 2,8
Rectangle 0,(48*&loop-1) - 480,(48*&loop+1)
EndWhile
EndPaint
Bild für die Kullern
PTrue& = Create("hNewPic",48,48,$FFFFFF)
StartPaint PTrue&
UsePen 0,1,0
UseBrush 1,0
Ellipse 2,2,45,45
EndPaint
endproc
proc BuildUp
declare y%
WindowStyle 26
Window 100,50 - 500,520
Hintergrund
hBack& = Create("Bitmap",%hWnd,PBack&,0,0)
alle Buttons
whileloop 0,9
y% = &loop
whileloop 0,9
Button(&loop,y%)
Button_2(&loop,y%)
EndWhile
EndWhile
endproc
proc Platziere_Kugeln
declare rx% , ry%
clear feld%[]
whileloop 4
repeat
rx% = Rnd(8)
ry% = Rnd(8)
until not(feld%[rx%,ry%])
feld%[rx%,ry%] = 1
EndWhile
endproc
declare But&[9,9], feld%[7,7]
declare hBack&,PBack&,PLsg& , PTrue&
Randomize
Bereite_Bilder
BuildUp
Platziere_Kugeln
var e% = 0
whilenot e%
waitinput
if Clicked(But&[9,9])
e% = 1
elseif Clicked(But&[0,9])
Zeige_Kugeln
endif
wend
DeleteObject PBack&
DeleteObject PLsg&
DeleteObject PTrue&
end
Lo se folgendes gemacht: Zu Beginn voluntad en el Matrix feld% vier zufällig gewählte Werte en 1 gesetzt (Mi Murmeln, siehe más unten ). Das Staticcontrol, el en el Hintergrund liegt, se de Buttons überdeckt. Klickt uno nun en el Button unten links (con el Handle But&[0,9]), así voluntad el Randbuttons deaktiviert y el mittleren versteckt. Damit se el essenzielle Teil el Hintergrundbitmap sichtbar. Darauf voluntad vier Kullern de feld% hingemalt. Das todo Ventana se en uno Mapa de bits abgesichert y Hintergrundbitmap transferencia, el Status quo se also fixiert. Zum Schluss voluntad el deaktivierten Randbuttons unsichtbar gemacht, sólo el Ecken y el Hintergrundbild verbleiben. (Der untere rechte Button final el Programa.)
Problema 1: Im Kompilat fehlen de los vier Murmeln meist algunos. Im Interpreter voluntad stets todos vier adecuado. Wenn el Línea SetTimer 1 : waitinput : KillTimer (Dulcoif) aktiviert se, voluntad auch en el Kompilat todos Kullern adecuado. Sleep zeitigt no Wirkung. Findet lo en getrennten Schleifen en lugar de, dass el Buttons lejos y el Kreise gemalt voluntad, así voluntad ebenso todos vier Kreise adecuado. Doch por qué funktioniert el obere Variante no? Ein Zeitproblem kann no ser, como Sleep nichts bringt.
Problema 2: Man ersetze el Aufruf Button(&loop,y%) por Button_2(&loop,y%). Dadurch es una einziger el Randbuttons bildlos, pero una Standard-Button. Dies ha el unerklärlichen Effekt, dass el Hintergrundbitmap sólo todavía de uno schwarzen Fläche y el Button besteht. Wers no glaubt, kann el Bilder absichern dejar. Das Fensterfoto &SCRBMP es todavía ordentlich, doch el Mapa de bits des Static-Controls es más que fraglich. Doch por qué? |
| | | | |
| | | | | - Página 1 - |
| Nico Madysa | Bitteschön, Yo hoffe, dass dreiunzwanzig Zeilen no zuviel son. KompilierenMarcaSeparacióncls 16777215
P& ist das Bild des Buttons
var P& = Create("hNewPic",48,48,$22DD22)
Die Buttons sind h& und g&. Jeder kann ein Text- oder ein Bildbutton sein.
var h& = Create("Button",%hWnd,"Text",0,0,48,48)
var h& = Create("PicButton",%hWnd,p&,0,0,48,48)
var g& = Create("PicButton",%hWnd,p&,48,0,48,48)
var g& = Create("Button",%hWnd,"Text",48,0,48,48)
Der Fensterinhalt wird fotografiert und nach unten versetzt angezeigt.
var Q& = Create("hPic",0,"&SCRBMP")
cls 0 Damit man Bild und Bildschirm unterscheiden kann.
Create("Bitmap",%hWnd,Q&,0,48)
Rest
whilenot IsKey(27)
waitinput
wend
DeleteObject P&
DeleteObject Q&
end
Der Fehler tritt en, sobald auch sólo una einziger normaler Button en el Bildschirm sichtbar es. Sind zwei Picbuttons como, así se ejecuta alles normal. Wenn el Textbutton vorher versteckt se, funktioniert ebenfalls alles wunderbar. |
| | | | |
| | | Achso ahora verstehe Yo Su Problema, sí el es "normal".
Windows blanco no welche Pixel hinter* una Control mentira, Yo hatte veces con Franco darüber debattiert aber finde el hilo no mehr.
Im Fazit es scrbmp (natürlich) "unzuverlässig". ^ ^
Ziehe veces calc.exe encima Su hWnd y kopiere el hWnd de, calc es con en!
DCs son nunmal no Pixelspeicher.
Vlt. es dies con "AERO" ahora (algo) anders... |
| | | | |
| | | Apéndice: Ähnlich: [...] . |
| | | | |
| | | | - Página 2 - |
| | Nico Madysa | So ne Doofen Contexte! Gut, entonces muss Yo darauf en Zukunft aufpassen. Gracias schön para rápido Beantwortung meiner beiden Fragen. |
| | | | |
| | | El son no doof, el hacer el ya "richtig". |
| | | | |
| | Nico Madysa | Yo sehe ya, daran scheiter incluso el berühmte Druck-S-Abf-Taste ... Doch sage veces, lo spricht doch nichts gegen una Spieleanwendung, welche zwar no en el Hintergrund rückt (HWND_TOPMOST), se aber minimieren lässt, gelle? |
| | | | |
| | | Komisch ausgedrückt hast Usted el garnicht "nötig". Tomar simplemente Bitmaps o. Picture-Statics y sende esta neue hPic-Handles si ellos de otra manera zeigen debería. Das Neuzeichnen es deren Problema. Oder Usted zeichnest igual el todo Oberfläche en un hPic y malst el hPic aufs hWnd.
Yo sería gern el Tarea verstehen, ¿qué es exactamente solls porque voluntad? |
| | | | |
| | Nico Madysa | Como du sicherlich ya erraten hast, una Spiel. Das Problema es, dass Hice Gründen des Designs kurzzeitig en el deaktivierten Knöpfen incluso herummalen muss. Bisher war el problema, dass el Teil des Bildes entonces beim nächsten Neuzeichnen natürlich weg es, deshalb el Concepto, Knopf con Bild en una Hintergrundstatic a fixieren. Doch como macht sí eben nun &SCRBMP Ärger. |
| | | | |
| | | >> Como du sicherlich ya erraten hast, una Spiel.
Au sí, bin esta!
Und alles sólo así algo hacer clic es?
Welchem Spiel kommts al nähesten? |
| | | | |
| | Nico Madysa | Diese Mischung de Minesweeper y Schiffe Versenken, en du me ya con el Updatefunktion geholfen hast. : [...] Yo habs bisher sólo todavía no angekündigt, porque lo en el Wettbewerb se, sobald el schlimmsten Kinderkrankheiten auskuriert son. In el bisher hochgeladenen Versión hay auch todavía no el Hintergrundstatic, wodurch el Gezeichnete verschwindet, sobald qué darüber gleitet. |
| | | | |
| | | Verstehe, Yo necesariamente empfehlen simplemente el hWnd a bleiben en hay z.B. una hPic para dibujar welches el komplette Spiel enthält.
In una 2. hPic zeichnest Usted sólo el klickbaren Bereiche, cada Zona simplemente una otro Farbe. Mit una GetPixel en dieses hPic bekommt uno fix fuera, en welchen Zona (Objeto) geklickt wurde y incluso con Karenz si erwünscht.
Apéndice: Tolles Spiel! |
| | | | |
| | Nico Madysa | [...] Yo weiß no, si Yo correcto verstehe, qué du media. Das Spiel besteht sí gewissermaßen de zwei Hälften. In el ersten son sólo Buttons en el Spielfeld y uno juega sólo. Erst en el zweiten Hälfte, en el Solución, kommen entonces fast todos Buttons weg y el Bild se suscrito. El Randbuttons son eigentlich sólo dageblieben, porque sonst el abgefeuerten Laserstrahlen de el Nichts auftauchten. Lo sieht así simplemente toller de. |
| | | | |
|
RespuestaThemeninformationenDieses Thema ha 3 subscriber: |