Операционная система Windows 95 для программиста

  d8ef8794     

Разделение 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.



Содержание раздела