Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2017, 18:57   #1
Maxim_St
Пользователь
 
Регистрация: 10.05.2017
Сообщений: 23
По умолчанию Не могу понять как поменять размер Rebar'a.

Здравствуйте.
Создал Rebar, добавил два ToolBar'a.
А как поменять размер Rebar'a под ширину окна, не могу понять.
Помогите пожалуйста.

Код:
case WM_CREATE:
	{
					  hWndToolbar = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
						  WS_CHILD | TBSTYLE_WRAPABLE | CCS_NORESIZE | CCS_NOPARENTALIGN 
                                                  | TBSTYLE_ALTDRAG | TBSTYLE_LIST | /*TBSTYLE_FLAT |*/ CCS_ADJUSTABLE 
                                                  | TBSTYLE_TRANSPARENT | WS_VISIBLE | CCS_NODIVIDER, 0, 0, 0, 0,
						  Wnd, (HMENU)hWndToolbarID, HInstance, NULL);
					  
					  SendMessage(hWndToolbar, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DOUBLEBUFFER);
					
					  TBBUTTON tbButtons[] =
					  {
						  { 0, lll, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, { 0 }, 0, (INT_PTR)L"1" },
						  { 0, 2, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE /*| TBSTYLE_SEP*/, { 0 }, 0, (INT_PTR)L"2" },
						  { 0, 3, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, { 0 }, 0, (INT_PTR)L"3" },
						  { 0, 123, TBSTATE_ENABLED, TBSTYLE_SEP, { 0 }, 0, 0 },
						  { 0, 4, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE /*| TBSTYLE_SEP*/, { 0 }, 0, (INT_PTR)L"4" }
					  };


					  // Add buttons.
					  SendMessage(hWndToolbar, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);

					  SendMessage(hWndToolbar, TB_ADDBUTTONS, (WPARAM)5, (LPARAM)&tbButtons);
					  SendMessage(hWndToolbar, TB_AUTOSIZE, 0, 0);

					  hWndToolbarTop = CreateWindowEx(0, TOOLBARCLASSNAME, NULL,
						  WS_CHILD | TBSTYLE_WRAPABLE | CCS_NORESIZE | CCS_NOPARENTALIGN | TBSTYLE_ALTDRAG |
                                                   TBSTYLE_LIST | /*TBSTYLE_FLAT |*/ CCS_ADJUSTABLE | TBSTYLE_TRANSPARENT | WS_VISIBLE 
                                                   | CCS_NODIVIDER, 0, 0, 0, 0,
						  Wnd, (HMENU)hWndToolbarTopID, HInstance, NULL);
					 
					  
					  SendMessage(hWndToolbarTop, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DOUBLEBUFFER);
					  TBBUTTON tbButtonsTop[] =
					  {
						  {0, 5, TBSTATE_ENABLED | TBSTATE_WRAP, TBSTYLE_AUTOSIZE | TBSTYLE_CHECK, { 0 }, 0, (INT_PTR)L"5" },
						  { 0, 6, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE | TBSTYLE_CHECK /*| TBSTYLE_SEP*/, { 0 }, 0, (INT_PTR)L"6" },
						  {0, 7, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE, { 0 }, 0, (INT_PTR)L"7" },
						  { 0, 8, TBSTATE_ENABLED, TBSTYLE_BUTTON |TBSTYLE_AUTOSIZE, { 0 }, 0, (INT_PTR)L"8" },
						  { 0, 9, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE /*| TBSTYLE_SEP*/, { 0 }, 0, (INT_PTR)L"9" },
						  { 5, 10, TBSTATE_ENABLED, TBSTYLE_AUTOSIZE /*| TBSTYLE_SEP*/, { 0 }, 0, (INT_PTR)L"11111111111111111111111111111111111" }
					  };

					  SendMessage(hWndToolbarTop, TB_BUTTONSTRUCTSIZE, (WPARAM)sizeof(TBBUTTON), 0);
					
					  SendMessage(hWndToolbarTop, TB_ADDBUTTONS, (WPARAM)6, (LPARAM)&tbButtonsTop);
					  SendMessage(hWndToolbarTop, TB_AUTOSIZE, 0, 0);
	

					  rebar = CreateWindowEx(0, REBARCLASSNAME, 0,
						  WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | RBS_AUTOSIZE|
						  RBS_VARHEIGHT | CCS_NODIVIDER | RBS_BANDBORDERS,
						  0, 0, 0, 0, Wnd, 0, HInstance, 0);

					  REBARBANDINFO rbi[2] = { sizeof(REBARBANDINFO) };
					  rbi[0].cbSize = sizeof(REBARBANDINFO);
					  rbi[0].fMask = RBBIM_STYLE |
						  RBBIM_TEXT |
						  RBBIM_CHILD |
						  RBBIM_CHILDSIZE |
						  RBBIM_SIZE;
					  rbi[0].fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON;
					  rbi[0].lpText = L"123";
					  rbi[0].cch = _tcslen(rbi[0].lpText);
					  LRESULT lrBtnSize = SendMessage(hWndToolbarTop, TB_GETBUTTONSIZE, 0, 0);
					  rbi[0].cyChild = 0;//MAKEPOINTS(lrBtnSize).y+100;
					  rbi[0].cxMinChild = 0;//MAKEPOINTS(lrBtnSize).x;
					  rbi[0].cyMinChild = MAKEPOINTS(lrBtnSize).y;
					  rbi[0].cxIdeal = 0;//MAKEPOINTS(lrBtnSize).x;
					  rbi[0].cx = /*0;//*/MAKEPOINTS(lrBtnSize).x;
					  rbi[0].hwndChild = hWndToolbarTop;
					  //rbi[0].hwndChild =  hWndToolbar;
					  SendMessage(rebar, RB_INSERTBAND, WPARAM(-1), LPARAM(&rbi[0]));

					  rbi[1].cbSize = sizeof(REBARBANDINFO);
					  rbi[1].fMask = RBBIM_STYLE |
						  RBBIM_TEXT |
						  RBBIM_CHILD |
						  RBBIM_CHILDSIZE |
						  RBBIM_SIZE;
					  rbi[1].fStyle = RBBS_CHILDEDGE | RBBS_GRIPPERALWAYS | RBBS_USECHEVRON;
					  rbi[1].lpText = L"456";
					  rbi[1].cch = _tcslen(rbi[1].lpText);
					  LRESULT lrBtnSize2 = SendMessage(hWndToolbar, TB_GETBUTTONSIZE, 0, 0);
					  rbi[1].cyChild = 0;//MAKEPOINTS(lrBtnSize).y+100;
					  rbi[1].cxMinChild = 0;//MAKEPOINTS(lrBtnSize).x;
					  rbi[1].cyMinChild = MAKEPOINTS(lrBtnSize2).y;
					  rbi[1].cxIdeal = 0;//MAKEPOINTS(lrBtnSize).x;
					  rbi[1].cx = /*0;//*/MAKEPOINTS(lrBtnSize2).x;
					 // rbi[1].hwndChild = hWndToolbarTop;
					   rbi[1].hwndChild =  hWndToolbar;
					  SendMessage(rebar, RB_INSERTBAND, WPARAM(-1), LPARAM(&rbi[1]));

					  return 0;
	}

