zoukankan      html  css  js  c++  java
  • 建立CMenu菜单项,实现选中菜单项点击左键响应事件

    这里我只是根据自己的项目做了一些总结,实现点击右键弹出菜单项,点左键选择菜单项:

        CMenu menu;
        VERIFY(menu.CreatePopupMenu());//新建一个cmenu菜单项
        menu.AppendMenuW(MF_STRING, 10001, _T("重定义")); 
        menu.AppendMenuW(0, MF_SEPARATOR);//增加一条直线
        menu.AppendMenuW(MF_STRING, 10002, _T("修改"));
        menu.AppendMenuW(0, MF_SEPARATOR);
        menu.AppendMenuW(MF_STRING, 10003, _T("删除"));
        menu.AppendMenuW(0, MF_SEPARATOR);
         CPoint pt;//菜单项弹出点
         GetCursorPos(&pt);
        menu.TrackPopupMenu(TPM_LEFTBUTTON, pt.x, pt.y, this);//在指定位置显示快捷菜单,这里是左键按钮事件
    menu.DestroyMenu();//选择后要销毁菜单项

    上面的代码建立了一个菜单项,其中包括三个菜单,分别是“重定义”、“修改”、“删除”。

    完成了上面的部分,我们只是建立了一个菜单项,这里我们还需要相应我们选择后的事件,我们需要在该对话框下面完成OnCommand(WPARAM wParam, LPARAM lParam)函数,在这里函数里面,所有的命令都会经过这个函数。本项目中,我们的OnCommand(WPARAM wParam, LPARAM lParam)函数为:

    BOOL CSdPalette::OnCommand(WPARAM wParam, LPARAM lParam)
    {
        // TODO:  在此添加专用代码和/或调用基类
        UINT uID = (UINT)wParam;//所选择的项的ID
        switch (uID)//判断是选择的哪一项
        {
        case 10001:
            acDocManagerPtr()->sendStringToExecute(curDoc(), _T("REDEFINETY
    "), false, true);//选择为重定义
            acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE
    "), false, true);
            break;
        case 10002:
            acDocManagerPtr()->sendStringToExecute(curDoc(), _T("ALTERDEFINETY
    "), false, true);//选择为修改
            acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE
    "), false, true);
            break;
        case 10003:
            acDocManagerPtr()->sendStringToExecute(curDoc(), _T("DELETETY
    "), false, true);//选择为删除
            acDocManagerPtr()->sendStringToExecute(curDoc(), _T("UPDATEPALETTE
    "), false, true);
            break;
        default:
            break;
        }
        return CZdUiPalette::OnCommand(wParam, lParam);
    }

    到了这里也是就完成了一个菜单栏的建立和相应过程!这些只是针对本项目来写的,对于CMenu类还有很多种方法来实现建立菜单和相应,后面遇到了会继续完善此笔记。

  • 相关阅读:
    POJ 3258 (NOIP2015 D2T1跳石头)
    POJ 3122 二分
    POJ 3104 二分
    POJ 1995 快速幂
    409. Longest Palindrome
    389. Find the Difference
    381. Insert Delete GetRandom O(1)
    380. Insert Delete GetRandom O(1)
    355. Design Twitter
    347. Top K Frequent Elements (sort map)
  • 原文地址:https://www.cnblogs.com/pengjun-shanghai/p/4892322.html
Copyright © 2011-2022 走看看