{"id":207,"date":"2008-02-05T20:39:16","date_gmt":"2008-02-05T19:39:16","guid":{"rendered":"http:\/\/blog.m-ri.de\/index.php\/2008\/02\/05\/verhindern-des-flackerns-von-controls-wenn-ein-fenster-resize-erfolgt\/"},"modified":"2008-02-05T20:39:16","modified_gmt":"2008-02-05T19:39:16","slug":"verhindern-des-flackerns-von-controls-wenn-ein-fenster-resize-erfolgt","status":"publish","type":"post","link":"http:\/\/blog.m-ri.de\/index.php\/2008\/02\/05\/verhindern-des-flackerns-von-controls-wenn-ein-fenster-resize-erfolgt\/","title":{"rendered":"Verhindern des Flackerns von Controls wenn ein Fenster-Resize erfolgt"},"content":{"rendered":"<p>Immer wieder taucht in Foren die Frage aus, wie man das Flackern von Controls verhindern kann. Die Allgemeine Antwort hei\u00dft Doublebuffering, d.h. die Ausgabe wird zuerst auf einem nicht sichtbaren Memory DC durchgef\u00fchrt und anschlie\u00dfend in einem Schlag auf den eigentlichen DC kopiert. Wichtig ist hier, dass auch der Hintergrund im eigentlichen <em>WM_PAINT <\/em>Handler mit gezeichnet wird und <em>WM_ERASEBKGND <\/em>gar nichts mehr macht. Der Code-Klassiker hierzu findet sich in Code-Project <a href=\"http:\/\/www.codeproject.com\/KB\/GDI\/flickerfree.aspx\">http:\/\/www.codeproject.com\/KB\/GDI\/flickerfree.aspx<\/a><\/p>\n<p>Anders liegt die Sache wenn es beim Resize eines Fensters flackert. Hier ist selten Doublebuffering eine L\u00f6sung. Meistens liegt hier das Problem darin, dass das Parent Fenster seinen Hintergrund neu zeichnet und anschlie\u00dfend alle Child-Windows auch neu gezeichnet werden m\u00fcssen.<\/p>\n<p>Aber auch hier ist Abhilfe einfach. Im Parent-Fenster wird einfach der Stil <em>WS_CLIPCHILDREN<\/em> gesetzt. Das sorgt daf\u00fcr, dass das Parent Fenster einen DC bekommt bei dem die einzelnen Child-Windows ausgeclippt sind, und somit weder durch <em>WM_ERASEBKGND <\/em>noch durch den <em>WM_PAINT <\/em>Handler des Parents \u00fcberschrieben werden.<\/p>\n<p>Sollten sich die Child-Fenster \u00fcberlappen m\u00fcsste man zus\u00e4tzlich an <em>WS_CLIPSIBLINGS <\/em>bei allen Kindfenstern als Stil denken (nicht beim Parent).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Immer wieder taucht in Foren die Frage aus, wie man das Flackern von Controls verhindern kann. Die Allgemeine Antwort hei\u00dft Doublebuffering, d.h. die Ausgabe wird zuerst auf einem nicht sichtbaren Memory DC durchgef\u00fchrt und anschlie\u00dfend in einem Schlag auf den eigentlichen DC kopiert. Wichtig ist hier, dass auch der Hintergrund im eigentlichen WM_PAINT Handler mit &hellip; <a href=\"http:\/\/blog.m-ri.de\/index.php\/2008\/02\/05\/verhindern-des-flackerns-von-controls-wenn-ein-fenster-resize-erfolgt\/\" class=\"more-link\"><span class=\"screen-reader-text\">\u201eVerhindern des Flackerns von Controls wenn ein Fenster-Resize erfolgt\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,61],"class_list":["post-207","post","type-post","status-publish","format-standard","hentry","category-c","category-mfc","category-programmieren","category-windows-api","tag-c","tag-mfc","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\/207","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=207"}],"version-history":[{"count":0,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/posts\/207\/revisions"}],"wp:attachment":[{"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/media?parent=207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/categories?post=207"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.m-ri.de\/index.php\/wp-json\/wp\/v2\/tags?post=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}