<menu id="w8yyk"><menu id="w8yyk"></menu></menu>
  • <dd id="w8yyk"><nav id="w8yyk"></nav></dd>
    <menu id="w8yyk"></menu>
    <menu id="w8yyk"><code id="w8yyk"></code></menu>
    <menu id="w8yyk"></menu>
    <xmp id="w8yyk">
    <xmp id="w8yyk"><nav id="w8yyk"></nav>
  • 網站首頁 > 物聯資訊 > 技術分享

    MFC 對話框中動態創建N級菜單以及響應事件

    2016-09-28 00:00:00 廣州睿豐德信息科技有限公司 閱讀
    睿豐德科技 專注RFID識別技術和條碼識別技術與管理軟件的集成項目。質量追溯系統、MES系統、金蝶與條碼系統對接、用友與條碼系統對接

    創建一個基于對話框的工程,工程名為CreateMenu

    為該對話框增加一個文件菜單項和測試菜單項,如下圖所示

    1 2

    測試菜單項至少要有一個子菜單項

    在對話框屬性中關聯該菜單

    在resource.h中增加一個ID_TESTMENU宏

    #define ID_TESTMENU          5000

     

    在對話框中添加一個Button按鈕,建立消息映射,編輯代碼如下

    void CCreateMenuDlg::OnButton1() 
    {
        // TODO: Add your control notification handler code here
        char buf[2];
        //獲取頂級菜單
        CMenu* pMenu=GetMenu();
        //獲取1級菜單
        CMenu* pFileMenu=pMenu->GetSubMenu(0);
        CMenu* pTestMenu=pMenu->GetSubMenu(1);
        //添加2級菜單
        if(pTestMenu->GetSafeHmenu()==NULL) 
            return;
        //添加一個2級彈出菜單,將"文件"菜單項作為該菜單的子菜單
        pTestMenu->AppendMenu(MF_POPUP,(UINT)pFileMenu->m_hMenu,"文件");
        //添加一個2級彈出菜單,該菜單的子菜單為空
        pTestMenu->AppendMenu(MF_POPUP,(UINT)pTestMenu->m_hMenu,"測試");
        //添加10個2級普通菜單
        for(UINT m_ID=1;m_ID<=10;m_ID++)
        {
            itoa(m_ID,buf,10);
            pTestMenu->AppendMenu(MF_SEPARATOR);
            pTestMenu->AppendMenu(
                MF_STRING,m_ID+ID_TESTMENU,"2級菜單"+CString(buf));
        }
     
        //添加n級菜單
        CMenu* pnMenu=pTestMenu->GetSubMenu(2);
        pnMenu->AppendMenu(MF_POPUP,(UINT)pnMenu->m_hMenu,"3級菜單");
        for(int i=0;i<5;i++)
        {
            pnMenu=pnMenu->GetSubMenu(0);
            if(pnMenu==NULL) return;
            itoa(i+4,buf,10);
            pnMenu->AppendMenu(
                MF_POPUP,(UINT)pnMenu->m_hMenu,buf + CString("級菜單"));
        }
        pnMenu->GetSubMenu(0)->AppendMenu(
            MF_STRING,ID_TESTMENU,"9級菜單");
    }

     

    響應單擊菜單的事件

    添加OnCommand的消息映射,編輯代碼如下

    BOOL CCreateMenuDlg::OnCommand(WPARAM wParam, LPARAM lParam) 
    {
        // TODO: Add your specialized code here and/or call the base class
        UINT uMsg=LOWORD(wParam);
        char buf[2];
        if(uMsg==ID_TESTMENU)
        {
                    MessageBox("HELLO!");
        }
        for(UINT i=1;i<=10;i++)
        {
            if(uMsg==ID_TESTMENU+i)
            {
                itoa(i,buf,10);
                MessageBox("HELLO! " + CString(buf));
            }
        }
        return CDialog::OnCommand(wParam, lParam);
    }

     

     

     

    運行結果:

    3

     

    源碼下載

    RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成
    最近免费观看高清韩国日本大全