Winapi TrackPopupMenuEx看不到CWinThread内的键

Winapi TrackPopupMenuEx看不到CWinThread内的键,winapi,visual-c++,mfc,Winapi,Visual C++,Mfc,我在UI CWinThread中使用TrackPopupMenuEx, CMonitor是从CWinThread派生的 monitor_ = (CMonitor *)AfxBeginThread(RUNTIME_CLASS(CMonitor)); CMonitor::InitInstance包含 m_pMainWnd = new CWnd(); m_pMainWnd->CreateEx(WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT | WS_EX_

我在UI CWinThread中使用TrackPopupMenuEx, CMonitor是从CWinThread派生的

    monitor_ = (CMonitor *)AfxBeginThread(RUNTIME_CLASS(CMonitor));
CMonitor::InitInstance包含

m_pMainWnd = new CWnd();
m_pMainWnd->CreateEx(WS_EX_TOOLWINDOW | WS_EX_CONTROLPARENT | WS_EX_WINDOWEDGE | WS_EX_TOPMOST, AfxRegisterWndClass(CS_DBLCLKS),
    NULL, WS_POPUP | WS_CLIPSIBLINGS | WS_VISIBLE, 50, 50, 50, 50, NULL, NULL);
那以后我会的

    SetForegroundWindow(AfxGetMainWnd()->m_hWnd);

auto popup_menu_flags = TPM_RETURNCMD | TPM_BOTTOMALIGN | TPM_RIGHTBUTTON | TPM_VERTICAL;
auto menu_item = TrackPopupMenuEx(menu, popup_menu_flags, point.x, point.y, AfxGetMainWnd()->m_hWnd, NULL);

DestroyMenu(menu);
弹出菜单显示正确,我可以使用鼠标选择菜单项。但是,箭头键不起作用

我已经使用Spy++和m_pmainwn获取了WM_KEYUP、VK_DOWN的消息,但什么也没发生。未看到WM_KEYDOWN


我遗漏了什么?

也许这个函数会有帮助:你为什么建议这样做?我认为这样你就可以将关键消息重定向到你的线程。您试过了吗?没有-CWin是在与CWinThread相同的线程中创建的-因此没有其他线程可重定向到。我确实注意到,当我设置ForeGroundWindow时,焦点没有设置为它,但它确实变成了前景窗口。。。隐马尔可夫模型