{"id":179,"date":"2007-12-18T18:11:45","date_gmt":"2007-12-18T17:11:45","guid":{"rendered":"http:\/\/blog.m-ri.de\/index.php\/2007\/12\/18\/die-unsitte-in-wm_contextmenu-keine-tastaturnutzer-zu-beruecksichtigen\/"},"modified":"2007-12-18T19:01:59","modified_gmt":"2007-12-18T18:01:59","slug":"die-unsitte-in-wm_contextmenu-keine-tastaturnutzer-zu-beruecksichtigen","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2007\/12\/18\/die-unsitte-in-wm_contextmenu-keine-tastaturnutzer-zu-beruecksichtigen\/","title":{"rendered":"Die Unsitte in WM_CONTEXTMENU keine Tastaturnutzer zu ber\u00fccksichtigen"},"content":{"rendered":"<p>Das viele Programmierer nur an die Maus denken, wenn Sie Kontextmen\u00fc h\u00f6ren ist schon an meinem <a href=\"http:\/\/blog.m-ri.de\/index.php\/2007\/12\/15\/die-unsitte-wm_rbuttondown-statt-wm_contextmenu-zu-verwenden\">letzten Blog Artikel <\/a>klar geworden.\u00a0<\/p>\n<p>Dennoch \u00fcberraschen mich immer wieder Programm, die\u00a0zwar korrekt auf die Kontextmen\u00fc-Taste (bzw. <em>Umschalt+F10<\/em>) reagieren, aber dann ein Kontextmen\u00fc links oben in der Ecke meines Monitors aufklappen.<\/p>\n<p>OK! Es wurde verstanden, dass es eine <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms647592.aspx\"><em>WM_CONTEXTMENU<\/em> <\/a>Nachricht gibt, dass aber intelligentes Handling f\u00fcr Tastaturbenutzer anders aussieht, als f\u00fcr einen Mausbenutzer wird sehr selten verstanden oder ber\u00fccksichtigt.<\/p>\n<p>\u2757 Nehmen wir mal ein Beispiel:<br \/>\nGegeben sei ein List View Control. Der Benutzer hat den Fokus auf diesem Control und dr\u00fcckt nun die Kontextmen\u00fctaste bzw. die Tasten <em>Umschalt+F10<\/em>.<\/p>\n<p>\u2753 Frage: Was w\u00e4hre nun ein angemessenes Verhalten?<\/p>\n<p>Wer die <a href=\"http:\/\/msdn2.microsoft.com\/en-us\/library\/ms647592.aspx\">Doku<\/a> gelesen hat wird wissen, dass in diesem Fall als Koordinaten (-1,-1) mit der <em>WM_CONTEXTMENU <\/em>Nachricht \u00fcbermittelt werden. Dies ist nun der Grund daf\u00fcr, dass viele Kontextmen\u00fcs nun in der linken oberen Ecke aufklappen, weil viele Entwickler eben nicht lesen (k\u00f6nnen), oder sich keine Gedanken machen, dass es einen Unterschied macht Mausbenutzer zu sein oder Tastaturbenutzer.<\/p>\n<p>(-1,-1) ist keine geeignete Position f\u00fcr das Kontextmen\u00fc!<\/p>\n<p>Nun die Mausposition zu bestimmen, w\u00e4re meiner Meinung nach, auch nicht angemessen. Denn der User benutzt diese ja gar nicht, und hat sie evtl. sogar einfach an den Bildschirmrand geschoben. Das Kontextmen\u00fc dort aufpoppen zu lassen w\u00e4re genauso falsch.<\/p>\n<p>Einzig richtig w\u00e4re es den aktuell selektierten Eintrag mit dem Fokus im List View zu bestimmen und das Popupmen\u00fc knapp darunter und leicht rechts versetzt davon anzuzeigen. Dem Benutzer w\u00e4re der Kontextbezug sofort klar und auch seine Augen m\u00fcssten nicht erst an eine andere Bildschirmposition wandern um zu erfassen, was nun m\u00f6glich ist<\/p>\n<p>Im Klartext hei\u00dft das f\u00fcr den Entwickler: selektiertes Item suchen (<em>LVM_GETNEXTITEM<\/em>), dessen Bildschirmposition Position zu bestimmen (<em>LVM_GETITEMRECT<\/em>) und sich eine gute alternative zu \u00fcberlegen, wenn das Item au\u00dferhalb des sichtbaren Bereiches ist (z.B. Mitte des Controls).<\/p>\n<p>Fazit: Um Kontextmen\u00fcs auch mit der Tastatur bedienbar zu machen geh\u00f6rt etwas mehr Grips und Aufwand dazu, als nur eine Popupmen\u00fc an einer bestimmten Koordinate anzuzeigen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das viele Programmierer nur an die Maus denken, wenn Sie Kontextmen\u00fc h\u00f6ren ist schon an meinem letzten Blog Artikel klar geworden.\u00a0 Dennoch \u00fcberraschen mich immer wieder Programm, die\u00a0zwar korrekt auf die Kontextmen\u00fc-Taste (bzw. Umschalt+F10) reagieren, aber dann ein Kontextmen\u00fc links oben in der Ecke meines Monitors aufklappen. OK! Es wurde verstanden, dass es eine WM_CONTEXTMENU &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2007\/12\/18\/die-unsitte-in-wm_contextmenu-keine-tastaturnutzer-zu-beruecksichtigen\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eDie Unsitte in WM_CONTEXTMENU keine Tastaturnutzer zu ber\u00fccksichtigen\u201c <\/span>weiterlesen<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[30,4,3,2],"tags":[370,352,74,61],"class_list":["post-179","post","type-post","status-publish","format-standard","hentry","category-c","category-mfc","category-programmieren","category-windows-api","tag-c","tag-mfc","tag-unsitten","tag-winapi"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/179","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/comments?post=179"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/179\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=179"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=179"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=179"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}