• <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-07-14來源:作者:點擊數: 標簽:
    大部分 Windows 應用程序都使用下拉式菜單實現自己特定的函數,它使編程更加方便,不需要在程序中增加多個按鈕以完成這些操作。大多數情況下,我們的程序編譯生成后,菜單就確定了,不能再修改。然而,在很多情況下,程序要根據用戶的自己設置產生不同的菜單
      大部分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

    老湿亚洲永久精品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>