| |
|
|
- 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:
|
|
|
| |
|
|
| |
|
- 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. |
|
|
| |
|
|
|
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? |
|
|
| |
|
|
|
| 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 |
|
|
| |
|
|
|
Nico Madysa | Ich weiß. Global ist ja genau das, wonach ich gesucht habe. |
|
|
| |
|
|
|
| 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. |
|
|
| |
|
|
|
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? |
|
|
| |
|
|
|
| Fehlt noch was?
Übrigens hier wohl besser if msg&=wm_sizing or msg&=wm_size |
|
|
| |
|
|
|
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 | Ah, habe doch noch eine recht gute Näherung gefunden! Wikipädia sei Dank! |
|
|
| |
|
|
|
| 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 in den Sprachschatz aufgenommen werden? (Wenn ja, unter welcher Bezeichnung?!) |
|
|
| |
|
|
|
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 | |
|
| |
|
|