Abfrage des Mausklicks

Anfängerfragen zum Programmieren mit PureBasic.
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 »

Ich, im Moment nur so aus Spass, da ich noch mit meiner Hardware
nicht soweit bin. Damit meine ich z.B. CNC, Messen, Regeln und Steuern.
Für all dieses habe ich spezielle Module, wie SMC-800 plus Controller,
2 verschiedene USB-Module von IVT und LabJack als auch ein IO-USB-Modul von Meilhaus.
Eigene Wrapper für diese DLL's zu schreiben ist
auch sehr interessant.
Daher interessiert mich auch sehr das Erstellen von Applikationen, die mittels API in Windows-Fenstern ihre Grafiken erzeugen können, was
man leider in PB alles von Hand erledigen muss.
Zwar hätte ich es einfacher in GB32 (32-Bit GFA-Basic), aber dieser Compiler wird zum einen nicht mehr weiterentwickelt und aktualisiert und
die fertigen Programme sind um ein Vielfaches größer als die von PB.
Mit Powerbasic 8 hatte ich auch schon angefangen, nur ist das komplett
in englisch, was zudem das Verständnis nicht gerade leicht macht.

Zwischendurch helfe ich Sharkpeter mit aus. Das wäre z.B. PNG-Shot und
einigen anderen PB-Programmen.

Grüße Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Hallo Falko

Beitrag von GreyEnt »

Vielleicht kann ich ein wenig nützlich sein.
Ich komme aus der Branche CNC Drehen; Fräsen
Ich selber stehe nicht an den Maschinen bin aber der Haus und Hof Zeichner.

MfG
Dieter
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 »

Danke Dieter, Dein Angebot nehme ich gerne an, wenn ich mal Fragen
dazu habe. (Also Technischer Zeichner. Daher CAD :allright: )

Also wenn wir dir weiterhelfen können, ruhig Fragen stellen.
Mit der Zeit hast du es auch schnell raus, wie und was man alles in PB
machen kann :allright: .

Viele Beispielsources findest du bei Andrè unter www.purearea.net.
Am besten kann man sich das CodeArchive komplett herunterladen.
http://www.purearea.net/pb/download/Cod ... review.zip

Kannst ja auch mal auf meiner Homepage gucken, wenn es interessiert.
dort habe ich auch einige Kleinigkeiten incl. Sources zur Hardware gemacht. Die Sources sind aber noch soweit unter PB 3.X. Mal sehen.

www.falko-pure.de

Kommt aber bald noch was in PB4 drauf ;)


Grüße Falko
Bild
Win11 Pro 64-Bit, PB_6.11b1
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 »

Hier noch ein letztes Beispiel zum Ausprobieren in PB4:
Linien, Farbe, Strichstärke und bei Pixel von 0 und 1 auch
verschiedene Linienformen ( gepunktet, Strichpunkt usw.)

Für weitere und speziellere Sachen wäre vielleicht das GDI+
zu gebrauchen, welches gerade im englischen Forum mit
vielen Beispielen von Flype gepostet ist bzw. war:
http://www.purebasic.fr/english/viewtop ... highlight=
Direktlink: http://purebasic.myftp.org/?filename=fi ... diplus.zip

Zwar ist die GDI+ von Andreas Miethe in einer älteren Version im
Forumsarchiv mit Beispielen gepostet, die noch unter den älteren
PB-versionen laufen, aber von Flype wurde alles auf PB4 optimiert.
In XP ist die Gdiplus.dll nicht nötig, aber für alle anderen für OS-Versionen
kann man sich diese herunterladen. Ist aber ebenfalls bei Flype
Sourcen vorhanden.

Für Windowsgrafiken und Applikationen, eine interessante Möglichkeit im
Vergleich zu 2D-Draw, und Screens. :allright:

Code: Alles auswählen

;Test Source painting on Windows PB4

