• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天下

            記錄修行的印記

            WM_PAINT(父子窗口間)

            WM_PAINT(父子窗口間)

            窗口句柄(HWND)都是由操作系統(tǒng)內(nèi)核管理的,系統(tǒng)內(nèi)部有一個(gè)z
            -order序列,記錄著當(dāng)前從屏幕底部(假象的從屏幕到眼睛的方向),到屏幕最高層的一個(gè)窗口句柄的排序,這個(gè)排序不關(guān)注父窗口還是子窗口。
            當(dāng)任意一個(gè)窗口接受到WM_PAINT消息產(chǎn)生重繪,更新區(qū)繪制完成以后,就搜索它的前面的一個(gè)窗口,如果此窗口的范圍和更新區(qū)有交集,就向這個(gè)發(fā)送wm_paint消息,周而復(fù)始,直到執(zhí)行到頂層窗口。才算完成。


            對(duì)于一個(gè)對(duì)話框(主窗口來(lái)說(shuō),設(shè)置了WS_CLIPCHILDREN樣式時(shí),其所有子窗口都在他的前面——也就是更靠近眼睛的位置),所以主窗口接受wm_paint繪制完成后,會(huì)引起更新區(qū)上所有子窗口的重繪(所有子窗口也是從底到外排序的)。


            只要有更新區(qū)域的產(chǎn)生.
            無(wú)所謂誰(shuí)管,每個(gè)窗口都是對(duì)等的,都有自己的消息相應(yīng)函數(shù),只不過(guò)屬性不同。

            邏輯上可以這么理解,但其實(shí),操作系統(tǒng)是按主窗口排序,然后一個(gè)主窗口的所有子窗口是等級(jí)的,它們?cè)僖粋€(gè)排序。所以邏輯上可以說(shuō),系統(tǒng)中所有窗口句柄都有個(gè)排序。


            子窗口無(wú)效不會(huì)引起父窗口重繪,父窗口無(wú)效,如果父窗口(沒(méi)有WS_CLIPCHILDREN屬性)收到WM_PAINT,則所有子窗口都會(huì)在父窗口處理WM_PAINT之后收到WM_PAINT重繪消息,當(dāng)然,如果父窗口帶有屬性WS_CLIPCHILDREN,則不會(huì)引起子窗口重繪 

            子窗口更新區(qū)域

            子窗口是具有WS_CHILD或者WS_CHILDWINDOW樣式的窗口。和一般窗口一樣,子窗口通過(guò)WM_PAINT來(lái)繪圖。子窗口也維護(hù)一個(gè)更新區(qū)域,應(yīng)用程序和系統(tǒng)都可以通過(guò)設(shè)置該更新區(qū)域來(lái)產(chǎn)生WM_PAINT消息。

            子窗口的更新和顯示區(qū)域受到父窗口的影響,其他樣式的窗口則不會(huì)。系統(tǒng)常常設(shè)置父窗口的更新區(qū)域的同時(shí)設(shè)置子窗口的更新區(qū)域,使父窗口收到WM_PAINT消息的同時(shí)子窗口也能收到WM_PAINT消息。系統(tǒng)把子窗口的位置限制在父窗口的client區(qū)域,超出這個(gè)區(qū)域就會(huì)被裁減掉。

            無(wú)論何時(shí),只要父窗口的更新區(qū)域包含了子窗口的一部分,系統(tǒng)就會(huì)為子窗口設(shè)置更新區(qū)域。此時(shí),系統(tǒng)先向父窗口發(fā)送WM_PAINT消息,然后向子窗口發(fā)送消息讓子窗口可以恢復(fù)被父窗口覆蓋的內(nèi)容。

            但是如果只有子窗口設(shè)置了更新區(qū)域,系統(tǒng)不會(huì)給父窗口也設(shè)置。在無(wú)效化子窗口時(shí),系統(tǒng)不會(huì)給父窗口發(fā)WM_PAINT(因?yàn)楸桓采w住了,根本沒(méi)有必要)。同樣的,如果使被子窗口覆蓋住的父窗口的部分無(wú)效化,系統(tǒng)也不會(huì)給父窗口發(fā)送WM_PAINT的。在這種情況下,無(wú)論子窗口還是父窗口都不會(huì)收到WM_PAINT消息。

            應(yīng)用程序如果設(shè)置了WS_CLIPCHILDREN這個(gè)樣式的話,當(dāng)父窗口的更新區(qū)域被設(shè)置的時(shí)候,子窗口的更新區(qū)域不會(huì)被設(shè)置。父窗口作用在子窗口下面的任何繪圖全部被裁減掉。

            子窗口的更新和可視區(qū)域也受到兄弟窗口的影響。如果兩個(gè)窗口重疊,則兩個(gè)窗口都會(huì)收到WM_PAINT消息。他們受到WM_PAINT消息的順序與z
            -index相反,即最上面的(z-order最高)的收到WM_PAINT消息最晚。

            應(yīng)用程序可以設(shè)置WS_CLIPSIBLING來(lái)避免兄弟窗口的繪制重疊。設(shè)置了這個(gè),高z
            -order的窗口部分就被下面的窗口裁減掉了。


            父窗口先收到WM_PAINT,先繪制父窗口,然后再刷新子窗口
            WS_CLIPCHILDREN是來(lái)設(shè)置父窗口的屬性的,設(shè)置以后,父窗口刷新的時(shí)候不再自動(dòng)去刷新子窗口的區(qū)域,需要你自己去刷新子控件區(qū)域

            WS_CLIPCHILDREN

            好,到此為止,應(yīng)該說(shuō)點(diǎn)有結(jié)論的話了。
            1)WS_CLIPCHILDREN樣式主要是用于父窗口,也就是說(shuō)當(dāng)在父窗口繪制的時(shí)候,父窗口上還有一個(gè)子窗口,那么設(shè)置了這個(gè)樣式的話,子窗口區(qū)域父窗口就不負(fù)責(zé)繪制。
            2)所有的overlapped和popup風(fēng)格的窗口,都有WS_CLIPSIBLINGS 屬性。也就是說(shuō)這類風(fēng)格的窗口,你是去不掉WS_CLIPSIBLINGS 屬性的,不會(huì)在它重疊的兄弟窗口繪圖;
            3)更進(jìn)一步說(shuō)明,WS_CLIPSIBLINGS只是用于子窗口(For use with the WS_CHILD style only.)
            4)WS_CLIPSIBLINGS實(shí)際上還需要和控件的疊放順序(z order)配合使用,才能看出明顯的效果。

            posted on 2012-01-05 14:26 天下 閱讀(2272) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Win32

            <2012年2月>
            2930311234
            567891011
            12131415161718
            19202122232425
            26272829123
            45678910

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(4)

            隨筆分類(378)

            隨筆檔案(329)

            鏈接

            最新隨筆

            搜索

            最新評(píng)論

            精品国产热久久久福利| 久久91精品国产91| 粉嫩小泬无遮挡久久久久久| 99久久99这里只有免费费精品| 美女写真久久影院| 久久最新免费视频| 久久久久亚洲AV无码网站| 国产69精品久久久久9999| 伊人久久大香线蕉精品不卡 | 久久精品国产亚洲77777| 青青国产成人久久91网| 久久国产亚洲精品| 国产产无码乱码精品久久鸭| 久久嫩草影院免费看夜色| 久久丫精品国产亚洲av不卡| 久久免费观看视频| 国产V综合V亚洲欧美久久| 久久天天躁狠狠躁夜夜avapp| 国产一区二区三区久久精品| 精品久久久无码21p发布| 久久午夜福利电影| 国产成人香蕉久久久久| 久久久久99精品成人片试看| 怡红院日本一道日本久久 | 日本加勒比久久精品| 久久天天躁狠狠躁夜夜躁2O2O| 综合久久久久久中文字幕亚洲国产国产综合一区首 | 久久婷婷人人澡人人| 国产精品久久久久久久久| 99蜜桃臀久久久欧美精品网站| 狠狠色综合久久久久尤物| 嫩草影院久久国产精品| 99国产精品久久| 久久久国产精品福利免费| 精品久久久久久无码专区不卡| 欧美黑人又粗又大久久久| 影音先锋女人AV鲁色资源网久久| 中文字幕无码久久久| 狠狠色丁香久久婷婷综合| 亚洲AV日韩精品久久久久久久| 热99RE久久精品这里都是精品免费 |