VC 修改win7任务栏按钮上的右键菜单

VC 修改win7任务栏按钮上的右键菜单,第1张

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

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

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

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

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

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

WIN7 任务栏定制 VC可用com ,主要是ITaskbarList接口,里面有任务栏 *** 作的各种接口,比如鲁大师这个进度条,用接口中SetProgressValue(hwd,6.3,10)方法就可以实现,具体可以msdn "ITaskbarList".

这篇博客你可以参考下:http://www.cnblogs.com/zhujiecode/archive/2011/08/02/2125522.html

我现在也正在做这个问题,找了半天只有这一个方法其他都不行。不知道你有什么好方法没?

在Hide.cpp中InitInstance()

CHideDlg dlgParent

dlgParent.Create(IDD_HIDE_DIALOG)

dlgParent.ShowWindow(SW_HIDE)

//dlgParent.ShowWindow(SW_SHOW)

CHideDlg dlg(&dlgParent)

m_pMainWnd = &dlg

int nResponse = dlg.DoModal()

dlgParent.DestroyWindow()

这样做的结果如果在CHideDlg.cpp中OnInitDialog()添加了加载图标菜单等都被加载俩次。所以我的做法是新加了一个什么都不显示的对话框ABC

我的代码

在Hide.cpp中InitInstance()

CAbcDlg dlg

m_pMainWnd = &dlg

int nResponse = dlg.DoModal()

if (nResponse == IDOK)

……

在Abc的OnCreate中(OnInitDialog里也可以吧)

if (dlg.DoModal() == IDOK) /*这个dlg是我在Abc中定义的类全局变量 CHideDlg dlg*/

OnOK()

else

OnCancel()

我这样虽然间接实现了不显示在任务栏但如果是Abc就是主窗口了吧(我也刚学)这样多了资源,而且一些处理要在CAbcDlg中处理


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

原文地址: https://outofmemory.cn/zaji/6438909.html

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

发表评论

登录后才能评论

评论列表(0条)

保存