• <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   管理


            午夜精品久久久久久99热| 久久不见久久见免费视频7| 少妇高潮惨叫久久久久久| 伊人久久无码精品中文字幕| 狠狠久久综合| 久久国产香蕉一区精品| 91精品国产高清久久久久久91| 久久精品人人做人人爽电影| 久久人人爽人人爽人人片av麻烦| 性做久久久久久久久久久| 久久综合视频网站| 嫩草伊人久久精品少妇AV| 久久精品无码一区二区无码| 精品久久久久久中文字幕人妻最新| 久久久久亚洲av无码专区喷水 | 香蕉久久一区二区不卡无毒影院 | 久久国产精品无码网站| 国产精品激情综合久久| 欧美激情精品久久久久久久| 国产精品久久久久免费a∨| 99精品国产99久久久久久97 | 97超级碰碰碰久久久久| 国产精品美女久久久久AV福利| 国产成人精品久久亚洲高清不卡| 久久人人爽人人爽人人片AV麻豆 | 久久精品麻豆日日躁夜夜躁| 欧美久久综合性欧美| 亚洲精品国产第一综合99久久| 色狠狠久久AV五月综合| 国产激情久久久久影院| 久久午夜夜伦鲁鲁片免费无码影视 | 亚洲国产二区三区久久| 四虎影视久久久免费| 久久人人爽人人爽人人片AV不| 久久婷婷久久一区二区三区| 欧美精品一区二区久久| 国产精品99久久精品| 久久久久国产一区二区| 国产成人精品久久一区二区三区| 伊人 久久 精品| 久久人妻少妇嫩草AV无码蜜桃|