Deutsch
Forum

Button Klick-Wisch %Message

 

Georg
Teles
Guten Abend,

bin dabei eines meiner Programme "upzudaten" und mir fiel jetzt erst auf, warum der ButtonKlick manchmal garnicht reagiert hatte:

Da mein Programm (XTraBar) die Buttons erst beim Start definiert, kann ich keine absoluten Variablen abfragen, da je nach Konfiguration alle 50 oder nur 1 Button erstellt wird.

Verhalten:
"normaler Button": %Message = 78 (klick) oder = 32 (wisch)
SKControl erstellter Button: %Message = 272 (klick) oder = 32 (wisch)

= 78 / 272 treten auf, wenn man diese Buttons normal anklickt.
= 32 tritt auf (beide Buttons betreffend), sobald man den Button anklickt (ohne loszulassen) und in eine Richtung "wischt" ohne diesen zu verlassen und die Maustaste dann loslässt.



Das kann ich mir halbwegs erklären, wenn ich die Bedeutungen der Messages in der folgenden Liste anschaue...

32 = WM_SETCURSOR (wisch normaler Button UND SKConrtol Button)
78 = WM_NOTIFY (klick normaler Button)
272 = WM_COMMAND (klick SKControl Button)


aber...

das Problem:
Der obere Screenshot wurde unter Win10 geschossen.

Win XP, 7 und 8:
einfacher Button: %Message = 78 oder = 32 (also gleich wie Win10)
SKConrtol Button: %Message = 32 (immer)

Eventuell hat das etwas mit den Fensterobjekten und wie Windows diese behandelt zutun - ich vermute, unter Win 10 werden die Aktionen hier besser ausgewertet ?

Lösung: Ein Workarea hierzu habe ich hier  [...]  eingestellt, was nun ziemlich gut funktioniert.

Quelltext zum Screenshot oben, hierfür benötigt man die SKControl:
 $I SKControl.inc
declare hdll&
'Dll laden & initialisieren
let hdll& = UseDll("SKControl.dll")
SKCtrl_InitDll()
WindowStyle 2+4+16+20+512
Window 200,200-500,600
WindowTitle "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% = Create("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
print "einfacher Button = 78 ODER =32"
print "User def. Button =273 ODER =32"
print

While 1=1

    WaitInput
    print %Message
    SetFocus(%hWnd)
    Case %Key = 2:Break

EndWhile

'Speicher freigeben...
dispose normalBmp#
dispose hoverBmp#
dispose clickedBmp#
'Dll deinitialisieren (Wichtig!) und freigeben
SKCtrl_DeInitDll()
FreeDll hdll&
END

Grüße
Georg
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

11.06.2020  
 




H.Brill
Ich dachte immer, daß Clicked() beides auswertet :
wm_lButtonDown + wm_LButtonUp
also Drücken und Loslassen.

Das Wischen kenne ich nicht. Höchstens bei Drag&Drop,
wo man das Control mit der Maus festhält und irgendwohin
zieht.

Was brauchst du denn genau ?
 
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
Mit Wischen ist wohl das bloße Überfahren des Controls mit der Maus gemeint. Dabei wird WM_SETCURSOR=32 zusammen mit WM_MOUSEMOVE=512 ausgelöst.
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
12.06.2020  
 




Georg
Teles
H.Brill (12.06.2020)
Ich dachte immer, daß Clicked() beides auswertet :
wm_lButtonDown + wm_LButtonUp
also Drücken und Loslassen.


ja das ist richtig, funktioniert auch hier wie es soll - wenn man zwischen wm_lButtonDown + wm_LButtonUp nun "wischt", also versucht den Button quasi zu "markieren" ist die %Message dann 32 = WM_SETCURSOR wogegen der normale Klick 78 = WM_NOTIFY - Das passt auch alles

H.Brill (12.06.2020)
Was brauchst du denn genau ?


mich würde eher interessieren, wie der SKControl erstellt wird oder eher eine %Message-Liste des Verhaltens von SK-Controls, da der Button zB zum enfachen Button andere %Messages liefert

Matthias Arlt (12.06.2020)
Mit Wischen ist wohl das bloße Überfahren des Controls mit der Maus gemeint. Dabei wird WM_SETCURSOR=32 zusammen mit WM_MOUSEMOVE=512 ausgelöst.


ja so ähnlich

Grüße
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

13.06.2020  
 




Matthias
Arlt
In der SKControl findet ein komplettes Subclassing aller enthaltenen Controls statt. XProfan selbst kannte diese Möglichkeit damals noch nicht. Während der Erstellung z.B. des Buttons wird auf WM_PAINT reagiert und das Zeichnen nach Userangaben durchgeführt. Alle auf diese Weise erstellten Controls werden in einer DLL-internen Liste verwaltet. Von dem, was weiterhin im Subclassing passiert, wird vmtl. nicht alles an Profan bzw. die Original-Prozedur durchgereicht (oder kommt dort auch an), sondern nur, was für den damaligen Profan-Funktionsumfang (Messagehandling) relevant war. Der zwischenzeitlich aufgekommene XP-Style (Theme), den es mit der SKControl nicht gibt, brachte dahingehend weitere Unterschiede mit sich.
 
WinXP SP2, Win7 - XProfan 10/11/FreeProfan32 - Xpia
13.06.2020  
 




H.Brill
Vielleicht kannst man was rausbekommen, wenn man
die Messagebehandlung abschaltet (Hilfe : Messageverwaltung
selbst übernehmen) und dann mit GetMessage probiert.
Ich kenne aber die SKControl nicht, bzw. habe noch nicht
mit der gearbeitet.

Ich fände es auch besser, wenn XProfan sämtliche Messages
durchreichen würde. Das xprofane Messagehandling kann ja
so bleiben.
 
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
Hallo,

ja durch Messagehandling bekommt man die richtigen Messages, so kam ich auf die 2 Rückgabewerte. Dass alle Controls DLL-intern verwaltet werden war mir nicht bewusst.

Danke für die Infos, das genügt mir
 
XProfan X2
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

18.06.2020  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

5.931 Betrachtungen

Unbenanntvor 0 min.
Gast.0815 vor 13 Tagen
Member 862464120.05.2024
Georg Teles25.02.2023
Frank Reibold25.11.2022
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