Procedure.w ScreenWidth ()
  ProcedureReturn GetSystemMetrics_ (#SM_CXSCREEN)
EndProcedure
;
Procedure.w ScreenHeight ()
  ProcedureReturn GetSystemMetrics_ (#SM_CYSCREEN)
EndProcedure
;
Procedure CopyWindow (fromWindow, x, y)

  width = ScreenWidth ()
  height = ScreenHeight ()
  
  fromDC = GetWindowDC_ (fromWindow)
      toDC = StartDrawing (ImageOutput (0))
          BitBlt_ (toDC, 0,-49, WindowWidth(0), WindowHeight(0)+49, fromDC, x, y, #SRCCOPY)
      StopDrawing ()
  ReleaseDC_ (fromWindow, fromDC)

EndProcedure
;
Procedure Lin(x,y,x1,y1,Width,Color,Style) 
   hDC=GetDC_(WindowID(0)) 
   pen=CreatePen_(Style,Width,color)  
   hPenOld=SelectObject_(hDC,pen) 
   MoveToEx_(hDC,x,y,0):LineTo_(hDC,x1,y1) 
   DeleteObject_(pen) 
   DeleteObject_(hPenOld) 
EndProcedure 

Procedure Styles(); Nur bei einer Dicke 0 und 1
SetGadgetState(0,GetGadgetState(0)) 
     Style_$=GetGadgetText(0)
     If Style_$="#PS_SOLID"
        Style=#PS_SOLID
     ElseIf Style_$="#PS_DASH"
        Style=#PS_DASH   
     ElseIf Style_$="#PS_DOT"
        Style=#PS_DOT 
     ElseIf Style_$="#PS_DASH"
        Style=#PS_DASH 
     ElseIf Style_$="#PS_DASHDOT"
        Style=#PS_DASHDOT    
     ElseIf Style_$="#PS_DASHDOTDOT"
        Style=#PS_DASHDOTDOT
     EndIf 
     ProcedureReturn Style 
 EndProcedure
  
  
_X=GetSystemMetrics_(#SM_CXSCREEN)-8 : _Y=GetSystemMetrics_(#SM_CYSCREEN)-68 


OpenWindow(0,0,0,_X,_Y,"",#PB_Window_SystemMenu)
If CreateGadgetList(WindowID(0))
  ComboBoxGadget(0, _X-100, 0, 100, 100)
  AddGadgetItem(0, -1, "#PS_SOLID")
  AddGadgetItem(0, -1, "#PS_DASH")
  AddGadgetItem(0, -1, "#PS_DOT")
  AddGadgetItem(0, -1, "#PS_DASHDOT")
  AddGadgetItem(0, -1, "#PS_DASHDOTDOT")
  SetGadgetState(0,0)
EndIf 
  
  
If CreateMenu(0, WindowID(0))
    MenuTitle("Einstellungen")
        MenuItem( 1, "Linienstärke")
         MenuItem( 2, "Linienfarbe")
     CloseSubMenu()
      MenuBar()
      MenuItem( 3, "&Quit")
EndIf
CreateImage (0, WindowWidth(0) ,WindowHeight(0) )
CopyWindow (WindowID(0),0,0)
; 
Set=0
Style=#PS_SOLID ; Andere Linienstile sind: #PS_DASH	, #PS_DOT	, #PS_DASHDOT, #PS_DASHDOTDOT
Repeat 
event = WaitWindowEvent()
    
Select event
  Case  #PB_Event_Gadget
   
   
     
   Case #PB_Event_Menu
             Select EventMenu()  
              Case 1
                Ld=Val(InputRequester("Strichstärke eingeben", "Bitte geben sie die Lininendicke ein","5"))
              Case 2
                Lf=Farbe = ColorRequester()
              Case 3
                End
             EndSelect
   
             
   Case #PB_Event_MoveWindow 
            StartDrawing (WindowOutput (0))
            DrawImage (ImageID (0), -4, 0)
            StopDrawing ()
   Case  #WM_LBUTTONDOWN 
            x1 = WindowMouseX(0) 
            y1 = WindowMouseY(0)
            Set=1
   Case #WM_LBUTTONUP
            If Set=1
              x2 = WindowMouseX(0) 
              y2 = WindowMouseY(0)
              lin(x1,y1,x2,y2,Ld,Lf,Styles())
              CopyWindow (WindowID(0),0,0)
              Set=0
            EndIf
EndSelect 
Until event = #PB_Event_CloseWindow 
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
GreyEnt
Beiträge: 376
Registriert: 20.07.2006 19:41

Hi Falko.

Beitrag von GreyEnt »

Bin gerade auf Arbeit und kann den Code nicht ausführen. So ein Shit.
Das mit der GDI muss ich mir mal angucken. hört sich gut an.

Hab an meinem Proggi auch wieder ein wenig gearbeitet.
Ist nun in PB 4.00 lauffähig. Die umstellung war nicht wirklich schwierig.
Nur das Linked Lists aufeinmal Global sein müssen das fand ich gemein.
Und divere Änderungen könnte man als schikane bezeichnen. :)

So dann bis später

MfG
Dieter
Antworten