Seite 2 von 13

Verfasst: 07.10.2006 20:06
von mardanny71
Zu:
http://www.purearea.net/pb/CodeArchiv/G ... ipboard.pb

erledigt:

Code: Alles auswählen

; English forum:http://www.purebasic.fr/english/viewtopic.php?p=35682
; Author: Freak
; Date: 26. August 2003 / 2006
; OS:Windows
; Demo:No

;----------------------------------------------------------------------------------------------------

Enumeration 1 
  #OLECMDID_OPEN          
  #OLECMDID_NEW        
  #OLECMDID_SAVE          
  #OLECMDID_SAVEAS            
  #OLECMDID_SAVECOPYAS    
  #OLECMDID_PRINT        
  #OLECMDID_PRINTPREVIEW        
  #OLECMDID_PAGESETUP        
  #OLECMDID_SPELL            
  #OLECMDID_PROPERTIES  
  #OLECMDID_CUT          
  #OLECMDID_COPY        
  #OLECMDID_PASTE            
  #OLECMDID_PASTESPECIAL    
  #OLECMDID_UNDO            
  #OLECMDID_REDO          
  #OLECMDID_SELECTALL        
  #OLECMDID_CLEARSELECTION 
  #OLECMDID_ZOOM            
  #OLECMDID_GETZOOMRANGE      
  #OLECMDID_UPDATECOMMANDS  
  #OLECMDID_REFRESH            
  #OLECMDID_STOP              
  #OLECMDID_HIDETOOLBARS      
  #OLECMDID_SETPROGRESSMAX    
  #OLECMDID_SETPROGRESSPOS  
  #OLECMDID_SETPROGRESSTEXT    
  #OLECMDID_SETTITLE          
  #OLECMDID_SETDOWNLOADSTATE  
  #OLECMDID_STOPDOWNLOAD      
EndEnumeration 

Enumeration 0 
  #OLECMDEXECOPT_DODEFAULT      
  #OLECMDEXECOPT_PROMPTUSER        
  #OLECMDEXECOPT_DONTPROMPTUSER    
  #OLECMDEXECOPT_SHOWHELP        
EndEnumeration 

; ------------------------------------------------------------------------------------------ 

; Now the code 

#WebGadget = 1 
#Button = 2 

