如果使用TrackPopupMenu弹出菜单时,窗口不是Forground Windows会怎样?如何修正?

时间:2023-01-15 15:31:40
如果使用TrackPopupMenu弹出菜单时,窗口不是Forground Windows会怎样?如何修正?

6 个解决方案

#1


不是当前窗口怎么会弹出菜单?

是不是,弹出位置不对ScreenToClient();ClientToScreen();
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;

得到其它窗口指针的方法
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this);
将this替换即可

#2


楼主散分,我接分!

#3


呵呵!这个问题我前不久刚碰到过。

我自己做了个自画菜单,程序主窗口已经hide掉了,只有一个托盘图标,这时使用TrackPopupMenu并且如果不加SetForegroundWindow()的话呢,菜单就会一直显示着,除非你选择了其中某一个菜单项。

所以记住了,以后在使用TrackPopupMenu()的时候前面一定要加句SetForegroundWindow()。
呵呵!就这么简单的问题我搞了两天,用尽了所有的办法!

#4


楼上的不错

#5


没遇到过这种情况,我的都是一直开着

#6


smatter(充内行) : thanks, 我也遇到相同的问题, 并用你的方法解决掉了

#1


不是当前窗口怎么会弹出菜单?

是不是,弹出位置不对ScreenToClient();ClientToScreen();
CMainFrame *pMain=(CMainFrame *)AfxGetApp()->m_pMainWnd;

得到其它窗口指针的方法
pContextMenu->TrackPopupMenu(TPM_LEFTALIGN|TPM_LEFTBUTTON|TPM_RIGHTBUTTON,point.x,point.y,this);
将this替换即可

#2


楼主散分,我接分!

#3


呵呵!这个问题我前不久刚碰到过。

我自己做了个自画菜单,程序主窗口已经hide掉了,只有一个托盘图标,这时使用TrackPopupMenu并且如果不加SetForegroundWindow()的话呢,菜单就会一直显示着,除非你选择了其中某一个菜单项。

所以记住了,以后在使用TrackPopupMenu()的时候前面一定要加句SetForegroundWindow()。
呵呵!就这么简单的问题我搞了两天,用尽了所有的办法!

#4


楼上的不错

#5


没遇到过这种情况,我的都是一直开着

#6


smatter(充内行) : thanks, 我也遇到相同的问题, 并用你的方法解决掉了