免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版
打開APP
未登錄
開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服
開通VIP
首頁
好書
留言交流
下載APP
聯(lián)系客服
MFC自繪控件學(xué)習(xí)總結(jié)第二貼(轉(zhuǎn))
3D建模仿真
>《MFC 控件自繪》
2014.03.19
關(guān)注
首先感謝大家對(duì)第一帖的支持,應(yīng)一些網(wǎng)友烈要求下面我在關(guān)于上一貼的一些補(bǔ)充和說明(老鳥可以無視)
這一貼是實(shí)戰(zhàn)+理論不知道第一帖的先看第一帖:
http://topic.csdn.net/u/20110710/19/5209f358-31c8-4057-b108-02155a417fd0.html
1).補(bǔ)充個(gè)高級(jí)可重載函數(shù)PreSubclassWindow(),我的理解是允許用戶在子類化之前再做一額外些處理 ,這個(gè)重載函數(shù)也是非常重要的,要引起相當(dāng)?shù)淖⒁狻?梢栽谶@里改變控件的大小,位置,窗口樣式,字體 ,等等.....你能想到的能改的,都可以在這里改.
2).關(guān)于Edit的補(bǔ)充說明:我最初的自繪方法是利用 WM_NCPAINT 里面處理的非客戶區(qū)只是自己畫了邊界,以實(shí)現(xiàn)Hover和Leave不同的邊界。不過我后來發(fā)現(xiàn)由于非客戶區(qū)太小了邊界也就2像素,如果鼠標(biāo)移動(dòng)很快有時(shí) 系統(tǒng)不能檢測(cè)到鼠標(biāo)當(dāng)前的狀態(tài),所以程序里面的Edit是在OnPaint里面做的繪制,不過有個(gè)核心API -Default() 下面看代碼
void CEditEx::OnPaint()
{
Default();
// 關(guān)鍵
if(!m_bHover)
DrawBoder(); // 畫自己的邊界
},這才是程序里面的自繪Edit使用的方法.
3).對(duì)于控件的Hover和Leave效果,簡(jiǎn)單的說 Hover就是鼠標(biāo)現(xiàn)在浮于控件上面,Leave就是鼠標(biāo)離開了控件,那么這個(gè)效果要怎么實(shí)現(xiàn)呢?我直接給源碼吧
以Edit控件為列
頭文件中加入
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg LRESULT OnMouseLeave(WPARAM wParam, LPARAM lParam);
afx_msg LRESULT OnMouseHover(WPARAM wParam, LPARAM lParam);
CPP中加入:
BEGIN_MESSAGE_MAP(CEditEx, CEdit)
ON_MESSAGE(WM_MOUSELEAVE, OnMouseLeave)
ON_MESSAGE(WM_MOUSEHOVER, OnMouseHover)
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
注:ON_WM_MOUSEMOVE() 可以用類向?qū)砑?不過OnMouseLeave,和OnMouseHover是需要手動(dòng)添加的
然后再CPP中定義:
void CEditEx::OnMouseMove(UINT nFlags, CPoint point)
{
if (!m_bHover)
{
TRACKMOUSEEVENT tme;
tme.cbSize = sizeof(tme);
tme.hwndTrack = m_hWnd;
tme.dwFlags = TME_LEAVE | TME_HOVER;
tme.dwHoverTime = 1;
m_bHover= _TrackMouseEvent(&tme);
// m_bHover: BOOL型成員變量
}
CEdit::OnMouseMove(nFlags, point);
}
LRESULT CEditEx::OnMouseLeave(WPARAM wParam, LPARAM lParam)
{
m_bHover = false;
//
做相應(yīng)的操作
//
return 0;
}
LRESULT CEditEx::OnMouseHover(WPARAM wParam, LPARAM lParam)
{
//
做相應(yīng)的操作
//
return 0;
}
絕大多數(shù)控件可以用這種方法,不過某些控件,可能需要你在OnMouseMove里面完全模擬出 Hover和Leave的情況,比如程序里面的TabCtrl...
4).我把以前我看過的帖子整理了下供大家學(xué)習(xí)參考(由于時(shí)間久了,很多帖子都忘記了):
進(jìn)度條自繪:h
ttp://www.codeproject.com/KB/miscctrl/cprogressctrlst.aspx
(有項(xiàng)目源碼)
透明控件(多個(gè)控件)實(shí)現(xiàn):
http://www.codeguru.com/cpp/controls/buttonctrl/advancedbuttons/article.php/c15603/General-Solution-for-a-Transparent-Control.htm
(有項(xiàng)目源碼)
透明窗體:
http://msdn.microsoft.com/en-us/library/ms997507
(Menu、窗體、Combobox 都可以參考這種方式實(shí)現(xiàn)任意透明度,我也是參考這種方法)
不規(guī)則按鈕實(shí)現(xiàn):
http://www.codeguru.com/cpp/controls/buttonctrl/non-rectangularbuttons/article.php/c2085/Universal-Button---beauty-of-HRGN.htm
自繪按鈕2篇帖子:
http://www.vckbase.com/document/viewdoc/?id=551
http://www.vckbase.com/document/viewdoc/?id=561
Custom draw 和 Owner draw 的區(qū)別(是全英文,不過要是讀懂了對(duì)你自繪的思想很有幫助,有時(shí)間幫大家翻譯下):
http://blog.csdn.net/xiexievv/article/details/6279219
WM_DRAWITEM與DrawItem()的討論,對(duì)控件自繪很有幫助:
http://blog.csdn.net/xiexievv/article/details/6259194
下面這幾篇帖子仔細(xì)閱讀定有意想不到的收獲,不只是自繪控件,完全可以讓我們對(duì)MFC的整體認(rèn)識(shí)都會(huì)提升1個(gè)等級(jí)
MFC中OnDraw與OnPaint的區(qū)別:
http://blog.csdn.net/xiexievv/article/details/6271153
深度剖析消息反射機(jī)制:
http://blog.csdn.net/xiexievv/article/details/6282205
PreTranslateMessage和TranslateMessage區(qū)別:
http://blog.csdn.net/xiexievv/article/details/6299027
WindowProc和DefWindowProc的區(qū)別:
http://blog.csdn.net/xiexievv/article/details/6299016
CWnd中PreCreateWindow、PreSubclassWindow、SubclassWindow的區(qū)別:
http://blog.csdn.net/xiexievv/article/details/6233423
同時(shí)推薦幾個(gè)很好的學(xué)習(xí)網(wǎng)站:
http://www.codeproject.com
(英文)
http://www.codeguru.com
(英文)
http://www.pudn.com
http://www.vckbase.com/document/index.asp
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)
點(diǎn)擊舉報(bào)
。
打開APP,閱讀全文并永久保存
查看更多類似文章
猜你喜歡
類似文章
PC端鼠標(biāo)vs手機(jī)端手勢(shì):兩種交互有何異同點(diǎn)?
讓設(shè)計(jì)跟著指尖走-觸控設(shè)備上的互動(dòng)效果
用Delphi做一個(gè)組件探測(cè)器:WidgetSpy
漂亮Edit控件的重載
VS2010/MFC編程入門之七(對(duì)話框:為對(duì)話框添加控件)
CEdit響應(yīng)鼠標(biāo)雙擊事件
更多類似文章 >>
生活服務(wù)
首頁
萬象
文化
人生
生活
健康
教育
職場(chǎng)
理財(cái)
娛樂
藝術(shù)
上網(wǎng)
留言交流
回頂部
聯(lián)系我們
分享
收藏
點(diǎn)擊這里,查看已保存的文章
導(dǎo)長(zhǎng)圖
關(guān)注
一鍵復(fù)制
下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!
聯(lián)系客服
微信登錄中...
請(qǐng)勿關(guān)閉此頁面
先別劃走!
送你5元優(yōu)惠券,購買VIP限時(shí)立減!
5
元
優(yōu)惠券
優(yōu)惠券還有
10:00
過期
馬上使用
×