• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    談在VC中動態改變菜單

    發布: 2007-7-14 21:11 | 作者: 佚名    | 來源: 網絡轉載     | 查看: 15次 | 進入軟件測試論壇討論

    領測軟件測試網   大部分Windows應用程序都使用下拉式菜單實現自己特定的函數,它使編程更加方便,不需要在程序中增加多個按鈕以完成這些操作。大多數情況下,我們的程序編譯生成后,菜單就確定了,不能再修改。然而,在很多情況下,程序要根據用戶的自己設置產生不同的菜單以適應不同用戶的要求,這就需要我們動態的改變菜單。接下來我們就分析如何動態的生成不同的菜單。

      第一步:

      運行AppWizard生成一個工程mymenu,接受所有的默認設置,除了下面一步:在step 1中選Single Document ,點擊Finish按鈕,此時我們生成了一個工程。編譯運行,我們可以發現程序默認生成的菜單,接下來我們要對這個菜單進行修改。

      第二步:

      添加一個菜單資源,按如下步驟:菜單中選擇InsertàResouceàMenuàNew ,我們可以看到添加了一個ID號為IDR_MENU1的菜單資源,至于菜單中的各項你就隨便添加了,為了我們下面的編程,請你添加幾項,第一列要包含幾個子菜單。

      第三步:

      添加一個對話框資源,按如下步驟:菜單中選擇InsertàResouceàDialogàNew ,我們可以看到添加了一個ID號為IDD_DIALOG1的對話框資源,添加六個按鈕,如下圖:



    ID號依次為ID_CLEAR, ID_GOONE ,ID_GOTWO, ID_ADD, ID_ADDITEM, ID_EDIT ,為對話框定義類名為CChangeMenu, 雙擊添加的六個按鈕增加處理函數,用默認函數名。

      第四步:

      在IDR_MAINFRAME菜單中添加一項,ID號為ID_SET,名為"彈出設置對話框",為其添加處理函數,添加如下代碼:

      CChangeMenu dlg;
      dlg.DoModal();

      當然,別忘了在文件的開頭添加#include "changemenu . h"

      第五步:

      找到添加的六個按鈕的處理函數,依次添加如下的代碼:

      void CChangeMenu::OnClear()
       {
        AfxGetMainWnd()->SetMenu(NULL);
        AfxGetMainWnd()->DrawMenuBar();
       }

      void CChangeMenu::OnGoone()
       {
        if(!menu1){
         menu1.LoadMenu(IDR_MENU1);
         AfxGetMainWnd()->SetMenu(&menu1);
         AfxGetMainWnd()->DrawMenuBar();
         menu1.Detach();
        }
       }

      void CChangeMenu::OnGotwo()
       {
        if(!menu2){
         menu2.LoadMenu(IDR_MAINFRAME);
         AfxGetMainWnd()->SetMenu(&menu2);
         AfxGetMainWnd()->DrawMenuBar();
         menu2.Detach();
        }
       }

      void CChangeMenu::OnAdd()
       {
        static int x=400;
        AfxGetMainWnd()->GetMenu()->AppendMenu(MF_STRING,x,"mynew");
        AfxGetMainWnd()->DrawMenuBar();
        x++;
       }

      void CChangeMenu::OnAdditem()
       {
        static int y=500;
        AfxGetMainWnd()->GetMenu()->GetSubMenu(0)->InsertMenu(1,MF_BYPOSITION,y,"mynewitem");
        AfxGetMainWnd()->DrawMenuBar();
        y++;
       }

      void CChangeMenu::OnEdit()
       {
        AfxGetMainWnd()->GetMenu()->ModifyMenu(0,MF_BYPOSITION,402,"dfd");
        AfxGetMainWnd()->DrawMenuBar();
       }

      好了,到這里我們所有的功能就都實現了,快編譯運行一下吧!怎么樣?還滿意嗎?

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>