| |
|
|
- Page 1 - |
|
| Hör often such a thing How 1000 Buttonhandle in Arrays and frägt these then in the Hauptschleife with mouseouver and clicked ex.
For this, time one hint How I something like manage would without Loop, means explicit performant. CompileMarkSeparation the whole can itself discretionary improve,- and each possible Check so to assimilate. but not simply the Buttonhandle in that gänzlich unbenutzte h To pack could one too createbutton in a function Trash redirecting trash(createbutton(hwnd,knop+st$(i),x,y,40,10)). function trash could a list with the Handles fill and at terminate the Program could one these list for Destroywindows benefit. etc... the against make I u.a. in the Source of okrea [...] to. |
|
|
| |
|
|
|
| |
|
- Page 1 - |
|
Frank Abbing | in the Context is Get/SetWindowLong with GWL_ID or GWL_USERDATA interestingly. Anhand of/ one this Speicherplätze can each Control recognized go, without any Umwege and probably yet faster. I personally would this lane weg. |
|
|
| |
|
|
|
| @Jörg: Rolf would warscheinlich sooner that here interested: [...] (exe anhängig)
@Frank: naturally I had too on gwl_userdata virtual. herewith would it too possible in/by gwl_userdata against the lever one further Controls abzuspeichern which against yet plenty More data carry could. (z.B. ne ListBox)
I had whom detour chosen there this too so a couple xprofansche Problemfälle demonstrating and shows the it for some releases vlt. vorgefertigte Native (in XProfan installed) Solutions give ought to.
After gwl_userdata would the so looks: CompileMarkSeparation//Version:0.0.1
{$cleq}
const maxNumObjects=1000
set(ErrorLevel,0)
lm_{;return if(getasynckeystate(1)==0,false,true);}// lm steht für leftMouse(pressed)
declare objekt.H&[maxNumObjects],
objekt.X&[maxNumObjects],
objekt.Y&[maxNumObjects],
objekt.XX&[maxNumObjects],
objekt.YY&[maxNumObjects],
objekt.T$[maxNumObjects]
windowstyle 8 | 16 | 512
cls
//decimals 0 damit das unten genutzte str$ keine Kommazahlen auswirft
decimals 0
long x,
y,
h,
i,
//hier erstellen wir die buttons mal, auch wenn Du die sicher anders erzeugst:
usefont MS Sans Serif,10,0,0,0,0
setdialogfont 1
sendmessage(hwnd,wm_setredraw,0,0)//damits controlerstellen schneller geht anzeige abschalten
for y:=0 to height(hwnd) step 15 do begin
for x:=0 to width(hwnd) step 40 do begin
//handle im Array merken - tust du ja auch
h=createstatic(hwnd,str$(i),x,y,39,14)
// hier trick 15 wir merken uns die ID auch im string und nutzen eine Helferfunktion
i+
objekt.pushID(i,h,x,y,39,14)
/* natürlich ist der Umweg über long h hier unnötig, man könnte auch direkt
objekt.pushID(i,createbutton(hwnd,knop+str$(i),x,y,40,10))
schreiben, wäre aber net so anschaulich */
end
end
sendmessage(hwnd,wm_setredraw,1,0)//nun wieder alles anzeigen und neuzeichnen
invalidateRect(hwnd,0,0)
updatewindow(hwnd)
//Hauptereignisschleife
usermessages wm_close,wm_lbuttondown,wm_keydown
do {
getmessage
select umessage//select Konstrukt damit umessage auch nur einmal geprüft wird und sich - warum auch immer - später ruhig ändern könnte ohne das wir falsch reagieren würden
caseof wm_close:break
caseof wm_lbuttondown:klickProc()// hier in der bildlich benannten Klickprog schauen wir ob ein Control verschoben werden möchte
caseof wm_keydown:keybProc()
endselect
}
end//ende
objekt.pushID(long n,h,x,y,xx,yy){
objekt.H&[n]=h
objekt.X&[n]=x
objekt.Y&[n]=y
objekt.XX&[n]=xx
objekt.YY&[n]=yy
objekt.T$[n]=BLUB von +str$(n)
setwindowlong(h,gwl_userdata,n)
}
objekt.h2ID(long h){//der rückweg über gwl_userdata
return getwindowlong(h,gwl_userdata)
}
objekt.moveTo(long item,_dx,_dy){
long h=objekt.h&[item]
objekt.x&[item]=objekt.x&[item]+_dx
objekt.y&[item]=objekt.y&[item]+_dy
setwindowpos h=objekt.x&[item],objekt.y&[item] - objekt.xx&[item],objekt.yy&[item];0
invalidaterect(h,0,0)
updatewindow(h)
}
keybProc{
//wurde eines unserer Objekte bemaust? Holen wir uns erstmal das Handle des Controls:
long h=childWindowFromPoint(hwnd,mousex,mousey)// control unter maus?
long item=objekt.h2ID(h)//hiermit haben wir jetzt in H die ArrayItemID
case item<1 : return false/*kein static geklickt?*/
case getasynckeystate(37)<0 : objekt.moveTo(item,-2,0)
case getasynckeystate(38)<0 : objekt.moveTo(item,0,-2)
case getasynckeystate(39)<0 : objekt.moveTo(item,2,0)
case getasynckeystate(40)<0 : objekt.moveTo(item,0,2)
//erstmal umessage per dulcoiF löschen - wichtig! @ Roland: umessage löschen können!
settimer 1;waitinput;killtimer
//weiter:
}
klickProc{
//erstmal umessage per dulcoiF löschen - wichtig! @ Roland: umessage löschen können!
settimer 1;waitinput;killtimer
//weiter:
//wurde eines unserer Objekte angeklickt? Holen wir uns erstmal das Handle des geklickten Controls:
long h=childWindowFromPoint(hwnd,mousex,mousey)// control unter maus?
long item=objekt.h2ID(h)//hiermit haben wir jetzt in H die ArrayItemID
case item<1 : return false/*kein static geklickt?*/
settext hwnd,objekt.t$[item]
//objekt nach vorne holen in der anzeigehirarchie
destroywindow(h)
h=createstatic(hwnd,str$(item-1),objekt.x&[item],objekt.y&[item],39,14)
objekt.h&[item]=h
setwindowlong(h,gwl_userdata,item)
//verschiebezeugs
long xd:=mousex-objekt.x&[item],yd:=mousey-objekt.y&[item]//xy differenz vom maus zu objektUrsprung merken
while lm_() {
objekt.x&[item]=(mousex-xd)
objekt.y&[item]=(mousey-yd)
setwindowpos h=objekt.x&[item],objekt.y&[item] - objekt.xx&[item],objekt.yy&[item];0
invalidaterect(h,0,0)
updatewindow(h)
}
return item
}
|
|
|
| |
|
|
|
Rolf Koch | I know the but already. Aussderdem is by the geniale Umsetzung of Andreas Miethe still a ansehliche Control drin |
|
|
| |
|
|
| |
|
- Page 2 - |
|
|
| The but already something hakelig is had admit. |
|
|
| |
|
|
|
Rolf Koch | no iF Butterweich. ^^ no Real. Hackelig only, if one under Setup on the Raster report chosen has. strain again gekuckt. Blubbbbb How cream without To mucken! |
|
|
| |
|
|
|
| Ne I mean it reacted not really correctly. - z.B. if one with the mouse simply one Control wegdraggen would like. one must first Mark, then can moving/skalieren. somehow is always one step To plenty necessary. (having I always bemängelt ^^) |
|
|
| |
|
|
|
Rolf Koch | Jo persuated must I again ran ^^ Info: Gehts here circa Roc? *lol* |
|
|
| |
|
|
|
| now already |
|
|
| |
|
|
|
GDL | super, then helped my Posting with RGH still whom. If so did i now a little bit behind it coming as goes, in my Source bekomm I not on The row.
Hello Georg |
|
|
| |
|
|
|
GDL | Hi
iF his Eingangsposting runs by me under XProfan 11 not any more. it'll no ausgewähltes Objekt in the Fenstertitelseite More displayed.
likes the someone with XProfan 11 test times.thanks.
Hello Georg |
|
|
| |
|
|
|
| Teste again, The Quelltextvorschau hats verbockt wg. Umbauten. |
|
|
| |
|
|
|
GDL | |
|
| |
|
|