Нужно показать для иконки в трее локальное меню. Пробовал сделать так:
HMENU hMenu = CreatePopupMenu();
MENUITEMINFO mi;
memset( &mi, 0, sizeof(MENUITEMINFO) );
mi.cbSize = sizeof(MENUITEMINFO);
mi.fType = MFT_STRING;
mi.fMask = MIIM_ID|MIIM_TYPE;
mi.cch = 1;
mi.wID = 1;
mi.dwTypeData = "1";
InsertMenuItem( hMenu, 0, FALSE, &mi );
mi.wID = 2;
mi.dwTypeData = "2";
InsertMenuItem( hMenu, 0, FALSE, &mi );
POINT pos;
GetCursorPos( &pos );
UINT cmd = ::TrackPopupMenuEx( hMenu, TPM_NONOTIFY|TPM_RETURNCMD, pos.x, pos.y, mWindow, NULL );
DestroyMenu( hMenu );
Меню показывается, при выборе закрывается и возвращает корректный результат.
Но никак нельзя отказаться от выбора, т.е. по Esc и по клику вне меню оно не закрывается, кроме того аналогично перестают закрываться меню других приложений.
Как сделать возможность отказа от выбора?