OpenWindow(0, 0, 0, 800, 600,"WebBrowser" ,#PB_Window_ScreenCentered|#PB_Window_SystemMenu ) 

CreateGadgetList(WindowID(0)) 

  WebGadget(#WebGadget, 10, 40, 780, 550, "www.purebasic.com") 
  ButtonGadget(#Button, 10, 10, 60, 20, "Copy") 

; Fred the genius stored the Interface pointer to IWebBrowser2 in the DATA 
; member of the windowstructure of the WebGadget containerwindow, so we can get 
; that easily:
 
WebObject.IWebBrowser2 = GetWindowLong_(GadgetID(#WebGadget), #GWL_USERDATA) 

Repeat 
  Event = WaitWindowEvent() 
  If Event = #PB_Event_Gadget And EventGadget() = #Button 
    
    ; Now here's the actual copy thing, not that complicated... 
    WebObject\ExecWB(#OLECMDID_COPY, #OLECMDEXECOPT_DONTPROMPTUSER, 0, 0) 
    
    ; little test: 
    MessageRequester("", GetClipboardText(), 0) 
    
  EndIf 
Until Event = #PB_Event_CloseWindow 

End
Zu:
PanelGadgetwithImages.pb

Habe noch immer keinen Einfall. :roll:
Man könnte die Icon.dll nehmen - aber der Code würde dann am Thema vorbeigehen.

Höchstens man setzt ein paar Icons ins Code Archiv.

Gruß
mardanny71

Verfasst: 08.10.2006 15:48
von Andre
Habe den ersten Post jetzt auch um die Ergebnisse der Konvertierung vom gesamten "Internet & Co." Ordner erweitert.


@mardanny71:
"PanelGadgetwithImages.pb" ist erledigt, ich nutze hierfür einfach Icons, die bereits im CodeArchiv vorhanden sind.

Das konvertierte Beispiel "WebGadget_Use_Clipboard.pb" läuft bei mir leider nur insofern, dass das WebGadget die PureBasic.com-Seite angezeigt wird, jedoch bei "Copy" nicht der Inhalt der Webseite in die Zwischenablage kopiert wird. In der Zwischenablage befindet sich bei mir dann immer noch der letzte Sourcecode.
Geht das Beispiel ggf. bei anderen?

Verfasst: 11.10.2006 23:19
von Andre
Kurze Zwischeninfo: habe jetzt auch das englische Forum in die Konvertierung einbezogen.

Siehe hier: http://www.purebasic.fr/english/viewtop ... 1&start=30

Dare hat bisher folgende Codes konvertiert:
http://www.purearea.net/pb/CodeArchiv/G ... ktypes1.pb
http://www.purearea.net/pb/CodeArchiv/G ... ktypes2.pb
(bei diesen beiden Codes geht jedoch der Doppelklick trotzdem noch nicht => Ideen?)

http://www.purearea.net/pb/CodeArchiv/G ... nctions.pb
http://www.purearea.net/pb/CodeArchiv/G ... ipboard.pb

Verfasst: 12.10.2006 22:47
von HeX0R
Andre hat geschrieben:
(bei diesen beiden Codes geht jedoch der Doppelklick trotzdem noch nicht => Ideen?)
Kann dir nur eine API-Lösung anbieten:

Code: Alles auswählen

; German forum:
; Author: Danilo
; Date: 02. April 2003

; Zeigt wie man Links-, Rechts-, DoppelLinks- und DoppelRechts-Klicks für das ButtonGadget() abfragt.
; Nützlich z.B. wenn man ein Popup-Menu nach RechtsClick auf einen Button anzeigen will.
; Diese Events wurden in 3.62 im Zusammenhang mit AdvancedGadgetEvents() geändert.
OpenWindow(0,0,0,170,106,"Button Events",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
	CreateGadgetList(WindowID(0))
	ButtonGadget(1,10,10,150,20,"Links-Klick")
	ButtonGadget(2,10,32,150,20,"Rechts-Klick")
	ButtonGadget(3,10,54,150,20,"Doppel-Links-Klick")
	ButtonGadget(4,10,76,150,20,"Doppel-Rechts-Klick")
 
Procedure GetGadget(WindowID.l)
	Protected cursorpos.POINT
	
	GetCursorPos_(@cursorpos)
	MapWindowPoints_(0, WindowID(WindowID), cursorpos, 1)
	ProcedureReturn ChildWindowFromPoint_(WindowID(WindowID), cursorpos\x, cursorpos\y)
	
EndProcedure

Procedure Message(Gadget.l)
	MessageRequester("Button "+Str(Gadget),GetGadgetText(Gadget),0)
EndProcedure

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_CloseWindow
			End
		Case #WM_RBUTTONDOWN
			If GetGadget(0) = GadgetID(2)
				Message(2)
			EndIf
		Case #WM_RBUTTONDBLCLK
			If GetGadget(0) = GadgetID(4)
				Message(4)
			EndIf
		Case #WM_LBUTTONDBLCLK
			If GetGadget(0) = GadgetID(3)
				Message(3)
			EndIf
		Case #PB_Event_Gadget
			If EventGadget() = 1 And EventType() = #PB_EventType_LeftClick
				Message(1)
			EndIf
	EndSelect
ForEver
Das zweite finde ich irgendwie aber witzlos, da es ja explizit die Vorteile von AdvancedGagdetEvents() hervorheben will, was es bekanntlich nicht mehr gibt in PB4.
(Wieso eigentlich nicht :? )

Verfasst: 13.10.2006 21:40
von mardanny71
Andre' schrieb:
Das konvertierte Beispiel "WebGadget_Use_Clipboard.pb" läuft bei mir leider nur insofern, dass das WebGadget die PureBasic.com-Seite angezeigt wird, jedoch bei "Copy" nicht der Inhalt der Webseite in die Zwischenablage kopiert wird. In der Zwischenablage befindet sich bei mir dann immer noch der letzte Sourcecode.
Geht das Beispiel ggf. bei anderen?

Der Messegereqester dient nur der Anzeige des Inhaltes der Zwischenablage, wenn kein Text markiert ist.
Mit markieren und Kopieren bzw. markieren und Strg + v oder eben markieren und Butten "Copy"geht es.

Ich meine, so ist das gedacht.


Gruß
mardanny71

Verfasst: 15.10.2006 17:34
von Andre
Habe eben mit "Maths" und "Memory-Handling" zwei weitere konvertierte Verzeichnisse dem ersten Post hinzugefügt.

Damit gibts einiges weiteres "Futter" für alle Helfer.

Zuarbeiten hier im Thread oder auch sonstige Einsendungen werde ich später integrieren.

Verfasst: 30.10.2006 13:36
von Andre
Keine weiteren Helfer beim Konvertieren alter Codes? :roll:

Verfasst: 30.10.2006 15:19
von Deeem2031
http://www.purearea.net/pb/CodeArchiv/M ... raySize.pb

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=8267&highlight=
; Author: freak
; Date: 09. November 2003

; ArrayMemorySize() shows the real size in memory. 
Procedure.l ArrayMemorySize(*Array) 
  !push dword [p.p_Array] 
  !sub dword [Esp], 20
  !push dword 0 
  !push dword [PB_MemoryBase] 
  !call _HeapSize@12 
  ProcedureReturn 
  HeapSize_(0, 0, 0) ; make sure, _HeapSize@12 is defined 
EndProcedure 

; ArraySize() shows the total number of elements. 
Procedure ArraySize(*Array) 
  ProcedureReturn PeekL(*Array-8) 
EndProcedure 

Dim Array.l(50) 

Debug ArrayMemorySize(@Array())
Debug ArraySize(@Array())


; ExecutableFormat=
; EOF

Verfasst: 30.10.2006 15:36
von Deeem2031
http://www.purearea.net/pb/CodeArchiv/M ... lMemory.pb

(Der OrginalCode ist verbuggt!)

Code: Alles auswählen

; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1396&highlight=
; Author: Stefan Moebius
; Date: 18. June 2003


; Beispiel wie man Speicher füllen kann . 
; Example for filling memory

Procedure MemLFill(Adr,AnzBytes,Dword.l) 
!PUSH Edi
!CLD
!MOV Edi,[p.v_Adr+4] 
!MOV Eax,[p.v_Dword+4] 
!MOV Ecx,[p.v_AnzBytes+4] 
!SHR Ecx,2 
!REP STOSD 
!POP Edi
EndProcedure 


Procedure MemWFill(Adr,AnzBytes,Word.w)
!PUSH Edi
!CLD 
!MOV Edi,[p.v_Adr+4]

!MOV AX,[p.v_Word+4]
!SHL Eax,16 
!MOV AX,[p.v_Word+4]

!MOV Ecx,[p.v_AnzBytes+4] 
!MOV Edx, Ecx
!AND Edx, 0x00000003
!SHR Ecx,2

!REP STOSD 
!CMP Edx,0 
!JE EndeW 

!MOV Ecx,Edx 
!SHR Ecx,1 
!REP STOSW 
!EndeW: 
!POP Edi
EndProcedure 


Procedure MemBFill(Adr,AnzBytes,Byt.b) 
!PUSH Edi
!CLD 
!MOV Edi,[p.v_Adr+4]

!MOV AL,[p.v_Byt+4]
!SHL Eax,8 
!MOV AL,[p.v_Byt+4]
!SHL Eax,8 
!MOV AL,[p.v_Byt+4]
!SHL Eax,8 
!MOV AL,[p.v_Byt+4]

!MOV Ecx,[p.v_AnzBytes+4] 
!MOV Edx, Ecx
!AND Edx, 0x00000003
!SHR Ecx,2

!REP STOSD 
!CMP Edx,0 
!JE EndeB 

!MOV Ecx,Edx 
!REP STOSB 
!EndeB: 
!POP Edi
EndProcedure 





;#################################### TEST #################################### 
A$="####" 


MemBFill(@A$,4,$50) 
Debug A$ 
MemWFill(@A$,4,$7170) 
Debug A$ 
MemLFill(@A$,4,$80808080) 
Debug A$ 
Ich denke http://www.purearea.net/pb/CodeArchiv/M ... ve_Save.pb ist für PB4.0 nutzlos, weil das schon direkt in PB implementiert ist.

Verfasst: 30.10.2006 15:42
von Deeem2031
http://www.purearea.net/pb/CodeArchiv/M ... y/ATan2.pb

Code: Alles auswählen

; English forum: http://purebasic.myforums.net/viewtopic.php?t=7508&highlight=
; Author: jack
; Date: 12. September 2003

Procedure.f atan2(y.f,x.f) 
;atan2 procedure by Paul Dixon 
;http://www.powerbasic.com/support/forums/Forum4/HTML/009180.html 
;adapted to PureBasic by Jack 
! fld dword [p.v_y]     ;load y 
! fld dword [p.v_x]   ;load x 
! fpatan              ;get atan(y/x), put result in ST1. then pop stack to leave result in ST0 
! ftst                ;test ST0 (that's the top of stack) against zero 
! fstsw ax            ;put result of test into AX 
! sahf                ;get the FPU flags into the CPU flags 
! jae @@skip          ; if above or equal then skip the add 2*pi code 
! fldpi               ;get pi 
! fadd st1,st0        ;add pi to result 
! faddp st1,st0       ;and again, for 2pi, then pop the now unneeded pi from st0 
! @@skip: 
ProcedureReturn
EndProcedure 
 

; Example usage
x.f=-0.1 
y.f=-0.1 
z.f=57.29578*atan2(y,x) ;multiply by 57.29578 to get degrees
Debug z.f
So, ich hab meine Pflicht getan, nu sind die anderen wieder dran ;)