你可以使用RegisterWindowMessage来确定一个没有被Windows占用的消息值,然后使用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 need.
LRESULT CMainFrame::OnTaskBarCreated(WPARAM wp, LPARAM lp)
{
VERIFY(InstallIcons());
return 0;
}
BOOL CMainFrame::InstallIcons()
{
NOTIFYICONDATA nid;
//
// stuff nid with args
//
return Shell_NotifyIcon(NIM_ADD, &nid);
}
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 need.
LRESULT CMainFrame::OnTaskBarCreated(WPARAM wp, LPARAM lp)
{
VERIFY(InstallIcons());
return 0;
}
BOOL CMainFrame::InstallIcons()
{
NOTIFYICONDATA nid;
//
// stuff nid with args
//
return Shell_NotifyIcon(NIM_ADD, &nid);
}