В этом случае hWnd
необходимо указать дескриптор окна строки меню, и всплывающее меню будет видимым.
Обычно используется в Windows Hook. пример:
HHOOK hhook;
LRESULT CALLBACK myHookProc(int code, WPARAM wParam, LPARAM lParam)
{
CWPSTRUCT* lpcwps = (CWPSTRUCT*)lParam;
BOOL ret = 0;
if (code == HC_ACTION)
{
if (lpcwps->message == MN_GETHMENU)
{
MENUBARINFO minfo;
minfo.cbSize = sizeof(MENUBARINFO);
ret = GetMenuBarInfo(lpcwps->hwnd, OBJID_CLIENT, 0, &minfo);
printf_rect(minfo.rcBar);
}
}
return CallNextHookEx(hhook, code, wParam, lParam);
}
И
hhook = SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)myHookProc, hInstance, GetCurrentThreadId());
Это перехватит Winpro c класса системного меню L"#32768"
и откроет окно меню, когда после всплывающего меню был видимым.