国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開(kāi)通VIP
WM_DRAWITEM與DrawItem()的討論
http://mathbox59.blog.163.com/blog/static/128453599201011995625739/
 
2010-02-19 21:56:25 閱讀1278 評(píng)論0   字號(hào): 訂閱
我在學(xué)習(xí)中經(jīng)常遇到要重寫DrawItem()的情況,但又有一個(gè)WM_DRAWITEM消息,它們是什么樣的關(guān)系呢。

如果我們要重寫一個(gè)CButton取名為CMyButton,我們可以重寫CMyButton的DrawItem()函數(shù)來(lái)實(shí)現(xiàn)我們的

需求,但CMyButton::DrawItem()是在什么時(shí)候調(diào)用呢?它是在它的宿主類的OnDrawItem()中被調(diào)用,

OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct )正是對(duì)WM_DRAWiTEM的相應(yīng)函數(shù)。

宿主類可以根據(jù)nIDCtl來(lái)判定是哪個(gè)子控件。其實(shí)我們可以在OnDrawItem函數(shù)里對(duì)子控件進(jìn)行繪制,但是有很多

的子控件看起來(lái)不好,所以我們應(yīng)該在子類的DrawItem對(duì)子類繪制,例如CMyButton::DrawItem。所以可以

這樣理解,OnDrawItem是畫窗口中的子控件的,因?yàn)樗娜肟趨?shù)LPDRAWITEMSTRUCT帶入不同子控件的相

關(guān)參數(shù),而且,你得把字控件設(shè)置成“自畫”類型,才會(huì)調(diào)用到OnDrawItem。

    在學(xué)習(xí)中還有一個(gè)消息也是由宿主類被調(diào)用的,它就是WM_CTRCOLOR。這個(gè)消息是在子控件將要繪畫時(shí),利用

反射機(jī)制發(fā)送給其宿主類。OnCtlColor (CDC* pDC, CWnd* pWnd,  UINT  nCtlColor),pDC,pWnd都是于子類

相關(guān)的,在這里可以設(shè)置,前景顏色,背景顏色,畫刷類型,字體等等,但不能改變?cè)氐慕缑婵蚣?,這是DrawItem

所能干的。

   如果同時(shí)有DrawItem(子類),OnDrawItem(宿主類),OnCtlColor(宿主類),它們的調(diào)用順序是:

OnCtlColor,OnDrawItem,DrawItem。

    如果我們同時(shí)又相應(yīng)的子類的WM_PAINT消息,子類不會(huì)向宿主類發(fā)送WM_DRAWITEM消息,你要完成子類的

全部繪制工作,如果子類是一個(gè)列表框,就很麻煩。這事調(diào)用順序是OnCtlColor,OnPaint。

  在發(fā)送一個(gè)WM_PAINT消息前,總會(huì)先發(fā)送一個(gè)WM_ERASEBACK消息,我們?cè)谶@里在一個(gè)背景圖片。

   對(duì)于我們平時(shí)對(duì)控件的繪制,上面介紹的差不多了,還有一個(gè)CView的問(wèn)題,也就是OnPaint和Ondraw的關(guān)系,

其實(shí)這個(gè)很簡(jiǎn)單,CView::OnPaint()的源碼如下:

  


  1. void CView::OnPaint()  
  2. {  
  3.      CPaintDC dc(this);        
  4.      OnPrepareDC(&dc);        
  5.      OnDraw(&dc)  
  6. }  
void CView::OnPaint() { CPaintDC dc(this); OnPrepareDC(&dc); OnDraw(&dc) }

 

從代碼中可以清楚的看出他們的關(guān)系。

以上是我自己的個(gè)人理解,當(dāng)然這是通過(guò)跟蹤得出的結(jié)論,可能結(jié)論中有錯(cuò)誤,如果有,請(qǐng)指出。不勝感激。(轉(zhuǎn)載)
 
( # )
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
白喬原創(chuàng):VC之美化界面篇
自繪控件的4種方法
MFC自繪相關(guān)函數(shù)理解
(轉(zhuǎn))創(chuàng)建你自己的控件-子類化窗口的方法
WM_CTLCOLOR和OnCtlColor消息的用法
深度剖析消息反射機(jī)制
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服