菜单的使用

  • 列表上下文菜单

    在列表或树控件(CListUIEx、CTreeCtrlUI及其子类)中,点击鼠标右键可以弹出上下文菜单。需要添加如下代码:

    pItem = pList->InsertItem(_T(""));
    pItem->SetContextMenuUsed(true);
    pItem->SetINotify(this);

    代码SetContextMenuUsed(true)就是让控件发送DUI_MSGTYPE_ITEMCONTEXTMENU通知。

    在页面的Notify函数中增加消息响应代码:

    ......
    else if (_tcsicmp(msg.sType, DUI_MSGTYPE_ITEMCONTEXTMENU) == 0)
    {
    HWND hParent = m_pPM->GetPaintWindow();
    DuiLib::CPoint point = msg.ptMouse;
    ::ClientToScreen(hParent, &point);
    HMENU hMenu;
    hMenu = ::LoadMenu(NULL, MAKEINTRESOURCE(IDR_MAINMENU));
    HMENU h;
    h = ::GetSubMenu(hMenu, 0);
    ::TrackPopupMenu(h, TPM_RIGHTALIGN | TPM_LEFTBUTTON | TPM_RIGHTBUTTON, point.x, point.y, 0, hParent, NULL);
    }