弹出菜单问题无法正常工作 [英] Popup Menu Problem is not working properly

查看:92
本文介绍了弹出菜单问题无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码用于在系统任务栏图标上创建一个弹出菜单

无效的DisplayMenu(HWND hWnd)
{
HMENU hMenu;
POINT pCursor;
hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDC_GETSCREEN));
GetCursorPos(& pCursor);
TrackPopupMenu(hMenu,TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_NOANIMATION,pCursor.x,pCursor.y, 0 ,hWnd,NULL);
} 



单击系统任务栏菜单上的此功能

IDC_GETSCREEN是菜单资源ID,其布局如下所示:
________ __________
|文件| |帮助|
-------- ----------
|退出| |关于|
--------- ------------

如您所见,这是使用Visual C ++的新项目创建的主菜单.

现在我的问题是
1.当我单击系统托盘上的图标时,它会创建菜单.但是文本文件帮助不可见.即使我可以浏览菜单.
2.当我单击其他内容时,菜单不会消失.

谁能指出我的遗漏之处

在此先感谢

我解决了问题2
具有以下功能:

无效的DisplayMenu(HWND hWnd)
{
HMENU hMenu;
POINT pCursor;
hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDC_GETSCREEN));
GetCursorPos(& pCursor);
SetForegroundWindow(hWnd);
TrackPopupMenu(hMenu,TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_NOANIMATION,pCursor.x,pCursor.y, 0 ,hWnd,NULL);
PostMessage(hWnd,WM_NULL, 0  0 );
} 



[/Edit]

解决方案

您需要在弹出菜单中使用第二级菜单(子菜单);不,我不知道为什么.请查看本部分 [VOID DisplayMenu(HWND hWnd) { HMENU hMenu ; POINT pCursor; hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDC_GETSCREEN)); GetCursorPos(&pCursor); TrackPopupMenu(hMenu, TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_NOANIMATION, pCursor.x, pCursor.y, 0, hWnd, NULL); }



this function is being called on click on the system tray menu

IDC_GETSCREEN is a menu resource ID the lay out is given below:
________ __________
|File | | Help |
-------- ----------
|Exit | |About |
--------- ------------

As you see this is the primary menu that is created with new project of Visual C++.

Now My problem is
1. When when I click on the icon on the system tray it create the menu. but the text File and Help is not visible. Even though I can browse through the menu.
2. When I Click on something else the menu does not disappear.

Can anyone point me out my missing points

Thanks in advance

[Edit]I took care of problem 2
with below function:

VOID DisplayMenu(HWND hWnd)
{
	HMENU hMenu ;
	POINT pCursor;
	hMenu = LoadMenu(hInst,MAKEINTRESOURCE(IDC_GETSCREEN));
	GetCursorPos(&pCursor);
	SetForegroundWindow(hWnd);
	TrackPopupMenu(hMenu, TPM_BOTTOMALIGN | TPM_LEFTBUTTON | TPM_NOANIMATION, pCursor.x, pCursor.y, 0, hWnd, NULL);
	PostMessage(hWnd, WM_NULL, 0, 0);
}



[/Edit]

解决方案

You need a second level of menu (a submenu) in a popup; and no I have no idea why. Take a look at this section[^] of one of my articles, for the code to do it.


这篇关于弹出菜单问题无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