--《VC编程知识总结》之四

    在《VC编程知识总结》之二中总结了如何添加系统托盘图标,但是没有研究如何添加点击系统托盘图标时弹出菜单,下面就总结一下如何在基于Dialog的MFC中添加菜单。

    1、添加一个菜单(menu),方法:insert->resource->menu,或者在resource界面下,直接右键选insert->menu;

    2、设置新添加的menu的属性,如设定ID为IDR_MENU1,并在其中添加菜单项目,如“显示主界面”,指定该项目的ID为ID_MAIN_SHOW

    3、在Dlg类的声明中添加CMenu m_Menuafx_msg void OnMainShow();

    4、在Dlg的Message表中添加ON_COMMAND(ID_MAIN_SHOW,OnMainShow);

    5、在Dlg的OnInitDialog方法中添加m_Menu.LoadMenu(IDR_MENU1)也可以等到要出现该menu时再添加该语句,比如在鼠标点击系统托盘图标,要显示该菜单了在响应鼠标的函数中添加;

    6、在OnNotifyIcon(WPARAM wParam,LPARAM IParam)(该函数在《VC编程知识总结》之二已经讲解过,此处不再讲解如何调用)函数中添加对于鼠标左右键的响应:

    LPPOINT lpoint=new tagPOINT; //标示menu显示位置
    ::GetCursorPos(lpoint);//得到鼠标位置

    SetForegroundWindow();//本行代码作用:如果用户未选择子菜单则自动隐藏该menu
    m_Menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,lpoint->x,lpoint->y,this); //显示menu
    PostMessage(WM_NULL,0,0);//

    delete lpoint; //回收资源

    也可以这样实现:

    PORIT pt;//标示menu显示位置

    ::GetCursorPos(&pt);//得到鼠标位置

    SetForegroundWindow();//本行代码作用:如果用户未选择子菜单则自动隐藏该menu
    m_Menu.GetSubMenu(0)->TrackPopupMenu(TPM_LEFTALIGN|TPM_RIGHTALIGN,pt.x,pt.y,this); //显示menu
    PostMessage(WM_NULL,0,0);//

    7、将如下代码加入OnMainShow()函数(显示主菜单):

    ModifyStyleEx(0,WS_EX_TOPMOST);
    ModifyStyleEx(WS_EX_TOOLWINDOW, WS_EX_APPWINDOW);
    ShowWindow(SW_SHOW);

    按照如上7步即可实现在Dialog中添加菜单。

posted on 2013-02-25 17:04  爱哎唉  阅读(462)  评论(0)    收藏  举报