我正在编写一个MFC / C ++应用程序,它在系统托盘上放置了几个图标。 (图标的数量由用户控制,如果用户希望这样做,最多可以达到10个 - 每个应用程序的某个功能。)
我的问题是,我可以控制这些图标放在托盘上的顺序吗?
现在发生的事情是,当我打电话
时Shell_NotifyIcon(NIM_ADD, &nid);
按照特定顺序,图标在实际托盘上的显示顺序是不同的。
答案 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);