青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

woaidongmao

文章均收錄自他人博客,但不喜標題前加-[轉貼],因其丑陋,見諒!~
隨筆 - 1469, 文章 - 0, 評論 - 661, 引用 - 0
數據加載中……

關于WS_CLIPCHILDREN和WS_CLIPSIBLINGS的理解

我是個喜歡瞎琢磨的人。尤其是這幾天心情非常郁悶。于是開始琢磨了…….琢磨的問題就是WS_CLIPCHILDRENWS_CLIPSIBLINGS兩種窗口樣式的理解。

1.求助MSDN

我的第一步當然是求助MSDN。在MSDN里面有詳細的解釋。

1.1 WS_CLIPCHILDREN

WS_CLIPCHILDREN樣式從字面上可以理解成ClipChildren,裁減子窗口。

MSDN里的E文解釋:Excludes the area occupied by child windows when drawing occurs within the parent window. This style is used when creating the parent window.

E文是一件困難的事,為了不讓大家再重復我的痛苦,我就越俎代庖翻譯一下:WS_CLIPCHILDREN樣式主要是用于父窗口,也就是說當在父窗口繪制的時候,父窗口上還有一個子窗口,那么設置了這個樣式的話,子窗口區域父窗口就不負責繪制。

那么按照MSDN的理解,可以用下面這幅圖來表示:

clip_image002

1?1 WS_CLIPCHILDREN樣式的初理解

1.1 WS_CLIPSIBLINGS

WS_CLIPSIBLINGS樣式從字面上可以理解成ClipSiblings,裁減兄弟窗口。

MSDN里的E文解釋:Clips child windows relative to each other; that is, when a particular child window receives a WM_PAINT message, the WS_CLIPSIBLINGS style clips all other overlapping child windows out of the region of the child window to be updated. If WS_CLIPSIBLINGS is not specified and child windows overlap, it is possible, when drawing within the client area of a child window, to draw within the client area of a neighboring child window.

中文意思是:子窗口間相互裁減。也就是說當兩個窗口相互重疊時,設置了WS_CLIPSIBLINGS樣式的子窗口重繪時不能繪制被重疊的部分。反之沒有設置WS_CLIPSIBLINGS樣式的子窗口重繪時是不考慮重疊不重疊,統統重繪。

clip_image004

1?2 WS_CLIPSIBLINGS樣式的初理解

2.求助Google

最初看完MSDN,說實話,沒有像現在這么清晰畫出上面兩幅圖。而是一片茫然。Google上我所搜索到的中文的還算是比較好的一篇,應該是這篇:http://blog.163.com/sandylin_wind/blog/static/935500552008105104617806/

大家可以看看,但是確實我覺得還不夠詳細,因此才會寫篇博文,討論一下這個問題。

當然E文的專注于WS_CLIPCHILDRENWS_CLIPSIBLINGS討論的也比較少。可能老外由于懂E文,所以不像我們這樣費事。

經過一番搜索,仍然有一些比較重要的結論,列舉如下:

1           所有的overlappedpopup風格的窗口,都有WS_CLIPSIBLINGS 屬性。也就是說這類風格的窗口,你是去不掉WS_CLIPSIBLINGS 屬性的,不會在它重疊的兄弟窗口繪圖;

