我的图标添加到系统托盘的顺序?

时间:2014-05-21 19:54:41

标签: c++ windows mfc system-tray trayicon

我正在编写一个MFC / C ++应用程序,它在系统托盘上放置了几个图标。 (图标的数量由用户控制,如果用户希望这样做,最多可以达到10个 - 每个应用程序的某个功能。)

我的问题是,我可以控制这些图标放在托盘上的顺序吗?

现在发生的事情是,当我打电话

Shell_NotifyIcon(NIM_ADD, &nid);

按照特定顺序,图标在实际托盘上的显示顺序是不同的。

1 个答案:

答案 0 :(得分:0)

任务栏只是一个ToolBar32控件。你可以用这样的东西来处理它:

HWND hWnd = ::FindWindow(_T("Shell_TrayWnd"), NULL);
if(hWnd)
{
    hWnd = ::FindWindowEx(hWnd,NULL,_T("TrayNotifyWnd"), NULL);
    if(hWnd)
    {
        hWnd = ::FindWindowEx(hWnd,NULL,_T("SysPager"), NULL);
        if(hWnd)
        {                
            hWnd = ::FindWindowEx(hWnd, NULL,_T("ToolbarWindow32"), NULL);
        }
    }
}

然后你应该可以这样称呼:

::SendMessage(hWnd, TB_MOVEBUTTON, nFrom, nTo);