Последний раз редактировалось Maxim_St; 16.12.2017 в 19:46.
Maxim_St вне форума Ответить с цитированием
Старый 17.12.2017, 15:24   #2
Maxim_St
Пользователь
 
Регистрация: 10.05.2017
Сообщений: 23
По умолчанию

Я так понимаю, никто не знает.
Отвечу сам себе.
CCS_NOMOVEY========= Заставляет орган управления, в ответ на сообщение WM_SIZE, изменять размеры и перемещаться горизонтально, а не вертикально. Если используется стиль CCS_NORESIZE, то этот стиль не применяется. Окна Заголовка имеют этот стиль по умолчанию.


Если есть какие либо наработки и не жалко, поделитесь пожалуйста.

Последний раз редактировалось Maxim_St; 17.12.2017 в 16:45.
Maxim_St вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не могу понять как Dexxyx PHP 3 22.02.2013 18:14
не могу понять как их сделать. Дашуля_18 Паскаль, Turbo Pascal, PascalABC.NET 2 19.03.2012 14:28
НЕ МОГУ ПОНЯТЬ КАК ДОДЕЛАТЬ 6ot777 Паскаль, Turbo Pascal, PascalABC.NET 3 26.05.2011 22:01
не могу понять как решать(( что и как(( дурачок же я )) durachok) Паскаль, Turbo Pascal, PascalABC.NET 0 25.12.2008 14:45