资 源 简 介
翻译 maninwest@Codeforge 作者 Irek Zielinski@CodeProject是否有时候想知道你的托盘图标的位置? Windows 没有提供此功能的 API。这个类是个紧凑的解决方案并且有效,这个简洁的类让不可能成为可能 - 它可以发现应用程序的托盘图标的位置。方法(2+)直接方法: 如果终端用户只使用 MS Windows 自带的托盘管理器的话,这个方法会很不错。此方法的主要原理是系统托盘使用常规工具栏控件来显示图标。找到这个控件的句柄,然后直接请求它获得图标的矩形。这需要实现两步。首先,需要找到工具栏控件的句柄,这可以通过枚举系统中所有窗口找到Shell_TrayWnd 类名称的那个。然后,枚举托盘的所有子窗口找到工具栏。找到工具栏的句柄后,就可以查询获得当前拥有的图标数量://now we check how many buttons is there - should be more than 0
int iButtonsCount = SendMessage(hWndTray, TB_BUTTONCOUNT, 0, 0);如果图标数量看上去没有问题(大于 0), 则开始考虑如何请求此控件获得图标。如果工具栏是我们的应用的一部分,我们只需发送 TB_GETBUTTON and TB_GETITEMRECT 消息给它,类似于:for(int iButton=0; iButton