Разделение Statusbar на области
Для того чтобы разделить Statusbar на несколько областей достаточно сразу после создания послать ему сообщение SB_SETPARTS :
SendMessage(hwndSb, SB_SETPARTS, 3, (LPARAM)ptWidth);
Через параметр wParam передается количество областей (в нашем примере создается три области).
Параметр lParam должен содержать адрес массива ширин областей Toolbar :
int ptWidth[3]; // таблица ширин для Statusbar
Количество элементов в массиве должно быть равно количеству областей, на которые делится Statusbar.
Однако это еще не все.
При обработке сообщения WM_SIZE вы должны выполнить повторное определение областей:
void WndProc_OnSize(HWND hwnd, UINT state, int cx, int cy) { SendMessage(hwndTb, WM_SIZE, cx, cy); SendMessage(hwndSb, WM_SIZE, cx, cy); ptWidth[0] = cx/2; ptWidth[1] = cx/2 + cx/4; ptWidth[2] = -1; SendMessage(hwndSb, SB_SETPARTS, 3, (LPARAM)ptWidth); return FORWARD_WM_SIZE(hwnd, state, cx, cy, DefWindowProc); }
Когда обработчик сообщения WM_SIZE передает сообщение WM_SIZE органам управления Toolbar и Statusbar, они устанавливают размеры своих окон.
Затем необходимо подготовить массив ширин областей Statusbar.
В элемент массива вы можете записать либо позицию правой границы области от левого края окна Statusbar, либо значение -1. В последнем случае правая граница области простирается до правого края окна Statusbar.