解决explorer.exe出错导致任务栏重启后托盘图标丢失的BUG

explorer.exe出错导致任务栏重启后MFC程序自定义的托盘图标会丢失,解决方法如下

 

1.在stdafx.h文件或MainFrm.h文件定义消息WMEX_TASKBARCREATED:

const UINT WMEX_TASKBARCREATED = ::RegisterWindowMessage(TEXT("TaskbarCreated"));

 

2. 在MainFrm.h文件中,定义对应的消息函数OnRestartExplorer:

afx_msg LRESULT OnRestartExplorer(WPARAM wParam, LPARAM lParam);

 

3. 在MainFrm.cpp文件中定义消息映射:

ON_REGISTERED_MESSAGE(WMEX_TASKBARCREATED, OnRestartExplorer)

 

4. 在MainFrm.cpp文件中实现消息函数OnRestartExplorer:

LRESULT CMainframe::OnRestartExplorer(WPARAM wParam, LPARAM lParam)
{
  ToTray(); //添加托盘图标的函数,调用Shell_NotifyIcon函数
  return 1;
}

posted on 2012-03-08 11:36  蒹葭丶白露  阅读(989)  评论(0)    收藏  举报

导航