mfc托盘的菜单,右键出现两个菜单项一个“显示窗口”,除此以外一个“关闭”,“关闭”的功能可以实现,为什么”显示窗口“没有反应呢
mfc托盘的菜单,右键出现两个菜单项一个“显示窗口”,另外一个“关闭”,“关闭”的功能可以实现,为什么”显示窗口“没有反应呢
LRESULT CRWU01ServerDlg::OnShowTask(WPARAM wParam, LPARAM lParam)
{
if(wParam != IDR_MAINFRAME)
return 1;
switch(lParam)
{
case WM_RBUTTONUP: // 右键起来时弹出菜单
{
LPPOINT lpoint = new tagPOINT;
::GetCursorPos(lpoint); // 得到鼠标位置
CMenu menu;
menu.CreatePopupMenu(); // 声明一个弹出式菜单
menu.AppendMenu(MF_STRING, WM_SHOWWINDOW, "显示窗口");
menu.AppendMenu(MF_STRING, WM_DESTROY, "退出");
SetForegroundWindow(); //消失
menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x ,lpoint->y, this);
HMENU hmenu = menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK: // 双击左键的处理
{
this->ShowWindow(SW_SHOWNORMAL); // 显示主窗口
}
break;
}
return 0;
}
------解决方案--------------------
“menu.AppendMenu(MF_STRING, WM_SHOWWINDOW, "显示窗口");
menu.AppendMenu(MF_STRING, WM_DESTROY, "退出");”
为什么 不用 commandID ?
------解决方案--------------------
WM_SHOWWINDOW不是命令而是通知
该参数应该改成一个应该数值,并且在消息映射中关联一个函数,在函数中执行 ShowWindow(SW_SHOW);
LRESULT CRWU01ServerDlg::OnShowTask(WPARAM wParam, LPARAM lParam)
{
if(wParam != IDR_MAINFRAME)
return 1;
switch(lParam)
{
case WM_RBUTTONUP: // 右键起来时弹出菜单
{
LPPOINT lpoint = new tagPOINT;
::GetCursorPos(lpoint); // 得到鼠标位置
CMenu menu;
menu.CreatePopupMenu(); // 声明一个弹出式菜单
menu.AppendMenu(MF_STRING, WM_SHOWWINDOW, "显示窗口");
menu.AppendMenu(MF_STRING, WM_DESTROY, "退出");
SetForegroundWindow(); //消失
menu.TrackPopupMenu(TPM_LEFTALIGN, lpoint->x ,lpoint->y, this);
HMENU hmenu = menu.Detach();
menu.DestroyMenu();
delete lpoint;
}
break;
case WM_LBUTTONDBLCLK: // 双击左键的处理
{
this->ShowWindow(SW_SHOWNORMAL); // 显示主窗口
}
break;
}
return 0;
}
------解决方案--------------------
“menu.AppendMenu(MF_STRING, WM_SHOWWINDOW, "显示窗口");
menu.AppendMenu(MF_STRING, WM_DESTROY, "退出");”
为什么 不用 commandID ?
------解决方案--------------------
WM_SHOWWINDOW不是命令而是通知
该参数应该改成一个应该数值,并且在消息映射中关联一个函数,在函数中执行 ShowWindow(SW_SHOW);