在window右下角工具栏创建一个托盘,按托盘启动一个菜单,菜单执行程序可以出现,调试不出现,有谁遇到过吗?

wumin940590725 2013-12-27 09:22:57
托盘好像qq就是在右下角的,右击之后会出现一个选择的菜单。
我现在项目和它类似,但是是左击出现一个选择菜单,直接F5菜单是出现的,如果使用调试命令F10或者F11都会出现菜单一闪而过的情况,不知道有没有人遇到过这种问题
下面是弹出菜单代码
void CSmartPointerDlg::PopQMenu( CString Anchor,CString ScreenKBoard,CString OnoffPPt,CString SystemStart,CString Help,CString About,CString Quit,CString Wideth )
{
QMenu ezmenu;
CMenu menu;
ezmenu.m_nWidth = _ttoi(Wideth);
menu.LoadMenu(IDR_TRAYNEWMENU); // 菜单ID号
ezmenu.Attach(menu.GetSubMenu(0)->GetSafeHmenu());
ezmenu.SetTotalItems(9); // 菜单资源总数
ezmenu.SetMenuBitmap(/*(HBITMAP)*/m_bmpMenu/*->Detach()*/); // 设置菜单位图
ezmenu.SetBitmapDimension(CSize(20,200)); // 菜单位图大小
ezmenu.SetExtensionColor(RGB(255,255,255)); // 设备菜单文本颜色(选中)
QMENUITEMDATA lpez[8];

//===========================退出===========================
lpez[0].SetItemIcon(m_hIconMenu[6]); // 图标
lpez[0].SetItemText(Quit);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 0,&lpez[0]);

//===========================关于===========================
lpez[1].SetItemIcon(m_hIconMenu[5]);
lpez[1].SetItemText(About);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 1,&lpez[1]);

//===========================帮助===========================
lpez[2].SetItemIcon(m_hIconMenu[4]);
lpez[2].SetItemText(Help);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 2,&lpez[2]);

//=========================开机启动=========================
if(m_bIsRunAfterBoot)
{
lpez[3].SetItemIcon(m_hIconMenu[7]);
}
else
lpez[3].SetItemIcon(m_hIconMenu[3]);
lpez[3].SetItemText(SystemStart);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 3,&lpez[3]);

//=========================PPTTOOL=========================
if(m_bIsPopAfterPPT)
{
lpez[4].SetItemIcon(m_hIconMenu[7]);
}
else
lpez[4].SetItemIcon(m_hIconMenu[2]);
lpez[4].SetItemText(OnoffPPt);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 4,&lpez[4]);

//==========================键盘============================
lpez[5].SetItemIcon(m_hIconMenu[1]);
lpez[5].SetItemText(ScreenKBoard);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 5,&lpez[5]);

//==========================定位============================
lpez[6].SetItemIcon(m_hIconMenu[0]);
lpez[6].SetItemText(Anchor);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS + 6,&lpez[6]);

//=========================分隔线===========================
ezmenu.RemoveMenu(ID_MENU_ANCHOR,MF_BYCOMMAND); // 移除加载的系统菜单 否则会多处一项没有个性化的
lpez[7].SetSeperator(TRUE);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS+7,&lpez[7],1);
ezmenu.InsertOwnerDrawnMenuItem(ID_QMENU_ITEMS+8,&lpez[7],5);

//========================使能控制===========================
ezmenu.EnableMenuItem(ID_QMENU_ITEMS+7,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
ezmenu.EnableMenuItem(ID_QMENU_ITEMS+8,MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
// if(!m_pointdataDevice.m_bOsIsWin8)
// {
// ezmenu.EnableMenuItem(ID_QMENU_ITEMS+3, MF_BYCOMMAND|MF_ENABLED);
// }
// else
// {
// ezmenu.EnableMenuItem(ID_QMENU_ITEMS+3, MF_BYCOMMAND|MF_DISABLED|MF_GRAYED);
//
// }

CPoint point;
::GetCursorPos(&point);
CSize size=ezmenu.GetMenuSize();
ezmenu.TrackPopupMenu(TPM_RIGHTALIGN,point.x,point.y,this);
}
...全文
223 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
wumin940590725 2014-01-03
  • 打赏
  • 举报
回复
这个不知道为什么在vc6.0上怎么调都是对的,瞬间崩溃了,擦
wumin940590725 2013-12-31
  • 打赏
  • 举报
回复
引用 10 楼 starytx 的回复:
http://www.vckbase.com/index.php/wenku/index打开,在【关键字】里输入“托盘”,资料很多
这个我是调试不是自己做这个功能,所以我要用对方的这个,但是我用这个效果显示不对,所以问的问题就是有人出过这个或者知道这个问题吗?

这个函数很复杂,看来真的挺复杂的,不会用。。。。。。。。
starytx 2013-12-31
  • 打赏
  • 举报
回复
http://www.vckbase.com/index.php/wenku/index打开,在【关键字】里输入“托盘”,资料很多
wumin940590725 2013-12-31
  • 打赏
  • 举报
回复
没有人知道吗?菜鸟求高手
wumin940590725 2013-12-30
  • 打赏
  • 举报
回复
引用 7 楼 cuijinfei1990 的回复:
创建了你需要显示下。
??什么意思?我查了MSDN说是这个意思啊?这个就是显示吧 TrackPopupMenu Function -------------------------------------------------------------------------------- The TrackPopupMenu function displays a shortcut menu at the specified location and tracks the selection of items on the menu. The shortcut menu can appear anywhere on the screen.
tomato_socket 2013-12-30
  • 打赏
  • 举报
回复
创建了你需要显示下。
wumin940590725 2013-12-27
  • 打赏
  • 举报
回复
正常情况应该如图一,但是单步调试的时候确表现为图二。
wumin940590725 2013-12-27
  • 打赏
  • 举报
回复
引用 2 楼 yiyefangzhou24 的回复:
TrackPopupMenu这个是创建悬浮菜单的方法对不,我单步调试到这里应该跳出菜单了,但是现在却是菜单一闪而过,不出现,等于说这个消息 没用一样。 但是如果不是用调试或者调试离这个比较远,他就能长时间出现,所以不懂是哪里弄错了。
yiyefangzhou24 2013-12-27
  • 打赏
  • 举报
回复
老衲没看懂你想表达的什么意思
wumin940590725 2013-12-27
  • 打赏
  • 举报
回复
ezmenu.TrackPopupMenu(TPM_RIGHTALIGN,point.x,point.y,this);调用的如图所示,是在afxwin.h这个头文件当中
wumin940590725 2013-12-27
  • 打赏
  • 举报
回复
引用 5 楼 greex 的回复:
老衲没看懂你想表达的什么意思
。。。。。。。。。。。。。。。。。。。TrackPopupMenu是创建悬浮菜单不是吗?然后资源表中我也有对应的表,然后使用TrackPopupMenu应该跳出我设置的对应的资源菜单,但是现在是这个创建之后就闪而过,就好像画图会闪屏一样,但是这个是闪了一次。 本来我应该在跳出的悬浮菜单上选择东西的,现在悬浮菜单都没有,无法进行下一步调试了。。。。。。。。。。。。
greex 2013-12-27
  • 打赏
  • 举报
回复
老衲没看懂你想表达的什么意思

64,642

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