資源描述:
《C++實用教程課件-張榮梅 第5章菜單工具欄和狀態(tài)欄》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第5章菜單、工具欄和狀態(tài)欄河北經(jīng)貿(mào)大學(xué)信息技術(shù)學(xué)院1教學(xué)目標了解菜單、工具欄和狀態(tài)欄的概念及相關(guān)類的基本操作;掌握Windows編程中資源的使用;能夠在單文檔和對話框應(yīng)用程序中編程實現(xiàn)常用的菜單、工具欄和狀態(tài)欄。25.1菜單菜單概述用編輯器設(shè)計菜單菜單類CMenu快捷菜單的設(shè)計與使用示例3菜單菜單是Windows中最常見的界面元素,是一系列命令的列表。菜單分為兩種:下拉菜單快捷菜單(上下文菜單)加速鍵是鍵盤上的一個鍵或幾個鍵的組合,它通常對應(yīng)于某一條菜單命令或工具按鈕命令,它為用戶提供了一種快速執(zhí)行菜單命令或其他某種功能的方法。4使用菜單編輯器,可以增加或刪除菜單
2、和菜單項,定義菜單標識符ID,對菜單進行合理布局,設(shè)置菜單的初始狀態(tài)(正常、灰色、加標記等)設(shè)置菜單提示等。使用AppWizard創(chuàng)建基于SDI的應(yīng)用程序框架時,會自動創(chuàng)建一個菜單資源:IDR_MAINFRAME使用AppWizard創(chuàng)建基于MDI的應(yīng)用程序框架時,會自動創(chuàng)建兩個菜單資源:IDR_MAINFRAME和IDR_***TYPE(星號表示項目名)在菜單編輯器中,可以對AppWizard生成的菜單進行修改,也可以從空白菜單基礎(chǔ)上創(chuàng)建需要的菜單用編輯器設(shè)計菜單5創(chuàng)建下拉菜單的步驟:創(chuàng)建菜單資源打開菜單編輯器,編輯菜單:在菜單欄中雙擊空白方框,彈出[MenuIt
3、emProperties]對話框,設(shè)置菜單項屬性。為菜單資源選擇一個類(視圖類或?qū)υ捒蝾?建立菜單命令消息處理函數(shù)WM_COMMAND:選擇菜單項或使用快捷鍵時將產(chǎn)生此消息UPDATE_COMMAND_UI:更新命令用戶接口消息,當菜單在顯示之前,會先通過此消息進行更新,從而得到更新后的菜單。6【例5.1】單文檔應(yīng)用程序中菜單的創(chuàng)建和使用在單文檔應(yīng)用程序的默認菜單資源中添加一個“繪圖”菜單,通過“繪圖”菜單命令在窗口中繪制出不同的橢圓和矩形,程序的運行效果如圖所示。7步驟:1、創(chuàng)建一個基于SDI的應(yīng)用程序,項目名為:EX5_12、在項目工作區(qū)的[ResourceVi
4、ew]中,雙擊菜單資源[IDR_MAINFRAME],打開菜單資源編輯器。3、在[幫助]菜單前插入一個新菜單[繪圖(&D)],并為其添加相應(yīng)的菜單項,如圖所示Alt+D激活該菜單8菜單屬性設(shè)置CaptionID提示(Prompt)橢圓Pop-up矩形Pop-up清除(&C)ID_DRAW_CLEAR清除窗口中的圖形100*100ID_DRAW_ELLIPSE1繪制一個外接矩形為100*100的橢圓100*200ID_DRAW_ELLIPSE2繪制一個外接矩形為100*200的橢圓100*100ID_DRAW_RECT1繪制一個100*100的矩形100*200ID_
5、DRAW_RECT2繪制一個100*200的矩形94、為菜單資源選擇一個類CEX5_1View5、使用[MFCClassWizard],為視圖類CEX5_1View添加菜單消息處理函數(shù).ObjectIds消息消息處理函數(shù)ID_DRAW_CLEARCOMMANDOnDrawClear()ID_DRAW_ELLIPSE1COMMANDOnDrawEllipse1()ID_DRAW_ELLIPSE2COMMANDOnDrawEllipse2()ID_DRAW_RECT1COMMANDOnDrawRect1()ID_DRAW_RECT2COMMANDOnDrawRect2(
6、)106、為消息處理函數(shù)添加代碼繪制一個外接矩形為100*100的橢圓voidCEX5_1View::OnDrawEllipse1(){//TODO:AddyourcommandhandlercodehereCDC*pDC=GetDC();//獲取窗口設(shè)備環(huán)境CRectr,rect;//定義矩形類對象GetClientRect(&r);//獲取客戶區(qū)窗口坐標范圍rect.bottom=r.bottom/2+50;//設(shè)置rect的范圍rect.top=r.bottom/2-50;rect.right=r.right/2+50;rect.left=r.right/2-
7、50;pDC->Ellipse(rect);//在rect指定的范圍內(nèi)畫橢圓}r.bottom505011繪制一個100*100的矩形voidCEX5_1View::OnDrawRect1(){//TODO:AddyourcommandhandlercodehereCDC*pDC=GetDC();//獲取窗口設(shè)備CRectr,rect;//定義矩形類對象GetClientRect(&r);//獲取客戶區(qū)窗口坐標范圍rect.bottom=r.bottom/2+50;//設(shè)置rect的范圍rect.top=r.bottom/2-50;rect.right=r.ri