Deutsch
Forum

Was sind native Funktionen?

 
- Seite 1 -



Weil du immer noch nicht verständlich erklärt hast, was nprocs sind.


Hallo Nico,

danke für den Hinweis und den Thread hier - leider kann ich damit aber nichts anfangen da ich nicht wissen kann, was Du nicht verstehst.

Vlt. kannst Du mir unter Beachtung der Dokumentation  [...]  sagen, was Dir unklar ist.


Inline-Assembler:
 
11.11.2009  
 



 
- Seite 7 -


Ah, Du meinst Du möchtest 1 wndProc für x Handles? Da hätte ich einen TIP:

iF, Beitrag=54810, Zeitpunkt=07.11.2009
Speichert man die Adresse der bisherigen WndProc z.B. per gwl_userData, kann sich die neue (eigene) WndProc auch ohne globale Variable behelfen.


Also statt global owp& oben in der wproc: var owp&=getWindowLong(wnd&,gwl_userData) wenn Du gwl_userdata vorher auch auf die Addr. der OldWindowProc setzt.
 
29.11.2009  
 




Nico
Madysa
Eigentlich bedarf meine WndProc nicht der Adresse der alten Proc (also, eigentlich schon, nur bin ich gar nich erst zu diesem Punkte vorgedrungen), sondern die 100 Buttonhandles. Denn die WndProc des Fensters muss die Handles der 100 Buttons kennen, um diese über SetWindowPos an die neuen Ausmaße anpassen zu können. Oder habe ich einen Denkfehler?
 
Nico Madysa
29.11.2009  
 



Brauchst beides, also nach create gwl_userdata auf alte wndproc-adresse setzen und auf die 100 Handles kommst Du innerhalb der wProc doch per Global:
KompilierenMarkierenSeparieren
dim m#,4*100
declare meinGlob&=addr(m#)

nproc wndproc

    parameters ...
    global meinGlob&,...

    if wm_siz...

        whileLoop 0,99,4

            settext(hWnd,str$( hier --->long(meinGlob&,loop)<----- ))
            //oder getByte(meinGlob&,loop)

        wend

    endif

    ...

endproc

 
29.11.2009  
 




Nico
Madysa
Ich weiß. Global ist ja genau das, wonach ich gesucht habe.
 
Nico Madysa
29.11.2009  
 



Schau mal:
KompilierenMarkierenSeparieren
 {$cleq}
#include compatible.inc
declare owp&,myHandles&
myHandles&=globalAlloc(gPTR,100*4)
cls
SetClassLong(hwnd,GCL_STYLE,GetClassLong(hWnd,GCL_STYLE) - CS_HREDRAW - CS_VREDRAW )
var xx&=width(hWnd)

whileLoop 0,24

    long myHandles&,loop*4=create("Button",hWnd,"Hallo "+str$(loop),0,loop*20,xx&,20)

wend

owp&=setWindowLong(hWnd,gwl_wndProc,procaddr(hwnd.wndProc,4))
waitinput
end

nProc hwnd.wndProc

    Parameters wnd&,msg&,wp&,lp&
    global owp&,myHandles&
    case msg&=wm_erasebkgnd or msg&=wm_paint : return 0

    if msg&=wm_sizing

        var xx&=width(hWnd)

        whileLoop 0,24

            setWindowPos(long(myHandles&,loop*4),0,0,loop*20,xx&,20,0)

        wend

    endif

    return callWindowProc(owp&,wnd&,msg&,wp&,lp&)

endproc


Wobei hier die Buttons selbst nicht gesubcl.. werden, nur das hWnd.
 
29.11.2009  
 




Nico
Madysa
Och iF, genau so wars doch gedacht und genau das habe ich auch beschrieben. Wieso tust du so, als läge hier ein Missverständnis vor?
 
Nico Madysa
29.11.2009  
 



Fehlt noch was?

Übrigens hier wohl besser if msg&=wm_sizing or msg&=wm_size
 
29.11.2009  
 




Nico
Madysa
Ja, ich brauche ganz dringend die Arkustangensfunktion. Per Taylorentwicklung kriege ich die nur im Bereich von -Pi/2 bis +Pi/2 angenähert.

PS: Wieso WM_SIZING? Die Buttons sollen doch erst angepasst werden, wenn denn das Fenster neugezeichnet wird.
 
Nico Madysa
29.11.2009  
 




Nico
Madysa
Ah, habe doch noch eine recht gute Näherung gefunden! Wikipädia sei Dank!
 
Nico Madysa
29.11.2009  
 



Ich hab jetzt *schleim* Tan eingebaut, könntest Du wichtige Funktionen per NProc zeigen, die ich in den Sprachschatz aufnehmen solle *bettel*? Ich möchte schon gerne neben den aus XProfan bekannten Funktionen möglichst viele hilfreiche Funktionen aufnehmen - was diese wiederum auch beschleunigt. Bitte sei der Mathematikbeauftragte nativer Funktionen.

Sollten Konstanten wie
KompilierenMarkierenSeparieren
const myPI=3.1415926535897932384626433832795//pi() gibts eh
const my2PI=6.2831853071795862
const pi180=0.0174532925199433
const halfPi=1.5707963267948966192313216916398
in den Sprachschatz aufgenommen werden? (Wenn ja, unter welcher Bezeichnung?!)
 
30.11.2009  
 




Nico
Madysa
Hehe, siehe unter "Updates/Anmerkungen"; tan war nicht gewünscht, sondern arctan.
Den Tangens kann man über sin() und cos() ausdrücken, den Arkustangens (Umkehrfunktion um wieder nen Winkel rauszukriegen) leider nicht. Dafür kann man die anderen beiden Arkusfunktionen (arcsin und arccos) mit arctan() umschreiben.

Was die Konstanten angeht, bin ich mir nicht sicher -- ich denke nicht, dass fertige soooo viel schneller sind als wenn man Pi() einfach mit 2, bzw. 0,5 malnimmt. Wenn man die Math.inc hingegen in NProcs übersetzte, dann könnten die natürlich rein. *Idee-hab*
 
Nico Madysa
30.11.2009  
 




Nico
Madysa
Das hier wäre noch ganz nützlich:
KompilierenMarkierenSeparieren
EDIT: Abs() für Floatwerte brauche ich auch gerade.
 
Nico Madysa
30.11.2009  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

39.062 Betrachtungen

Unbenanntvor 0 min.
p.specht15.11.2018
Ernst02.07.2016
funkheld11.04.2016
HofK26.01.2016
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie