Wie kann ich den Mauszeiger im Hauptfenster sichtbar machen

Anfängerfragen zum Programmieren mit PureBasic.
Derb
Beiträge: 7
Registriert: 18.12.2005 20:25

Wie kann ich den Mauszeiger im Hauptfenster sichtbar machen

Beitrag von Derb »

Code: Alles auswählen

; --- Grundeinstellungen ---
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Error", "Can't open the sprite system", 0)
  End
EndIf
; --- Grundeinstellungen ---


; --- Erstelle HaupFenster ---
If OpenWindow(0,10,10,1000,800,"Menü und Toolbar",#PB_Window_SystemMenu)


; --- Erstelle Arbeits Bildschirm --- 
If OpenWindowedScreen(WindowID(0), 20, 20, 500, 500, 0, 0, 0)
  LoadSprite(0, "Data/PureBasic.bmp", 0)
  CopySprite(0,1,0)
Else
  MessageRequester("Error", "Can't open windowed screen!", 0)
  End
EndIf
; --- Erstelle Arbeits Bildschirm --- 


; --- Erstelle Sprites ---
x = 100
y = 100
LoadSprite(0, "Data/PureBasic.bmp", 0) 
; --- Erstelle Sprites ---


; --- Erstelle eine GadgetListe ---
If UseGadgetList(WindowID(0))
  TextGadget(1,550,60,210,20,"",#PB_Text_Center|#PB_Text_Border)
  ButtonGadget(2,550,100,150,20,"Programm Ende")
EndIf
; --- Erstelle eine Gadget Liste ---


; --- Erstelle eine MenüListe ---
If CreateMenu(0, WindowID(0))
  MenuTitle("Datei")
  MenuItem( 1, "Neu")
  MenuItem( 2, "Laden")
  MenuBar()
  MenuItem( 3, "Speichern")
  MenuTitle("Drucken")
  MenuItem(4,"Drucken")
  MenuTitle("Ende")
  MenuItem(5, "Ende")
EndIf
; --- Erstelle eine MenüListe ---


; --- Erstelle eine ToolBar ---
If CreateToolBar(0, WindowID(0))
  ToolBarStandardButton(1, #PB_ToolBarIcon_New)
  ToolBarStandardButton(2, #PB_ToolBarIcon_Open)
  ToolBarStandardButton(3, #PB_ToolBarIcon_Save)
  ToolBarSeparator()
  ToolBarStandardButton(4, #PB_ToolBarIcon_Print)
EndIf
; --- Erstelle eine ToolBar ---


; --- Erstelle die Status Bar im Haupt Fenster ---
If CreateStatusBar(0,WindowID(0))
  AddStatusBarField(#PB_Ignore )
EndIf
; --- Erstelle die Status Bar im Haupt Fenster ---


; --- Abfrage Schleife ---
Repeat
  EventID = WaitWindowEvent()

  If EventID = #PB_Event_CloseWindow 
    Quit = 1
  EndIf

    If EventID = #PB_Event_Menu
  If EventMenu()=1
    SetGadgetText(1,"Neu")

    StatusBarText(0,0,"Neu !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=2
    SetGadgetText(1,"Laden")

    StatusBarText(0,0,"Laden !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=3
    SetGadgetText(1,"Speichern")

    StatusBarText(0,0,"Speichern !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=4
    SetGadgetText(1,"Drucken")

    StatusBarText(0,0,"Drucken !",#PB_StatusBar_Center )
  EndIf 
  If EventMenu()=5
    MessageRequester("","Programmende!",0)
    End
  EndIf 
EndIf


If EventID=#PB_Event_Gadget
  If EventGadget()=2
    Quit=1
  EndIf
EndIf






  FlipBuffers()                        ; Flip for DoubleBuffering
  ClearScreen(RGB(0,0,0))                   ; CleanScreen, black

  ExamineKeyboard()
  ExamineMouse()                      
          
  x = MouseX()                         ; Returns actual x pos of our mouse
  y = MouseY()                         ; Returns actual y pos of our mouse
  
  x+MouseWheel()*10
  
  If MouseButton(#PB_MouseButton_Right)
    MouseLocate(400, 300)
  EndIf

  DisplaySprite(0, x-SpriteWidth(0)/2, y-SpriteHeight(0)/2)












Until Quit=1 Or KeyboardPushed(#PB_Key_Escape)
; --- Abfrage Schleife ---


EndIf
; --- Erstelle HaupFenster ---


End



Nehmen wir mal diesen Code

Ich möchte das mein Maus Zeiger auf dem ganzen Fenster zu sehen ist und auch zu benutzen werden kann, sobald er jedoch in den WindowedScreen fährt soll das Sprite bewegt werden...


1000 Dank
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

verzichte auf die DX-Mouselib, nimm WindowMouseX/Y um die Koordinaten zu ermitteln.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Für den Anfang sollte das helfen. Die Mauskoordinaten musst du noch
etwas anpassen. Ebenso die rechte Maustaste einbauen, die ich testhalber
raus genommen hatte.

Code: Alles auswählen

; --- Grundeinstellungen ---
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
  MessageRequester("Error", "Can't open the sprite system", 0)
  End
EndIf
; --- Grundeinstellungen ---


; --- Erstelle HaupFenster ---
If OpenWindow(0,10,10,1000,800,"Menü und Toolbar",#PB_Window_SystemMenu)


; --- Erstelle Arbeits Bildschirm ---
If OpenWindowedScreen(WindowID(0), 20, 20, 500, 500, 0, 0, 0)
  LoadSprite(0, "Data\PureBasic.bmp", 0)
  CopySprite(0,1,0)
Else
  MessageRequester("Error", "Can't open windowed screen!", 0)
  End
EndIf
; --- Erstelle Arbeits Bildschirm ---


; --- Erstelle Sprites ---
x = 100
y = 100
LoadSprite(0, "Data/PureBasic.bmp", 0)
; --- Erstelle Sprites ---


; --- Erstelle eine GadgetListe ---
If UseGadgetList(WindowID(0))
  TextGadget(1,550,60,210,20,"",#PB_Text_Center|#PB_Text_Border)
  ButtonGadget(2,550,100,150,20,"Programm Ende")
EndIf
; --- Erstelle eine Gadget Liste ---


; --- Erstelle eine MenüListe ---
If CreateMenu(0, WindowID(0))
  MenuTitle("Datei")
  MenuItem( 1, "Neu")
  MenuItem( 2, "Laden")
  MenuBar()
  MenuItem( 3, "Speichern")
  MenuTitle("Drucken")
  MenuItem(4,"Drucken")
  MenuTitle("Ende")
  MenuItem(5, "Ende")
EndIf
; --- Erstelle eine MenüListe ---


; --- Erstelle eine ToolBar ---
If CreateToolBar(0, WindowID(0))
  ToolBarStandardButton(1, #PB_ToolBarIcon_New)
  ToolBarStandardButton(2, #PB_ToolBarIcon_Open)
  ToolBarStandardButton(3, #PB_ToolBarIcon_Save)
  ToolBarSeparator()
  ToolBarStandardButton(4, #PB_ToolBarIcon_Print)
EndIf
; --- Erstelle eine ToolBar ---


; --- Erstelle die Status Bar im Haupt Fenster ---
If CreateStatusBar(0,WindowID(0))
  AddStatusBarField(#PB_Ignore )
EndIf
; --- Erstelle die Status Bar im Haupt Fenster ---


; --- Abfrage Schleife ---
Repeat
  EventID = WaitWindowEvent()
  
  If EventID = #PB_Event_CloseWindow
    Quit = 1
  EndIf
  

    If EventID = #PB_Event_Menu
  If EventMenu()=1
    SetGadgetText(1,"Neu")

    StatusBarText(0,0,"Neu !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=2
    SetGadgetText(1,"Laden")

    StatusBarText(0,0,"Laden !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=3
    SetGadgetText(1,"Speichern")

    StatusBarText(0,0,"Speichern !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=4
    SetGadgetText(1,"Drucken")

    StatusBarText(0,0,"Drucken !",#PB_StatusBar_Center )
  EndIf
  If EventMenu()=5
    MessageRequester("","Programmende!",0)
    End
  EndIf
EndIf


If EventID=#PB_Event_Gadget
  If EventGadget()=2
    Quit=1
  EndIf
  
EndIf

  FlipBuffers()     
ExamineKeyboard()
  If WindowMouseY(0)>=20 And WindowMouseX(0)<=500 And WindowMouseY(0)>=20 And WindowMouseY(0)<=500
                     ; Flip for DoubleBuffering
  
  ClearScreen(RGB(0,0,0))                   ; CleanScreen, black

  
  ExamineMouse()    
  ReleaseMouse(0)
  x = MouseX()                         ; Returns actual x pos of our mouse
  y = MouseY()                         ; Returns actual y pos of our mouse
 
  x+MouseWheel()*10
   
    DisplaySprite(0, x-SpriteWidth(0)/2, y-SpriteHeight(0)/2)
  Else
    ReleaseMouse(1)
  EndIf

 


Until Quit=1 Or KeyboardPushed(#PB_Key_Escape)
; --- Abfrage Schleife ---


EndIf
; --- Erstelle HaupFenster ---


End
Bild
Win11 Pro 64-Bit, PB_6.11b1
Derb
Beiträge: 7
Registriert: 18.12.2005 20:25

Danke

Beitrag von Derb »

Danke für den Tipp ... wie immer liegt der Fehler im Detail...
Antworten