Я кодирую приложение MFC / C ++, которое размещает несколько значков на панели задач. (Количество значков контролируется пользователем и может достигать до 10 или около того, если пользователь желает это сделать — каждая для определенной функции приложения.)
У меня вопрос, могу ли я контролировать порядок размещения этих значков в трее?
Что происходит сейчас, это когда я звоню
Shell_NotifyIcon(NIM_ADD, &nid);
в определенном порядке порядок, в котором значки отображаются в реальном лотке, отличается.
Панель задач — это просто элемент управления 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);