• <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  評論-173  文章-70  trackbacks-0

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

            1.標記菜單的設計,如何初始化一個菜單,標記它是否選中。。
            范例中,初始化某個菜單項,并在它的前面打鉤。

            實現方法:
            在CMainFrame中的OnCreate()函數中return 0前面添加代碼:
            /*
            GetMenu()是獲得當前窗口的菜單,而GetSubMenu則是獲得子菜單,其中參數為0表示的是第一個的,下面的CheckMenuItem則是標記或者取消
            彈出的菜單,注意的是函數的第一個參數還是項數,后面的那個MF_BYPOSITION|MF_CHECKED則表示如何標記以及如何表示
            */
             GetMenu()->GetSubMenu(0)->CheckMenuItem(2,MF_BYPOSITION|MF_CHECKED); //初始化的時候將對應的菜單項打勾
            其中,各個子函數的意義需要理解,后面可能會用到。


            2.默認菜單中的字體粗體顯示。如何實現粗體顯示一個菜單中的項,這個作用當然是讓用戶知道默認的選擇項是什么了。

            實現方法:
            在CMainFrame中的OnCreate函數中添加代碼:

             GetMenu()->GetSubMenu(0)->SetDefaultItem(2,TRUE);
             GetMenu()->GetSubMenu(2)->SetDefaultItem(ID_VIEW_STATUS_BAR,FALSE);
            其中關鍵就是函數>SetDefaultItem的使用,它有兩個參數,第一個和第二個的是由聯系的。
            當第二個參數是FALSE的時候,第一個項表示對應的索引值(注意索引值是從0開始的)
            當第二個參數是TRUE的時候,第一個項表示的是對應的ID表示。


            3.圖形標記菜單,如何實現菜單中由圖形的顯示方式。
            實現方式:
             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類型的。然后在資源文件中添加了兩個Bitmap資源。
            最后,在使用函數SetMenuItemBitmaps來導入到菜單中。。
            介紹函數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.
            注意:在設計位圖的時候,需要將大小設計為13 X 13像素的,否則顯示會出現問題。


            4.如何使得菜單項不可用,屏蔽某些菜單,使得點擊的時候沒有相應的函數和操作可用。
            實現代碼:
             m_bAutoMenuEnable = FALSE; //在CMainFrame的構造函數中設置,必須,否則無效
            在OnCreate函數的代碼體中加入:
             GetMenu()->GetSubMenu(0)->EnableMenuItem(1,MF_BYPOSITION|MF_DISABLED|MF_GRAYED); //使得對應的菜單項無效。

             

            5.如何使得菜單消失?通過函數SetMenu(NULL)實現。
            添加一個菜單,然后建立想要的消息函數,在函數體內加入代碼,如下:
            void CMainFrame::OnDis()
            {
             // TODO: Add your command handler code here
             SetMenu(NULL);
            }
            注意,關于此類操作的函數,都是由CMainFrame作為主類的,函數都是在這個下面的操作。前面的基于菜單的操作也是,因為菜單的操作也是總體上

            都是整體的一個操作。所以需要注意類屬關系。


            6.使得單個菜單項失效或者生效。通過添加ID對應的消息,使得菜單生效和失效。
            看代碼:
            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); //生效
            }
            對于某個具體的菜單項,在ClassWizard中CMainFrame中,找到ID對應的消息,然后添加函數,注意是
            CN_UPDATE_COMMAND_UI消息,然后在函數中,使用上面的通用方法判斷。
            if( ID == pCmdUI->m_nID)
             設置為生效或者失效。

            從而,可以實現單個菜單項的生效或者失效。注意,前面的屏蔽菜單和這個的作用是相似的。不過函數不同,前面的那個是EnableMenuItem選項。

             

            posted on 2010-02-10 16:18 deercoder 閱讀(725) 評論(0)  編輯 收藏 引用
            99久久国产宗和精品1上映| 久久久91精品国产一区二区三区 | 久久久久亚洲精品天堂久久久久久| 久久久久久久久久久免费精品| 亚洲AV乱码久久精品蜜桃| 久久96国产精品久久久| 久久人人爽人人爽人人片av麻烦 | 一本久久a久久精品vr综合| 亚洲AV无一区二区三区久久| 久久精品国产亚洲欧美| 亚洲精品无码专区久久同性男 | 人妻中文久久久久| 91精品国产高清91久久久久久| 久久精品国产亚洲av麻豆图片 | 久久久久亚洲AV片无码下载蜜桃| 久久人人爽人人人人片av| 亚洲色婷婷综合久久| 精品久久无码中文字幕| 久久男人AV资源网站| 精品久久久久久无码专区不卡| 国产精品亚洲综合专区片高清久久久| 精品无码久久久久久尤物| 久久亚洲中文字幕精品一区四| 国产精品一久久香蕉国产线看观看| 久久久人妻精品无码一区| 国产99久久久国产精品~~牛| 久久人做人爽一区二区三区 | 深夜久久AAAAA级毛片免费看| 久久亚洲精品国产精品| 亚洲级αV无码毛片久久精品| 久久久99精品一区二区| 国产免费久久精品99久久| 久久99精品国产| 欧美亚洲另类久久综合| 国产精品久久久久影院嫩草| 久久综合精品国产二区无码| 久久综合亚洲欧美成人| 97久久久精品综合88久久| 久久99精品国产麻豆宅宅| 日韩精品无码久久久久久| 久久91精品国产91久久小草|