Buchempfehlung
Windows System Programming
Windows System Programming
Das Kompendium liefert viele interessante Informationen zur Windows-Programmierung auf Englisch. [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )


Code-Beispiel

Code-Beispiele » Maus und Tastatur

Neuer Mauscursor (WinAPI)

Lizenz:Erster Autor:Letzte Bearbeitung:
LGPLRedakteurVolta 11.12.2007

Diese Methode den Mauscursor zu ändern habe ich im englischen FBforum gefunden.
Es wird eine Funktion in die Windows Procedur des fbgfx-Fensters eingeklinkt, die WM_SETCURSOR bedient.
(Da müssen sich doch noch weitere Funktionen ändern lassen?)

#Include "windows.bi"
Dim As HWND hwnd
Dim Shared As HCURSOR WindowCursor
Dim Shared OldWinProc As WNDPROC

'method of jofers http://www.freebasic.net/forum/viewtopic.php?p=84419
'Diese Funktion wird in die Windowsprocedur eingeklinkt.
Function CursorWinProc(ByVal hwnd As HWND, ByVal uMsg As UINT, _
                       ByVal wParam As WPARAM, ByVal lParam As LPARAM) As LRESULT
  If uMsg = WM_SETCURSOR Then
    SetCursor(WindowCursor)
    Return 1
  End If

  Return CallWindowProc(OldWinProc, hwnd, uMsg, wParam, lParam)
End Function

Screen 18, 32
WindowTitle "MeinCursor"
hwnd = FindWindow(NULL, "MeinCursor")

' neuen Cursor festlegen

WindowCursor = LoadCursor(NULL, IDC_HAND )
'WindowCursor = LoadCursorFromFile("HandPoint.cur")

' Hook new window procedure
OldWinProc = Cast(WNDPROC, SetWindowLong(hwnd, GWL_WNDPROC, CLng(@CursorWinProc)))

Print "neuer Cursor!"
Do While InKey = ""
  Sleep 5
Loop

Print "kann auch gewechselt werden!"
WindowCursor = LoadCursor(NULL, IDC_CROSS)
Do While InKey = ""
  Sleep 5
Loop

' Restore original window procedure
SetWindowLong hwnd, GWL_WNDPROC, CLng(OldWinProc)
Cls
Print "alter Cursor!"

Sleep
End

Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 11.12.2007 von RedakteurVolta angelegt.
  • Die aktuellste Version wurde am 11.12.2007 von RedakteurVolta gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen