体育资讯网为您提供各类: 体育资讯2017最新体育资讯 大品牌游戏 希望您能喜欢!

您现在的位置: 主页 > 联系纠错 > 文章内容

系统托盘编程完全指南(二)

频道标签:网络整理 发布时间:2017-12-04 录入:admin 点击:
ad

系统托盘训练和谐的指南(二)

汇编/northtibet

下载本文的源行为准则

在本文的第一位使相称,we的有格形式议论并演示了什么将系统托盘图标应用于您本身。。用完运用本身成立人家可重用的

C++ 类——CTrayIcon,we的有格形式可以浅色的地如愿以偿托盘顺序。。不久前,我在即将到来的班上写了人家行动。,开端跑步是不变的的。,已经Windows探针死了人家未知的缘故。,执意说,关店是不不变的的。,重行开始探针,看见托盘顺序仍在运转。,已经托盘图标没显示出版。,代表团条中不可见托盘图标。,既然重行开始机具显示托盘图标,它使人味觉不安的。,有没什么某方面在即将到来的时候不用重启机具而让Windows自然的找回托盘图标并把它添加到代表团条呢?,执意说,让它自然的回复托盘图标的用户界面。,用完深思,最后受胎收获季节。

确实,假使您运用的Mac 操作系统是Windows 98,或许你使竖起的桌面。因而无论如何当时,既然启动代表团条,这么,它将向有顶级父窗口播送记录音讯。:TaskbarCreated。跟随这条秘诀,您可以重行成立图标。。假使运用MFC训练,这么既然界说人家全程变量保藏即将到来的记录音讯并如愿以偿ON_REGISTERED_MESSAGE音讯处置例程那就够了:

const UINT WM_TASKBARCREATED =

::RegisterWindowMessage(_T("TaskbarCreated"));

BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)

ON_REGISTERED_MESSAGE(WM_TASKBARCREATED,

OnTaskBarCreated)

END_MESSAGE_MAP(CMainFrame, CFrameWnd)

The handler itself should reinstall whatever icons you 需求。

LRESULT CMainFrame::OnTaskBarCreated(WPARAM wp, LPARAM LP)

{

VERIFY(InstallIcons());

return 0;

}

BOOL CMainFrame::InstallIcons()

{

NOTIFYICONDATA nid;

//

// 预备 nid 参量

//

return Shell_NotifyIcon(NIM_ADD, NID)

这易于解决吗?自然失去嗅迹。,你要手段的installicons独自功能,而失去嗅迹直线部分从OnTaskBarCreated中要求Shell_NotifyIcon,因总而言之,当应用顺序启动时,您也可以要求它。。

当我明确的神秘的taskbarcreated,我回到ctrayicon类,我在本文第一位使相称成立,它已被修正和使完备。,多样化珍奇地。。即将到来的类指导人家托盘图标(假使您有姓人家),这么为每个图标成立人家独自的包围。。当运用ctrayicon,你既然在CMainFrame中成立人家包围m_trayIcon并象上面十分的使竖起它那就够了:

// 在CMainFrame::OnCreate中

(这,

WM_MY_TRAY_NOTIFICATION);

(IDI_MYICON);

WM_MY_TRAY_NOTIFICATION 这是他本身的内心的重压,既然当有事情产生时,托盘图标发送此音讯,假使用户单击图标。在流行中间的托盘图标,你和它没什么相干?,ctrayicon负完整负责任。既然当ctrayicon反对体系,你给它人家资源ID。。ctrayicon运用即将到来的ID查找语境菜谱,假使你找到它,它自然的处置托盘图标事情的右击。,此刻伸出人家语境菜谱。。假使用户双点取图标,CTrayIcon手段的第一位个菜谱项的命令。因而你要做的执意成立人家菜谱资源。,将ID投递给体系有或起作用,这么迫使ctrayicon。。假使你祝愿少量的非标准的顺序,因而不得已处置wm_my_tray_notification。选派请参阅源行为准则。。

为了如愿以偿自然的图标使更新,我用一类用在先前的很大程度上文字CSubclassWnd,即将到来的航线快要在我的训练生活中普遍存在。。没了它,我快要什么也做无穷。;在我相当多的训练巧妙中,这是最有用处的课。。可以用即将到来的类阻挡Windows音讯,并将其发送到另人家窗口音讯处置例程,而失去嗅迹发送到Windows本身的默许音讯处置有或起作用。ctrayicon用来阻挡taskbarcreated音讯,因而你就不用为了这个目的写信音讯处置器——即将到来的方法十分酷。用完使竖起它本身的窗口转换CSubclassWnd,十分的,音讯由MFC率先处置。。

当CMainFrame要求CTrayIcon::SetNotificationWnd时,CTrayIcon要求GetTopLevelParent以获取首席父窗口,这么使竖起CSubclassWnd窗口转换,它相当于人家钩子。,在音讯抵达无论哪些窗口屯积,CSubclassWnd的窗口转换处置。喂不得已忧虑。:Windows只发送音讯到父窗口的顶部taskbarcreated。这稍许的像wm_querynewpalette、wm_syscolorchange音讯和其他的顶级窗口音讯。当Windows发送taskbarcreated,把持将率先被投递到CTrayIcon::CTrayHook::WindowProc。

CTrayIcon::OnTaskBarCreate是CTrayIcon类中新加的人家摆样子的有或起作用,默许如愿以偿是重行使竖起系统托盘中间的图标。。假使你想做别的事,可以派生人家新类并重写此默许行动。。实践窗口转换行为准则比我象征的更复杂有些人,因它还处置托盘留心来迫使默许菜谱增长。,先前,当wm_my_tray_notification音讯了,You have to call OnTrayNotification yourself。在新的ctrayicon如愿以偿,请参阅本文的源行为准则。

附带地适用于一下,你想赚得我什么受试验图标的自然的特点吗?(假使是Y,你用什么?,易于解决。在Windows 98中,按下Ctrl+Alt+Del,伸出式代表团指导器的代表团列表。。选择探针(探针),这么选择完毕代表团(完毕) 代表团)。此刻将显示关店/重行开始对话框。,此刻按下抛开芽(不要按关店芽)。这么,等几秒钟,你记下的人是即将到来的代表团没对称。,这么你不得已运用完毕代表团来答复。。Windows探针以不变的方法终止处。!这么它会自然的重行站起来,在这有些人上,taskbarcreated音讯播送到相当多的顶级父窗口。假使你的Mac 操作系统是Windows NT/2000/XP,使竖起,依葫芦画瓢。代表团条亡故时,从"开端"菜谱的"运转"对话框中敲入"explorer"开胃小吃源指导器。蔑视运用什么Mac 操作系统,在使痛苦代表团条屯积,假使traytest顺序运转,这么,当探针回复本身的保持健康时,该traytest顺序托盘图标会自然的使竖起。不忠实的话,您赚得本文的第一位使相称中间的示例顺序和。您会看见本文中间的示例顺序将处置代表团条。,另人家相对失去嗅迹。(续)