1.托盘菜单关闭不了-点击空白处托盘菜单无法关闭
解决方案:在 PopupMenu 语句前加上 SetForegroundWindow Me.hwnd
例如:
if (LOWORD(lParam) == WM_RBUTTONUP)
{
HMENU hMenu = LoadMenu(This->Instance, MAKEINTRESOURCE(This->NotifyIconData.uID));
if (hMenu != NULL)
{
HMENU hSubMenu = GetSubMenu(hMenu, 0);
if (hSubMenu != NULL)
{
POINT pt;
LPCTSTR lpszText = NULL;
UINT EnableAPS = MF_BYCOMMAND | MF_DISABLED | MF_GRAYED;
TCHAR MenuTitle[128];
if(g_bStart)
{
EnableMenuItem(hSubMenu, ID_APS_CONFIG, MF_ENABLED);
} else {
EnableMenuItem(hSubMenu, ID_APS_CONFIG, MF_DISABLED);
}
GetCursorPos(&pt);
switch (This->ApsDeviceState)
{
default:
case APS_STATE_DISABLED:
case APS_STATE_UNKNOWN:
LoadString(This->Instance, IDS_ENABLE_APS, MenuTitle, ARRAYSIZE(MenuTitle));
break;
case APS_STATE_ENABLED:
LoadString(This->Instance, IDS_DISABLE_APS, MenuTitle, ARRAYSIZE(MenuTitle));
break;
}
if (This->ApsDeviceState == APS_STATE_ENABLED ||
This->ApsDeviceState == APS_STATE_DISABLED)
{
EnableAPS = MF_BYCOMMAND | MF_ENABLED;
}
ModifyMenu(hSubMenu, ID_APS_ENABLE, MF_BYCOMMAND, ID_APS_ENABLE, MenuTitle);
EnableMenuItem(hSubMenu, ID_APS_ENABLE, EnableAPS);
SetForegroundWindow(hWnd);//没有这句菜单不能自动消除
TrackPopupMenu(hSubMenu, TPM_LEFTALIGN | TPM_RIGHTBUTTON, pt.x, pt.y, 0, This->hMainWnd, NULL);
}
}
}