• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆-145  評(píng)論-173  文章-70  trackbacks-0

            ==============================================第二章===================================================

            1.標(biāo)記菜單的設(shè)計(jì),如何初始化一個(gè)菜單,標(biāo)記它是否選中。。
            范例中,初始化某個(gè)菜單項(xiàng),并在它的前面打鉤。

            實(shí)現(xiàn)方法:
            在CMainFrame中的OnCreate()函數(shù)中return 0前面添加代碼:
            /*
            GetMenu()是獲得當(dāng)前窗口的菜單,而GetSubMenu則是獲得子菜單,其中參數(shù)為0表示的是第一個(gè)的,下面的CheckMenuItem則是標(biāo)記或者取消
            彈出的菜單,注意的是函數(shù)的第一個(gè)參數(shù)還是項(xiàng)數(shù),后面的那個(gè)MF_BYPOSITION|MF_CHECKED則表示如何標(biāo)記以及如何表示
            */
             GetMenu()->GetSubMenu(0)->CheckMenuItem(2,MF_BYPOSITION|MF_CHECKED); //初始化的時(shí)候?qū)?duì)應(yīng)的菜單項(xiàng)打勾
            其中,各個(gè)子函數(shù)的意義需要理解,后面可能會(huì)用到。


            2.默認(rèn)菜單中的字體粗體顯示。如何實(shí)現(xiàn)粗體顯示一個(gè)菜單中的項(xiàng),這個(gè)作用當(dāng)然是讓用戶(hù)知道默認(rèn)的選擇項(xiàng)是什么了。

            實(shí)現(xiàn)方法:
            在CMainFrame中的OnCreate函數(shù)中添加代碼:

             GetMenu()->GetSubMenu(0)->SetDefaultItem(2,TRUE);
             GetMenu()->GetSubMenu(2)->SetDefaultItem(ID_VIEW_STATUS_BAR,FALSE);
            其中關(guān)鍵就是函數(shù)>SetDefaultItem的使用,它有兩個(gè)參數(shù),第一個(gè)和第二個(gè)的是由聯(lián)系的。
            當(dāng)?shù)诙€(gè)參數(shù)是FALSE的時(shí)候,第一個(gè)項(xiàng)表示對(duì)應(yīng)的索引值(注意索引值是從0開(kāi)始的)
            當(dāng)?shù)诙€(gè)參數(shù)是TRUE的時(shí)候,第一個(gè)項(xiàng)表示的是對(duì)應(yīng)的ID表示。


            3.圖形標(biāo)記菜單,如何實(shí)現(xiàn)菜單中由圖形的顯示方式。
            實(shí)現(xiàn)方式:
             m_bitmap1.LoadBitmap(IDB_BITMAP1);
             GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(0,MF_BYPOSITION,&m_bitmap1,&m_bitmap1);
             m_bitmap2.LoadBitmap(IDB_BITMAP2);
             GetMenu()->GetSubMenu(0)->SetMenuItemBitmaps(1,MF_BYPOSITION,&m_bitmap2,&m_bitmap2);
            其中,變量m_bitmap1,m_bitmap2是自己在CMainFrame中添加的成員變量CBitmap類(lèi)型的。然后在資源文件中添加了兩個(gè)Bitmap資源。
            最后,在使用函數(shù)SetMenuItemBitmaps來(lái)導(dǎo)入到菜單中。。
            介紹函數(shù)SetMenuItemBitmaps的使用方法:
            BOOL SetMenuItemBitmaps( UINT nPosition, UINT nFlags, const CBitmap* pBmpUnchecked, const CBitmap* pBmpChecked );
            nPosition

            Specifies the menu item to be changed. The nFlags parameter can be used to interpret nPosition in the following ways:

            nFlags

            Specifies how nPosition is interpreted.

            pBmpUnchecked

            Specifies the bitmap to use for menu items that are not checked.

            pBmpChecked

            Specifies the bitmap to use for menu items that are checked.
            注意:在設(shè)計(jì)位圖的時(shí)候,需要將大小設(shè)計(jì)為13 X 13像素的,否則顯示會(huì)出現(xiàn)問(wèn)題。


            4.如何使得菜單項(xiàng)不可用,屏蔽某些菜單,使得點(diǎn)擊的時(shí)候沒(méi)有相應(yīng)的函數(shù)和操作可用。
            實(shí)現(xiàn)代碼:
             m_bAutoMenuEnable = FALSE; //在CMainFrame的構(gòu)造函數(shù)中設(shè)置,必須,否則無(wú)效
            在OnCreate函數(shù)的代碼體中加入:
             GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED); //使得對(duì)應(yīng)的菜單項(xiàng)無(wú)效。

             

            5.如何使得菜單消失?通過(guò)函數(shù)SetMenu(NULL)實(shí)現(xiàn)。
            添加一個(gè)菜單,然后建立想要的消息函數(shù),在函數(shù)體內(nèi)加入代碼,如下:
            void CMainFrame::OnDis()
            {
             // TODO: Add your command handler code here
             SetMenu(NULL);
            }
            注意,關(guān)于此類(lèi)操作的函數(shù),都是由CMainFrame作為主類(lèi)的,函數(shù)都是在這個(gè)下面的操作。前面的基于菜單的操作也是,因?yàn)椴藛蔚牟僮饕彩强傮w上

            都是整體的一個(gè)操作。所以需要注意類(lèi)屬關(guān)系。


            6.使得單個(gè)菜單項(xiàng)失效或者生效。通過(guò)添加ID對(duì)應(yīng)的消息,使得菜單生效和失效。
            看代碼:
            void CMainFrame::OnUpdateFileOpen(CCmdUI* pCmdUI)
            {
             // TODO: Add your command update UI handler code here
             if(ID_FILE_OPEN == pCmdUI->m_nID)
              pCmdUI->Enable(FALSE); //失效
            }

            void CMainFrame::OnUpdateEditCut(CCmdUI* pCmdUI)
            {
             // TODO: Add your command update UI handler code here
            // if(ID_EDIT_CUT == pCmdUI->m_nID)
            //  pCmdUI->Enable(TRUE); //生效
            }

            void CMainFrame::OnUpdateFileMruFile1(CCmdUI* pCmdUI)
            {
             // TODO: Add your command update UI handler code here
             
             if(ID_FILE_MRU_FILE1 == pCmdUI->m_nID)
              pCmdUI->Enable(TRUE); //生效
            }
            對(duì)于某個(gè)具體的菜單項(xiàng),在ClassWizard中CMainFrame中,找到ID對(duì)應(yīng)的消息,然后添加函數(shù),注意是
            CN_UPDATE_COMMAND_UI消息,然后在函數(shù)中,使用上面的通用方法判斷。
            if( ID == pCmdUI->m_nID)
             設(shè)置為生效或者失效。

            從而,可以實(shí)現(xiàn)單個(gè)菜單項(xiàng)的生效或者失效。注意,前面的屏蔽菜單和這個(gè)的作用是相似的。不過(guò)函數(shù)不同,前面的那個(gè)是EnableMenuItem選項(xiàng)。

             

            posted on 2010-02-10 16:18 deercoder 閱讀(729) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            久久夜色tv网站| 久久人人添人人爽添人人片牛牛| 婷婷久久久亚洲欧洲日产国码AV| 久久偷看各类wc女厕嘘嘘| 999久久久免费国产精品播放| 久久国产成人| 久久99国内精品自在现线| 久久精品国产精品亜洲毛片| 亚洲中文精品久久久久久不卡| 国产精品久久国产精麻豆99网站| 久久综合久久性久99毛片| 久久亚洲精精品中文字幕| 久久高清一级毛片| 久久亚洲高清观看| 无码任你躁久久久久久老妇App| 99999久久久久久亚洲| 2021国产精品久久精品| 爱做久久久久久| 91精品国产综合久久久久久| 久久无码高潮喷水| 久久精品国产亚洲Aⅴ蜜臀色欲| 91精品国产乱码久久久久久| 午夜精品久久久久久中宇| 久久久国产99久久国产一| 久久精品国产亚洲5555| 精品一区二区久久| 久久精品欧美日韩精品| 性欧美大战久久久久久久久 | 无码人妻精品一区二区三区久久| 精品国产综合区久久久久久 | 一级做a爰片久久毛片16| 精品久久久久久国产潘金莲| 久久久久国产精品熟女影院| 久久精品蜜芽亚洲国产AV| 麻豆成人久久精品二区三区免费 | 国产精品久久久久影视不卡| 久久久久亚洲av无码专区导航| 久久久久亚洲AV无码永不| 99国产欧美精品久久久蜜芽 | 久久久久亚洲AV无码麻豆| 久久久久亚洲AV成人片|