【问题标题】:How to change CDialog icon in response to mouseover?如何更改 CDialog 图标以响应鼠标悬停?
【发布时间】:2011-10-05 14:19:51
【问题描述】:

如何在鼠标悬停时更改应用程序图标?我想在我的 CDialog 的系统菜单中放置一些菜单项,并且我希望当用户将鼠标悬停在图标上时突出显示它以指示它是一个用户界面组件(类似于最新版本的 firefox 如何在其中包含 firefox 菜单橙色,当您将鼠标悬停时,它会突出显示)。

更新

“应用程序图标”是指系统菜单图标。另外,我刚刚遇到了 CMFCRibbonApplicationButton 类,虽然不是系统菜单,但它看起来也很有前途。

【问题讨论】:

  • 定义application icon。应用是不可见的东西,可见的东西包括窗口、应用栏、系统托盘图标等。
  • 您是指系统菜单中的图标,还是嵌入在对话框中的控件上的图标?如果是后者,看看这个类:irms.cvs.sourceforge.net/viewvc/irms/IRMS/Controls/… 警告:这是我 8 年前写的代码,从那以后我就没有真正看过它。但它是一个 CButton,它有一个位图资源,会随着鼠标向上/向下事件发生变化。应该与您需要的相似。
  • 我的意思是系统菜单中的图标。现在更新问题。

标签: c++ mfc icons mouseover cdialog


【解决方案1】:

检查WM_NCHITTEST 获取HTSYSMENU 代码,然后调用SetIcon

【讨论】:

  • 好一个。 +1。现在更正HTSYSMENU 的拼写;)...虽然,这对图标特别有效(即不是系统菜单,而是按照要求将鼠标悬停在图标上)。
【解决方案2】:

有实现 MouseOverEvent 的代码:http://www.codeproject.com/KB/cpp/mouseenterleave.aspx 当你捕捉到事件时,你可以做任何你喜欢的事情。

【讨论】:

  • 您确定在非客户区有效吗?我很确定它不会,但我可能是错的。
猜你喜欢
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-10
  • 2010-11-30
相关资源
最近更新 更多