2           更進一步說明,WS_CLIPSIBLINGS只是用于子窗口(For use with the WS_CHILD style only.

當然在Google上搜索,通常會有意外發現,一般和這個主題相關的往往是控件如何透明的問題。這里也給大家幾個關于控件透明的討論。

1      http://www.pocketpcjunkies.com/Uwe/Forum.aspx/wince-vc/4744/Transparent-bitmap-button。這個是關于控件上繪制位圖,然后透明的討論。在桌面系統和WinCECreateWindoowsEx還有一些細微的差別,在WinCE上隱含地指定了窗口具備WS_CLIPCHILDRENWS_CLIPSIBLINGS風格;

2      http://www.pocketpcdn.com/articles/transparent_static.html這個是關于控件上面文本透明的例子。

3.做幾個實驗

3.1 驗證 WS_CLIPCHILDREN

簡單到什么程度呢?只需要在對話框的屬性打個勾而已。

clip_image005

3?1 如何設置對話框Clip Children屬性

我們先做做第一個程序,這個程序唯一有點難的地方就在于需要繼承一下CStatic類,然后重載一下OnPaint函數。

void MYStatic::OnPaint()

{

CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here

// 獲得控件客戶區矩形大小

CRect rect;

GetClientRect(rect);

// 繪制控件邊框

dc.MoveTo(0,0);

dc.LineTo(rect.Width(),0);

dc.LineTo(rect.Width(),rect.Height());

dc.LineTo(0,rect.Height());

dc.LineTo(0,0);

// 繪制文本

    dc.TextOut(rect.Width()/2 - 5,rect.Height()/2 - 5,"Hello");

// Do not call CStatic::OnPaint() for painting messages

}

當我們不設置對話框的Clip children屬性的時候,效果如下圖所示:

clip_image006

3?2 效果圖

   當設置了Clip children屬性的時候,接下來是見證奇跡的時刻。^_^

clip_image008

       3?4 預想的效果圖

3?6控件的Tab順序

發現結果很混亂,每回都得不到我想要的,具有隨機性。甚至有的時候按照我的預想,有的時候則完全不管我的心情。哪怕我氣的吹胡子瞪眼睛,也是枉然。

最常見的是這樣一種情況,就是無論我設置不設置WS_CLIPSIBLINGS屬性,當點擊重繪圖片控件的時候(m_pic.Invalidate(),效果都一如既往,先開始圖片控件(pic)被自定義控件(custom)壓蓋,然后重繪之后,圖片控件(pic)壓蓋自定義控件(custom)

clip_image009

3?5 一種錯誤圖

經過一段時間的郁悶,我最終找到了問題之所在,是這樣的一個結論:WS_CLIPSIBLINGS還和控件的疊加順序有關。疊加順序如果不對,你無法查看WS_CLIPSIBLINGS的效果。就上面的問題,我們可以在VC編輯器里查看到控件的疊加順序。

clip_image010

Pic控件是在custom控件的下方。(Tab OrderZ Order順序是一致的)。這樣設置不設置WS_CLIPSIBLINGS都無法看出效果。

但是改變控件的壓蓋順序,令pic控件壓蓋在custom控件之上(實際上是改變Tab order順序)

clip_image011

3?7 控件的Tab順序

這樣就會出現預期的效果。當不設置WS_CLIPSIBLINGSpic控件會壓蓋custom控件,而當設置了該屬性,則pic控件不會壓蓋custom控件,重疊的區域由custom控件自己繪制。

clip_image012

3?8 預期的效果

4.結論

好,到此為止,應該說點有結論的話了。

1           WS_CLIPCHILDREN樣式主要是用于父窗口,也就是說當在父窗口繪制的時候,父窗口上還有一個子窗口,那么設置了這個樣式的話,子窗口區域父窗口就不負責繪制。

2           所有的overlappedpopup風格的窗口,都有WS_CLIPSIBLINGS 屬性。也就是說這類風格的窗口,你是去不掉WS_CLIPSIBLINGS 屬性的,不會在它重疊的兄弟窗口繪圖;

3           更進一步說明,WS_CLIPSIBLINGS只是用于子窗口(For use with the WS_CHILD style only.

       4 WS_CLIPSIBLINGS實際上還需要和控件的疊放順序(z order)配合使用,才能看出明顯的效果。

clip_image013

3?3 效果圖

很明顯父窗口沒有管子窗口的背景色如何繪制。子窗口的背景只是當時桌面上現有的窗口內容。

3.2 驗證WS_CLIPSIBLINGS

當第一個實驗成功之后,我原以為WS_CLIPSIBLINGS也會相當地簡單。結果我花費了大量的時間糾纏在這個問題上。首先遇到的第一個問題,當然是動態地改樣式,這個并不是太復雜的問題。如何動態改樣式,見下面的代碼:

LONG style = GetWindowLong(m_pic.GetSafeHwnd(),GWL_STYLE);

style = style | WS_CLIPSIBLINGS ;

SetWindowLong(m_pic.GetSafeHwnd(),GWL_STYLE,style);

然后,我在對話框上添加了一個圖片控件和一個自繪制的控件(和上例類似,為了效果明顯,我對自繪的控件進行了填充)

按照我預先設想的效果,理想的情況應該如下:

 

posted on 2009-10-09 18:00 肥仔 閱讀(1035) 評論(0)  編輯 收藏 引用 所屬分類: MFC存檔

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲精品一区二区三区樱花| 99av国产精品欲麻豆| 精品成人一区| 国产精品欧美一区二区三区奶水| 欧美激情第三页| 欧美日韩另类视频| 国产精品久久久久国产a级| 国产欧美日韩精品丝袜高跟鞋 | 亚洲国产成人精品视频| 欧美成人高清| 亚洲一区综合| 欧美成人69av| 国产尤物精品| 亚洲欧美一区二区原创| 欧美不卡视频一区发布| 这里只有精品视频在线| 裸体一区二区| 黄色影院成人| 亚洲一区区二区| 91久久精品久久国产性色也91| 亚洲欧美影院| 国产麻豆一精品一av一免费| 亚洲精品午夜| 亚洲国产精品一区二区久| 久久精品国产第一区二区三区最新章节| 亚洲香蕉成视频在线观看| 麻豆精品视频在线观看视频| 香蕉久久一区二区不卡无毒影院 | 久久精品视频99| 国产精品你懂的在线| 中文亚洲欧美| 亚洲在线观看| 国产一区二区三区最好精华液| 欧美在线你懂的| 久久久欧美精品| 亚洲精一区二区三区| 一本久久综合亚洲鲁鲁| 国产乱码精品一区二区三区不卡| 午夜精品久久久久久99热软件| 99在线|亚洲一区二区| 国产精品乱看| 美脚丝袜一区二区三区在线观看| 久久久www成人免费无遮挡大片 | 一区二区三区免费观看| 国产精品影院在线观看| 国产麻豆一精品一av一免费| 日韩视频在线一区| 亚洲激情av在线| 久久在线观看视频| 欧美成人亚洲成人| 欧美在现视频| 精品成人一区二区| 亚洲欧洲三级| 久久精品国产亚洲aⅴ| 在线综合亚洲| 国产亚洲欧洲| 亚洲老板91色精品久久| 国产婷婷精品| 亚洲日本欧美天堂| 国产精品久久久久久久免费软件 | 国产精品久久久久久久久久直播 | 亚洲午夜视频| 美国十次了思思久久精品导航| 亚洲视频综合| 欧美a级一区| 亚洲午夜精品一区二区三区他趣 | 国产精品欧美日韩久久| 最近看过的日韩成人| 狠狠色综合网| 久久成人精品视频| 欧美成人免费全部观看天天性色| 韩日精品中文字幕| 久久精品国产亚洲精品| 久久婷婷激情| 亚洲人成毛片在线播放| 蜜臀91精品一区二区三区| 久久久国产精品亚洲一区| 国产一级久久| 欧美激情在线狂野欧美精品| 亚洲免费激情| 久久久久久伊人| 亚洲国产日韩精品| 国产精品高清在线| 久久久久看片| 亚洲女女女同性video| 另类专区欧美制服同性| 亚洲精品久久久蜜桃| 亚洲视频综合| 亚洲精品中文字幕在线| 亚洲国产精品黑人久久久| 国产一区视频在线观看免费| 国产日韩视频一区二区三区| 怡红院精品视频| 欧美国产一区二区三区激情无套| 亚洲国产精品女人久久久| 在线不卡中文字幕| 久久久一二三| 亚洲欧美综合精品久久成人| 亚洲男同1069视频| 激情综合在线| 国产精品扒开腿爽爽爽视频| 欧美日韩国产黄| 欧美丝袜一区二区| 国产精品久久久久久久电影 | 麻豆成人av| 欧美母乳在线| 亚洲一区二区在线免费观看视频 | 国内视频精品| 亚洲国产婷婷综合在线精品| 在线日韩中文字幕| 久久精品国产2020观看福利| 午夜精品福利在线观看| 欧美色播在线播放| 久久视频一区| 欧美日韩国产色视频| 欧美自拍丝袜亚洲| 黑人极品videos精品欧美裸| 一区二区电影免费观看| 亚洲高清123| 一本久道久久综合狠狠爱| 欧美日韩国产一区二区三区地区 | 午夜天堂精品久久久久| 欧美国产日韩精品免费观看| 久久久久久色| 国产精品在线看| 午夜欧美不卡精品aaaaa| 亚洲专区在线视频| 国产精品色婷婷| 美女视频一区免费观看| 老鸭窝毛片一区二区三区| 一色屋精品视频免费看| 欧美国产激情二区三区| 亚洲男人的天堂在线aⅴ视频| 亚洲人午夜精品免费| 免费高清在线一区| 久久亚洲欧美国产精品乐播| 亚洲三级电影全部在线观看高清| 中文精品视频| 欧美激情第1页| 日韩一级黄色av| 亚洲精品日日夜夜| 欧美激情欧美激情在线五月| 国色天香一区二区| 狼人社综合社区| 久久久精品午夜少妇| 亚洲国产美女久久久久| 亚洲激情电影在线| 欧美日韩另类丝袜其他| 欧美一级大片在线免费观看| 久久久久久久久岛国免费| 久久久夜夜夜| 亚洲视频一起| 欧美精品三级日韩久久| 国产日本欧美视频| 9色porny自拍视频一区二区| 亚洲二区视频| 欧美金8天国| 亚洲在线中文字幕| 亚洲一二区在线| 久久久久久久高潮| 久久亚洲一区二区| 久久久99国产精品免费| 久久精品一区二区三区不卡| 美女久久一区| 久久成人综合网| 亚洲欧美国产日韩天堂区| 日韩视频欧美视频| 日韩一级精品视频在线观看| 中日韩午夜理伦电影免费| 午夜欧美理论片| 欧美一级精品大片| 久久精品男女| 欧美在线免费视屏| 久久av一区二区三区漫画| 午夜精品美女自拍福到在线| 欧美日韩一区二区在线| 欧美在线一二三区| 欧美一区二区视频在线观看2020| 国产精品外国| 亚洲国产aⅴ天堂久久| 国产精品你懂的| 99re66热这里只有精品3直播| 在线成人av| 麻豆成人在线播放| 久久九九久精品国产免费直播| 欧美激情久久久久| 亚洲高清资源| 日韩一区二区福利| 亚洲美洲欧洲综合国产一区| 久久精品av麻豆的观看方式 | 亚洲国产日韩欧美在线99| 欧美日韩精品是欧美日韩精品| 欧美电影在线| 亚洲电影免费观看高清| 久久九九国产精品| 亚洲成色777777女色窝| 亚洲日本免费电影| 免费在线欧美视频| 亚洲欧洲日本一区二区三区| 亚洲久久成人|