資源描述:
《如何定制自己的擴(kuò)展類(lèi)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、如何定制自己的擴(kuò)展類(lèi)做軟件難免為自己寫(xiě)一些類(lèi)之類(lèi)的,那么怎么定制自己的開(kāi)發(fā)類(lèi)呢,下面我給大家說(shuō)一說(shuō)吧,VC提供了一個(gè)類(lèi)的向?qū)С绦?,在那里我們可以快速建立自己的擴(kuò)展類(lèi),這里有2中方式可以打開(kāi)類(lèi)的向?qū)У谝唬褐苯涌旖萱ICTRL+W第二:insert->NewClass說(shuō)明CTRL+w彈出的是類(lèi)向?qū)В氵€的點(diǎn)擊右邊的“AddClass…”->”New”這個(gè)按鈕,這時(shí)出現(xiàn)如下圖,在這里你就可以添加擴(kuò)展類(lèi),如下圖這里我們來(lái)舉個(gè)例子,我們添加一個(gè)CEDIT的擴(kuò)展類(lèi),如下圖在這個(gè)里面我們就可以任意改變文本框的功能和效果,你想要怎么樣就怎么樣,你可以為所欲為,只要你
2、有想象力,下面我們改變一下,例如我們打算把編輯框的背景色改變(當(dāng)然了還有其他的方法也是可以實(shí)現(xiàn)的),這些代碼的添加幾乎全是在我們定制的擴(kuò)展類(lèi)中添加,(下面是我節(jié)選的一段代碼,大家可以研究一下)步驟一:在CEditEx中添私有成員變量CBrushm_EdtBrush;//編輯框改變后刷子的顏色CStringm_str;//編輯框的文本內(nèi)容COLORREFm_CurBackColor;//編輯框當(dāng)前的顏色步驟二:添加成員函數(shù)添加兩個(gè)公有類(lèi)型的成員函數(shù):目的為了提供一個(gè)接口public:voidSetControlFocus();voidSetBkGrn
3、dColor();其定義如下:voidCEditEx::SetControlFocus(){//將變量m_CurBackColor的值設(shè)為黃色m_CurBackColor=RGB(255,255,0);}voidCEditEx::SetBkGrndColor(){//刪除舊的刷子m_EdtBrush.DeleteObject();//創(chuàng)建一個(gè)m_CurBackColor顏色的刷子m_EdtBrush.CreateSolidBrush(m_CurBackColor);CDC*pDC=GetDC();//設(shè)置文字顯示模式,OPAQUE為獨(dú)占模式pDC-
4、>SetBkMode(OPAQUE);//設(shè)置文字的背景顏色pDC->SetBkColor(m_CurBackColor);//選擇刷子pDC->SelectObject(&m_EdtBrush);CRectrc;GetClientRect(&rc);ScreenToClient(&rc);//繪制一個(gè)矩形pDC->Rectangle(0,0,rc.Width(),rc.Height());//設(shè)置文本顏色pDC->SetTextColor(RGB(0,0,0,));//輸出文本pDC->TextOut(2,2,m_str.GetBuffer(m_
5、str.GetLength()));}2)重載虛擬函數(shù)OnChildNotify():將OnChildNotify()函數(shù)的定義為如下形式:BOOLCEditEx::OnChildNotify(UINTmessage,WPARAMwParam,LPARAMlParam,LRESULT*pLResult){//WeonlywanttohandleWM_CTLCOLOREDITmessages-32bitonly//如果消息為WM_CTLCOLOREDIT,則返回基類(lèi)的OnChildNotify函數(shù)if(message!=WM_CTLCOLOREDIT
6、){returnCEdit::OnChildNotify(message,wParam,lParam,pLResult);}HDChdcChild=(HDC)wParam;//設(shè)置文字顏色為黑色,也可以修改為其他顏色SetTextColor(hdcChild,RGB(0,0,0));//設(shè)置背景顏色為m_CurBackColor顏色SetBkColor(hdcChild,m_CurBackColor);returnTRUE;}3)添加三個(gè)windows消息處理函數(shù):ON_WM_SETFOCUS、ON_WM_KILLFOCUS、ON_WM_PAINT
7、,主要是用來(lái)處理編輯框獲得焦點(diǎn)和失去焦點(diǎn)的顏色改變效果。將這三個(gè)函數(shù)定義為如下形式://當(dāng)編輯框獲得焦點(diǎn)時(shí)改變背景顏色為黃色voidCEditEx::OnSetFocus(CWnd*pOldWnd){CEdit::OnSetFocus(pOldWnd);m_CurBackColor=RGB(255,255,0);Invalidate(FALSE);}//當(dāng)編輯框失去焦點(diǎn)時(shí)改變背景顏色為白色voidCEditEx::OnKillFocus(CWnd*pNewWnd){CEdit::OnKillFocus(pNewWnd);//設(shè)置背景顏色為白色,也可
8、以設(shè)為其他顏色m_CurBackColor=RGB(255,255,255);Invalidate(FALSE);}//重