



付費(fèi)下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、一種漂亮的自繪菜單以前還是菜鳥時就覺得QQ的菜單做得很漂亮,想著自已的程序如果有那種菜單多好?,F(xiàn)在積累了一定的知識,就自已設(shè)計了一個類似的菜單控件類。并把它發(fā)表出來供大家使用和參考,難免有不足的地方請高手不吝賜教!菜單效果如下:一、CMenuEx菜單類主要接口函數(shù):1、void InitMenu(CMenu *pMenu,UINT uToolBar,CToolBar *pToolBar);說明:這是最主要的一個接口。如果要改變主窗口的菜單則應(yīng)在主窗口的OnInitMenu(CMenu *pMenu)中調(diào)用該函數(shù)(如:m_menu.InitMenu(pMenu,IDR_MAINFRAME,&am
2、p;m_wndToolBar),當(dāng)然主窗口必須要有工具欄,才會產(chǎn)生菜單項位圖。最后還必須重載主窗口的OnMeasureItem()和OnDrawItem()。并在兩個函數(shù)中分別調(diào)用菜單類的另外兩個接口DrawItem()和MeasureItem();2、void SetHighLightColor(COLORREF crColor);3、void SetBackColor(COLORREF);4、void SetTextColor(COLORREF);以上三個接口應(yīng)該不用再說明 。QQ的菜單采用的顏色是SELECTTEXT_COLOR RGB(0,0,127)TEXT_COLOR RGB(0,
3、0,0)BK_COLOR RGB(143,167,207) 效果不錯5、void SetImageLeft(UINT idBmpLeft)說明:這也是個重要的接口。要實(shí)現(xiàn)縱向位圖(像“開始”菜單)??梢栽谶m當(dāng)?shù)牡胤秸{(diào)用該函數(shù)。參數(shù)當(dāng)然是位圖的ID值。注意選擇位圖時要選好看一點(diǎn)的哦!要記得高寬的比例。6、void InitPopupMenu(CMenu *pMenu,UINT uToolBar,CToolBar *pToolBar)與InitMenu不同的是:InitMenu并不修改第一級菜單為自繪風(fēng)格,而該函數(shù)有包括第一級菜單.但必須注意:該類的任一實(shí)例都只能調(diào)用這兩個函數(shù)中的一個,不能一同使
4、用!二、CMenuEx類的具體使用步驟:2.1 用CMenuEx類加載主窗口菜單的具體步驟:1、添加CMenuEx成員變量CMenuEx m_menu2、CMainFrame類添加WM_INITMENU消息,并在實(shí)現(xiàn)函數(shù)中加入代碼: m_menu.InitMenu(pMenu,IDR_MAINFRAME,&m_wndToolBar);IDR_MAINFRAME是工具欄資源ID,m_wndToolBar是工具欄對象 3、CMainFrame類添加WM_DRAWITEM和WM_MEASUREITEM消息,并在實(shí)現(xiàn)函數(shù)分加入: if(!nIDCtl) m_menu.DrawItem(lpDr
5、awItemStruct);if(!nIDCtl) m_menu.MeasureItem(lpMeasureItemStruct);只須這三步就大功造成了!但是有時你會發(fā)現(xiàn)菜單的位圖錯位了,這不是程序的錯。這是因為“工具欄位圖”的個數(shù)與“工具欄按鈕個數(shù)”不符,你只需把不用的位圖刪掉就可以,或者添加對應(yīng)的菜單項,反正使這兩個數(shù)目一致就對了4、如果你想要讓你的菜單擁有“縱向位圖”(像“開始”菜單),就必須在CMainFrame在OnCreate()中加入: m_menu.SetImageLeft(IDB_BITMAP1);/IDB_BITMAP1是指定位圖2.2 用CMenuEx類加載彈出菜單的具
6、體步驟:1、在CChildView類中加入成員變量 CMenuEx m_menu和CToolBar *m_pToolBar 為什么要加入m_pToolBar,這里做一下說明:因為在CMenuEx的接口函數(shù)InitPopupMenu()中需要工具欄對象指針,而工具欄對象又偏偏是CMainFrame類的成員所以設(shè)此指針變量指向工具欄對象2、給CChildView類的成員m_pToolBar賦值。當(dāng)CView派生類由不得CxxxxDocTemplate產(chǎn)生時,賦值的地方比較特殊請在CxxxWinApp類中的InitInstance()的最后加入代碼:CMainFrame *pFrame=(CMain
7、Frame *)m_pMainWnd;CChildView *pView=(CChildView *)pFrame->GetActiveView();pView->m_pToolBar=&(pFrame->m_wndToolBar);/注意:原m_wndToolBar是私有變量,要改成public的哦!當(dāng)CView派生類是CMainFrame類的成員變量時,就很簡單,直接在OnCreate()中設(shè)置3、在CChildView的構(gòu)造函數(shù)中加入設(shè)置彈出菜單的代碼 m_menu.CreatePopupMenu();m_menu.AppendMenu(0,ID_EDIT_UN
8、DO,"撤消");m_menu.AppendMenu(MF_SEPARATOR,0);m_menu.AppendMenu(0,ID_EDIT_COPY,"復(fù)制");m_menu.AppendMenu(0,ID_EDIT_CUT,"剪切");m_menu.AppendMenu(0,ID_EDIT_PASTE,"粘貼");/當(dāng)菜單ID與工具欄按鈕ID一樣時就會顯示位圖4、在CChildView的析構(gòu)函數(shù)中加入代碼:m_menu.DestroyMenu(); /釋放資源5、在CChildView類中加入WM_INITMENUPOPUP消息,并在其實(shí)現(xiàn)函數(shù)中加入代碼:if(!bSysMenu)m_menu.InitPopupMenu(pPopupMenu,IDR_MAINFRAME,m_pToolBar);6、在CChildView類中加入WM_CONTEXTMENU消息,并在其實(shí)現(xiàn)函數(shù)中加入彈出菜單的代碼: m_menu.TrackPopupMenu(TPM_LEFTALIGN | TPM_RIGHTBUTTON,point.x,point.y,this);好了!介紹完了。大家可以在適當(dāng)?shù)牡胤剑ū热鏑MainFrame:OnC
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB50-T 1753-2024 畜禽養(yǎng)殖污水成套化處理設(shè)備配置及操作規(guī)范
- DB64∕T 1546-2018 建筑防水工程技術(shù)規(guī)程
- 技術(shù)改變教學(xué)教育和科技的法律法規(guī)解讀
- 國際教育合作中多語言教學(xué)內(nèi)容的開發(fā)與實(shí)踐
- 廣東青年職業(yè)學(xué)院《中小尺度空間景觀設(shè)計》2023-2024學(xué)年第二學(xué)期期末試卷
- 哈爾濱幼兒師范高等??茖W(xué)?!夺t(yī)患溝通理論與方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 商業(yè)邏輯與教育變革市場驅(qū)動的教育發(fā)展
- 教育資源配置政策的效率評估研究
- 創(chuàng)業(yè)領(lǐng)導(dǎo)力培訓(xùn)中教育心理學(xué)的應(yīng)用與實(shí)踐
- 2024年度河南省護(hù)師類之社區(qū)護(hù)理主管護(hù)師考前沖刺模擬試卷B卷含答案
- 《橋邊的老人》公開課教案分享
- 手術(shù)患者交接記錄單
- 加油站安全隱患排查檢查表
- 《飲料總酸度的測定》教學(xué)設(shè)計
- 固定資產(chǎn)投資統(tǒng)計培訓(xùn)PPT課件
- 河南省天一大聯(lián)考高一下學(xué)期期末數(shù)學(xué)試題(解析版)
- 廣州市登革熱疫情應(yīng)急演練方案
- GB_T 30789.8-2015 色漆和清漆 涂層老化的評價 缺陷的數(shù)量和大小以及外觀均勻變化程度的標(biāo)識 第8部分:劃線或其他人造缺陷周邊剝離和腐蝕等級的評定
- 建設(shè)工程項目管理論文范文
- 同步發(fā)電機(jī)調(diào)速系統(tǒng)仿真設(shè)計
- 2021廣東東莞中考地理真題及答案
評論
0/150
提交評論