| |
VB & Windows APIEinfacher Code -> Programm stürzt mit der Zeit komplett ab (API-Getpixel) | | | Autor: slashmaster | Datum: 06.06.11 06:06 |
| Huhu,
ich habe folgenden simplen Code, um mir die Koordinaten der Maus und die darunterliegende Pixelfarbe auslesen und anzeigen zu lassen. Benötigt werden drei labels (1-3) und ein Timer1
Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
Private Declare Function GetPixel Lib "gdi32.dll" ( _
ByVal hdc As Long, _
ByVal nXPos As Long, _
ByVal nYPos As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Private Sub Timer1_Timer()
Dim MyMouse As POINTAPI
GetCursorPos MyMouse
Me.Label1.Caption = MyMouse.x
Me.Label2.Caption = MyMouse.y
Me.Label3.Caption = GetPixel(GetDC(0), MyMouse.x, MyMouse.y)
Me.Label3.BackColor = Me.Label3.Caption
End Sub
Wenn das ganze jetzt ne Weile läuft (~ ne Minute), dann funktioniert der Code nicht mehr und das Programm (inkl. Entwicklungsumgebung) schmiert ab. Als intervall habe ich 10ms eingestellt aber selbst, wenn ich es höher stelle schmiert er mit der Zeit ab. Mach ich irgendwas falsch, wenn ja was und wie könnte man es anders machen?
lg | |
Re: Einfacher Code -> Programm stürzt mit der Zeit komplett ab (API-Getpixel) | | | Autor: slashmaster | Datum: 06.06.11 06:14 |
| als Ergänzung: nach gewisser Zeit liefert "GetPixel" -1 als Ergebnis. Also er liest die Farbe nicht mehr aus
Das Phänomen habe ich an 3 Rechnern feststellen können, mit unterschiedlichem Arbeitsspeicher, CPU, Betriebssystem | |
Re: Einfacher Code -> Programm stürzt mit der Zeit komplett ab (API-Getpixel) | | | Autor: slashmaster | Datum: 06.06.11 07:28 |
| das Problem hat sich erledigt. Wenn man mit GetDC arbeitet muss man dieses auch wieder freigeben ReleaseDC
Danke fürs lesen! | |
Re: Einfacher Code -> Programm stürzt mit der Zeit komplett ab (API-Getpixel) | | | Autor: Manfred X | Datum: 06.06.11 11:13 |
| Hallo!
Warum erstellst Du den Gerätekontext im Timer-Event?
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32" (ByVal hWnd As Long, _
ByVal hDC As Long) As Long
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
Private Declare Function GetPixel Lib "gdi32.dll" ( _
ByVal hDC As Long, _
ByVal nXPos As Long, _
ByVal nYPos As Long) As Long
Private Type POINTAPI
x As Long
y As Long
End Type
Dim DC As Long
Private Sub Form_Load()
DC = GetDC(0)
Timer1.Interval = 200
End Sub
Private Sub Form_Unload(Cancel As Integer)
ReleaseDC 0, DC
End Sub
Private Sub Timer1_Timer()
Dim MyMouse As POINTAPI
GetCursorPos MyMouse
Me.Label1.Caption = MyMouse.x
Me.Label2.Caption = MyMouse.y
Me.Label3.Caption = GetPixel(DC, MyMouse.x, MyMouse.y)
Me.Label3.BackColor = Me.Label3.Caption
End Sub | |
| Sie sind nicht angemeldet! Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.
Einloggen | Neu registrieren |
|
|
vb@rchiv CD Vol.6 vb@rchiv Vol.6
Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
Online-Update-Funktion Entwickler-Vollversionen u.v.m.Jetzt zugreifen Tipp des Monats Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|
|
|
Copyright ©2000-2024 vb@rchiv Dieter Otter Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.
Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel
|
|