Изменение размера элемента управления CStatic динамически, чтобы соответствовать тексту

На данный момент я использую следующее, чтобы кодировать, чтобы изменить размер моего CStatic управления:

WINDOWPLACEMENT wndpl;
m_myStaticControl.GetWindowPlacement(&wndpl);

// Increase the static box's width
wndpl.rcNormalPosition.right += 10;

m_myStaticControl.SetWindowPlacement(&wndpl);
m_myStaticControl.SetWindowText("Some text");

Я получаю постоянную (в приведенном выше случае 10) методом проб и ошибок. Поскольку это кажется действительно не элегантным и сложным в обслуживании решением, я хочу изменить это. После некоторого исследования, я думаю, у меня есть основная идея; который:

  1. Получите ширину и высоту требуемого текста в пикселях, используя GetTextExtentPoint32.
  2. Получить текущее размещение окна CStatic управление, как в примере кода выше.
  3. Если текущая ширина < полученная ширина пикселя, добавить полученную ширину пикселя. Сделайте то же самое для высоты.
  4. Установите расположение окна, как в примере кода выше.
  5. Установите текст окна, как в примере кода выше.

Будет ли это хороший, эффективный подход? Кроме того, делает GetTextExtentPoint32 использовать пиксели или диалоговые единицы?

3

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector