• <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)  編輯 收藏 引用
            久久露脸国产精品| 久久久噜噜噜久久| 亚洲精品午夜国产va久久| 国产一区二区精品久久凹凸| 久久99国产精品久久久| 精品国产青草久久久久福利| 青青青青久久精品国产h| 国产精品99久久久久久猫咪| 久久久久亚洲AV成人网| 亚洲精品无码久久久| 奇米综合四色77777久久| 99久久超碰中文字幕伊人| 欧美性大战久久久久久| 国产成人精品三上悠亚久久| 久久精品国产精品青草| 亚洲欧美成人久久综合中文网 | 国产毛片欧美毛片久久久| 久久久无码精品亚洲日韩按摩| 九九久久自然熟的香蕉图片| 9191精品国产免费久久| 欧美亚洲国产精品久久| 国产精品福利一区二区久久| 久久激情五月丁香伊人| 久久精品国产亚洲AV无码麻豆| 亚洲国产精品久久| 久久人人爽人人爽人人AV| 久久国产高清字幕中文| 久久www免费人成看片| 999久久久免费国产精品播放| 欧美亚洲国产精品久久高清| 国产精品免费久久久久久久久 | 亚洲综合久久夜AV | 久久狠狠色狠狠色综合| 亚洲中文字幕无码久久综合网| 91久久香蕉国产熟女线看| 久久天堂AV综合合色蜜桃网| 理论片午午伦夜理片久久| 26uuu久久五月天| 亚洲午夜久久影院| 国产精品对白刺激久久久| 久久婷婷五月综合97色一本一本 |