sendmessage向系统托盘(任务栏右边的图标区域)发送鼠标右键信息后d出菜单,但菜单不消失

sendmessage向系统托盘(任务栏右边的图标区域)发送鼠标右键信息后d出菜单,但菜单不消失,第1张

一、现在网上流传的托盘图标都有上述缺陷,估计你现在用的也是这种。

经过我对源码的一些改进,托盘图标可以克服上述问题,下面是源码及举例,请下载(注:时限为7天):

>

对主窗口句柄,比如 MyFrameWnd 直接 *** 作菜单就是了,通过函数 GetSystemMenu( FALSE);

返回得到的菜单句柄,你枚举一下其各个项目就知道是怎么回事了。

直接对这个句柄添加删除修改菜单项就行了。菜单项对应的相应消息是 WM_SYSCOMMAND,你添加了菜单项,在WM_SYSCOMMAND 消息里面处理你的命令。

——没用过 vista , 任务栏接口是 ITastBarList,可以得到任务栏上的项目。

关于项目上的右键菜单,难道有好几种点击方法?没明白你说的意思。

你用 WM_INITMENU 拦截一下查看各子项字符串试试。

DWORD

WINAPI

CheckMenuItem(

_In_ HMENU hMenu,//菜单句柄

_In_ UINT uIDCheckItem,//菜单ID

_In_ UINT uCheck);//复选标记MF_CHECKED(添加复选标记)和MF_UNCHECKED(取消复选标记)

实例:

LRESULT MyWnd::OnCommand(DWORD dwID, DWORD dwEnter, HWND hCtrlWnd)

{

HMENU hMenu = GetMenu(m_hWnd);//获得窗口菜单句柄

HMENU hItem = GetSubMenu(hMenu, 1);//获得第二个子菜单项的句柄

switch (dwID)

{

case ID_TOOBAR_MENU:

{

//判断是否有复选标记,如果有就取消复选标记,没有就添加复选标记

if (CheckMenuItem(hItem, ID_TOOBAR_MENU, MF_CHECKED)&MF_CHECKED)

CheckMenuItem(hItem, ID_TOOBAR_MENU, MF_UNCHECKED);

break;

}

case ID_STAT_MENU:

{

if (CheckMenuItem(hItem, ID_STAT_MENU, MF_CHECKED)&MF_CHECKED)

CheckMenuItem(hItem, ID_STAT_MENU, MF_UNCHECKED);

break;

}

case ID_MENU_MENU:

{

if (CheckMenuItem(hItem, ID_MENU_MENU, MF_CHECKED)&MF_CHECKED)

CheckMenuItem(hItem, ID_MENU_MENU, MF_UNCHECKED);

break;

}

}

return 0;

这个无需绑定窗口,用后台找图就可以了。

XY = PluginBkgndFindPic(Hwnd, 0, 0, 1024, 768, "C:\PICbmp", 0, 09)

iZB = InStr(XY, "|")

X = CLng(Left(XY, iZB - 1))

Y = CLng(Right(XY, Len(XY) - iZB))

1、打开易语言,新建一个windows窗口程序。

2、在启动窗口内,右键点击菜单编辑器。

3、在编辑器内,主菜单是没有这样的6个点的,而这个主菜单的附属菜单夹才有这样的点。

4、右边有个向右移动,这样就有6个点。

5、在主菜单的标题中(&P)的意思是,他的快捷键就是p,以此类推,可以编写,如下图的菜单。

6、最后,一个比较完整的菜单,就设置好了。

CMenu menu;//菜单

m_bitmap1LoadBitmap(IDB_BITMAP1);//加载ID为IDB_BITMAP1的位图pPopupMenu = menuGetSubMenu(0); //获取d出菜单的第一层子菜单的类指针//为菜单的第一和第三项设置图标

pPopupMenu->SetMenuItemBitmaps(2,MF_BYPOSITION,&m_bitmap1,&m_bitmap1);ClientToScreen(&point);//将鼠标单击处的坐标转换为屏幕坐标//d出菜单函数,第一个参数表示快捷菜单的下边界与由参数y指定的坐标对齐//第二和第三个为x、y坐标,第四个表示拥有此菜单的窗口句柄,//第五个默认为NULL,表示当用户在菜单以外的区域按鼠标键时,菜单会消失pPopupMenu->TrackPopupMenu(TPM_BOTTOMALIGN,pointx,pointy,this,NULL);CDialog::OnLButtonDown(nFlags, point);}

以上就是关于sendmessage向系统托盘(任务栏右边的图标区域)发送鼠标右键信息后d出菜单,但菜单不消失全部的内容,包括:sendmessage向系统托盘(任务栏右边的图标区域)发送鼠标右键信息后d出菜单,但菜单不消失、麻烦用vbs写一段获取某个ie句柄或者是当前网页的URL、如何更改注册表添加任务栏右键菜单等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9784877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存