Dennis1990 Ответов: 2

МФЦ: как обновить представление UGC с помощью easysize при изменении размера


Привет Сообщество
прямо сейчас я пытаюсь создать значительный диалог с помощью элемента управления embeddd grid.

После изменения размера диалогового окна, со всеми его компонентами, такими как сетка управления "рамка" - управление,
в Седловинах элемента управления сетки как таковой не будет изменять. это выглядит довольно плохо.
Только последний Col увеличивает свою ширину во время каждого движения, которое я делаю с границей диалога

я попытался добавить FitToWindow () элемента управления в функцию resize, но он просто получил необычное поведение.(видите, что вы пробовали?)

Есть ли маленький трюк, который я забыл использовать?

Спасибо

Что я уже пробовал:

//GridCtrl - это имя моего контейнера сетки внутри MyClass Dlg

недействительными класса MyClass::OnSize(uint с nType, int и СХ, инт ТИЦ)
{
CDialog:: OnSize(nType, cx, cy);
UPDATE_EASYSIZE;

GridCtrl.FitToWindow(0, m_ConfigGridCtrl. GetNumberCols()-1); // - > После нескольких изменений размера" последний " столбец будет очень большим, остальные станут меньше и переместятся влево(в направлении 0)
//GridCtrl.RedrawAll();-&ГТ;аварии
//GridCtrl.AdjustComponentSizes();-&ГТ;аварии
}

Richard MacCutchan

Откуда берется управление сеткой-это часть MFC?

Dennis1990

конечное управление сеткой является частью библиотеки CodeProject.
http://www.codeproject.com/Articles/20183/The-Ultimate-Grid-Home-Page
как Easysize:
http://www.codeproject.com/Articles/1657/EasySize-Dialog-resizing-in-no-time

Richard MacCutchan

Тогда вам действительно следует разместить свой вопрос на форуме в конце статьи. Таким образом автор узнает, что у вас есть проблема.

2 Ответов

Рейтинг:
17

KarstenK

Насколько я понимаю, ваш сеточный контейнер правильно изменяет размер только последнего столбца, а остальные-нет: это ошибка. Он может исходить от некоторого округления деления float на int, бросая дробь за борт. Вам нужно какое-то лучшее вычисление значений размеров или какая-то логика, чтобы суммировать и сбалансировать дроби.

Совет: начните с собственного массива поплавков для ширины col, чтобы понять и отследить его.


Рейтинг:
1

Dennis1990

Id создал обходной путь.

Я создал функцию изменения размера для UltimateGridControl,
который использует мой (например)"COL_1_WIDTH = 20""COL_2_WIDTH = 30" определяет
и изменяет размер всех cols сетки, не манипулируя данными.
Это работает, потому что UGC-определения относятся ко всему элементу управления сеткой.

Это не самое лучшее решение, потому что я просто подавляю и перекрашиваю,
но на данный момент лучше всего работает.

Спасибо Вам за вашу помощь

___ Я могу выстрелить из него в

::OnSize(UINT nType, int cx, int cy)
	
CDialog::OnSize(nType, cx, cy);
	UPDATE_EASYSIZE;
	if(GridCtrl)
		GridCtrl.ResizeColsWidth();


здесь я использую цикл for, чтобы установить все WIDTH_DEFINES для повторной установки ширины, не обновляя данные.