• <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)然是讓用戶知道默認(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類型的。然后在資源文件中添加了兩個(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)于此類操作的函數(shù),都是由CMainFrame作為主類的,函數(shù)都是在這個(gè)下面的操作。前面的基于菜單的操作也是,因?yàn)椴藛蔚牟僮饕彩强傮w上

            都是整體的一個(gè)操作。所以需要注意類屬關(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 閱讀(725) 評(píng)論(0)  編輯 收藏 引用
            人妻精品久久久久中文字幕一冢本| 久久发布国产伦子伦精品| 久久午夜综合久久| 亚洲中文字幕久久精品无码APP| 久久99精品久久久久久hb无码| 91精品国产91久久久久久| 思思久久99热只有频精品66| 国产精品免费看久久久| 久久人妻少妇嫩草AV无码蜜桃| 国产A级毛片久久久精品毛片| 91精品国产综合久久香蕉| 久久精品国产精品亚洲精品| 国内精品久久久久久久久电影网 | 亚洲综合伊人久久综合| 亚洲国产精品无码久久一线| 91久久精品电影| 久久精品亚洲精品国产色婷| 久久人人爽人人爽人人爽| 国产成人99久久亚洲综合精品| 久久久精品2019免费观看| 国产亚洲美女精品久久久2020| 美女久久久久久| 久久精品国产第一区二区| 成人久久综合网| 99久久777色| av无码久久久久不卡免费网站| 久久精品国产亚洲AV蜜臀色欲| 久久精品中文字幕第23页| 久久精品国产91久久综合麻豆自制 | 国产成人无码精品久久久性色| 久久精品无码一区二区三区免费| 久久精品九九亚洲精品天堂| 97热久久免费频精品99| 久久久久亚洲AV无码网站| 日韩AV无码久久一区二区 | 国产综合久久久久| 久久精品欧美日韩精品| 精品久久人妻av中文字幕| 久久久久成人精品无码中文字幕| 久久国产热精品波多野结衣AV| 久久精品aⅴ无码中文字字幕不卡|