我做了个系统托盘菜单,添加了关闭和显示两个按钮,但是关闭按钮可以实现
而显示按钮却实现不了,为什么呢?
头文件里:afx_msg LRESULT OnMyShowXXX();cpp里:#define WM_MYSHOWXXX WM_USER+1000
ON_MESSAGE(WM_MYSHOWXXX,OnMyShowXXX)以下是WM_RBUTTONUP的响应:LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_SEPARATOR);
menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭");
menu.AppendMenu(MF_STRING,WM_MYSHOWXXX,"显示");
SetForegroundWindow();
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
PostMessage(WM_NULL, 0, 0);
//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
而显示按钮却实现不了,为什么呢?
头文件里:afx_msg LRESULT OnMyShowXXX();cpp里:#define WM_MYSHOWXXX WM_USER+1000
ON_MESSAGE(WM_MYSHOWXXX,OnMyShowXXX)以下是WM_RBUTTONUP的响应:LPPOINT lpoint=new tagPOINT;
::GetCursorPos(lpoint);
CMenu menu;
menu.CreatePopupMenu();
menu.AppendMenu(MF_SEPARATOR);
menu.AppendMenu(MF_STRING,WM_DESTROY,"关闭");
menu.AppendMenu(MF_STRING,WM_MYSHOWXXX,"显示");
SetForegroundWindow();
menu.TrackPopupMenu(TPM_LEFTALIGN,lpoint->x,lpoint->y,this);
PostMessage(WM_NULL, 0, 0);
//资源回收
HMENU hmenu=menu.Detach();
menu.DestroyMenu();
delete lpoint;
{
this->ShowWindow(SW_SHOW);
Shell_NotifyIcon(NIM_DELETE,&nid);
return 0;
}
ON_MESSAGE(WM_MYSHOWXXX,OnMyShowXXX)此句位于BEGIN_MESSAGE_MAP(CMyDlg, CDialog)
和END_MESSAGE_MAP()中间
把所有 WM_MYSHOWXXX 换成 IDR_MYSHOWXXXON_MESSAGE(WM_MYSHOWXXX,OnMyShowXXX)换成ON_COMMAND(IDR_MYSHOWXXX,OnMyShowXXX)解决
看来果然是细节决定成败啊
谢谢各位