| |
|
|
Georg Teles | Guten soir,
suis dabei eines meiner Programme "upzudaten" et mir fiel maintenant seulement sur, pourquoi qui ButtonKlick quelquefois garnicht reagiert hatte:
là mon Programme (XTraBar) qui Buttons seulement beim Start défini, peux je aucun absoluten Variablen abfragen, là je pour Konfiguration alle 50 ou bien seulement 1 Button erstellt wird.
Verhalten: "normaler Button": %Message = 78 (klick) ou bien = 32 (wisch) SKControl erstellter Button: %Message = 272 (klick) ou bien = 32 (wisch)
= 78 / 272 treten sur, si on cet Buttons normal anklickt. = 32 tritt sur (beide Buttons betreffend), sobald on den Button anklickt (sans loszulassen) et dans un direction "wischt" sans cette trop sortir de et qui Bouton de la souris ensuite loslässt.
cela peux je mir halbwegs expliquer, si je qui Bedeutungen qui Messages dans qui folgenden liste anschaue...
32 = WM_SETCURSOR (wisch normaler Button UND SKConrtol Button) 78 = WM_NOTIFY (klick normaler Button) 272 = WM_COMMAND (klick SKControl Button)
mais...
cela Problem: qui obere Screenshot wurde sous Win10 geschossen.
Win XP, 7 et 8: einfacher Button: %Message = 78 ou bien = 32 (alors juste comment Win10) SKConrtol Button: %Message = 32 (toujours)
Eventuell hat cela quelque chose avec den Fensterobjekten et comment Windows cet behandelt zutun - je vermute, sous Win 10 volonté qui Aktionen ici besser ausgewertet ?
Solution: un Workarea hierzu habe je ici [...] eingestellt, quoi eh bien assez bien funktioniert.
Voir le texte source zum Screenshot dessus, hierfür nécessaire on qui SKControl:
$I SKControl.inc
declare hdll&
'Dll magasin & initialisieren
let hdll& = UseDll("SKControl.dll")
SKCtrl_InitDll()
Fenêtre Style 2+4+16+20+512
Fenêtre 200,200-500,600
Titre de la fenêtre "Test"
declare normalBmp#,hoverBmp#,clickedBmp#
dim normalBmp#,200
string normalBmp#,0 = (GETDIR $("@")+"\\1.bmp")
dim hoverBmp#,200
string hoverBmp#,0 = (GETDIR $("@")+"\\2.bmp")
dim clickedBmp#,200
string clickedBmp#,0 = (GETDIR $("@")+"\\3.bmp")
var b% = Créer("Button",%hWnd,"einfacher Button",250,20,200,40)
var tb11& = SKCtrl_CreateUserButton(%hwnd,0,normalBmp#,hoverBmp#,clickedBmp#,250,80,200,40,%hInstance)
locate 0,0
imprimer "einfacher Button = 78 ODER =32"
imprimer "User def. Button =273 ODER =32"
imprimer
Tandis que 1=1
WaitInput
imprimer %Message
SetFocus(%hWnd)
Cas %Key = 2:Pause
Endwhile
'grenier freigeben...
dispose normalBmp#
dispose hoverBmp#
dispose clickedBmp#
'Dll deinitialisieren (important!) et freigeben
SKCtrl_DeInitDll()
FreeDll hdll&
FIN
Grüße Georg |
|
|
| |
|
|
|
H.Brill | J'ai pensé toujours, qui Clicked() beides auswertet : wm_lButtonDown + wm_LButtonUp alors Drücken et Loslassen.
cela Wischen kenne je pas. au maximum chez Drag&Drop, wohin on cela Contrôle avec qui souris festhält et irgendwohin zieht.
quoi brauchst du car oui c'est ca ? |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 12.06.2020 ▲ |
|
|
|
|
Matthias Arlt | avec Wischen ist wohl cela bloße Überfahren des Controls avec qui souris gemeint. Dabei wird WM_SETCURSOR=32 zusammen avec WM_MOUSEMOVE=512 ausgelöst. |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 12.06.2020 ▲ |
|
|
|
|
Georg Teles | H.Brill (12.06.2020)
J'ai pensé toujours, qui Clicked() beides auswertet : wm_lButtonDown + wm_LButtonUp alors Drücken et Loslassen.
oui c'est richtig, funktioniert aussi ici comme soll - si on entre wm_lButtonDown + wm_LButtonUp eh bien "wischt", alors versucht den Button quasi trop "markieren" ist qui %Message ensuite 32 = WM_SETCURSOR wogegen qui normale Klick 78 = WM_NOTIFY - cela passt aussi alles
H.Brill (12.06.2020)
quoi brauchst du car oui c'est ca ?
mich serait plutôt intéresser, comment qui SKControl erstellt wird ou bien plutôt une %Message-liste des Verhaltens de SK-Controls, là qui Button zB zum enfachen Button autre %Messages liefert
Matthias Arlt (12.06.2020)
avec Wischen ist wohl cela bloße Überfahren des Controls avec qui souris gemeint. Dabei wird WM_SETCURSOR=32 zusammen avec WM_MOUSEMOVE=512 ausgelöst.
oui so ähnlich
Grüße |
|
|
| |
|
|
|
Matthias Arlt | dans qui SKControl findet un komplettes Subclassing aller enthaltenen Controls statt. XProfan selbst kannte cet Possibilité autrefois encore pas. Au cours de qui Erstellung z.B. des Buttons wird sur WM_PAINT reagiert et cela Zeichnen pour Userangaben durchgeführt. Alle sur cet Weise erstellten Controls volonté dans einer DLL-internen liste verwaltet. de dem, quoi weiterhin im Subclassing passiert, wird vmtl. pas alles à Profan bzw. qui Original-Procédure durchgereicht (ou bien venez là aussi à), mais seulement, quoi pour den damaligen Profan-Funktionsumfang (Messagehandling) relevant était. qui zwischenzeitlich aufgekommene XP-Style (Theme), den es avec qui SKControl pas gibt, brachte dahingehend weitere Unterschiede avec sich. |
|
|
| WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia | 13.06.2020 ▲ |
|
|
|
|
H.Brill | peut-être peux on quoi rausbekommen, si on qui Messagebehandlung abschaltet (Aider : Messageverwaltung selbst prendre) et ensuite avec GetMessage probiert. je connais mais qui SKControl pas, bzw. habe encore pas avec qui gearbeitet.
je fände es aussi besser, si XProfan sämtliche Messages durchreichen serait. cela xprofane Messagehandling peux oui so rester. |
|
|
| Benutze XPROFAN X3 + FREEPROFAN Wir sind die XProfaner. Sie werden von uns assimiliert. Widerstand ist zwecklos! Wir werden alle ihre Funktionen und Algorithmen den unseren hinzufügen.
Was die Borg können, können wir schon lange. | 13.06.2020 ▲ |
|
|
|
|
Georg Teles | Salut,
oui par Messagehandling bekommt on qui richtigen Messages, so kam je sur qui 2 Rückgabewerte. Dass alle Controls DLL-interne verwaltet volonté était Je ne bewusst.
merci pour qui Infos, cela suffisant mir |
|
|
| |
|
|