Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 8 мая!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

ПРОГРАММИРОВАНИЕ НА C и С++



Давно заметил, что всё-таки языки С/C++ это не самый лучший вариант программирования под Windows. Сейчас появилась масса более современных и удобных языков, например тот же Python - кроссплатформенный язык, очень легок в изучение. Я его изучил буквально за несколько дней по этому курсу - ссылка. Автор постарался, там видеоуроки на удивление легкие и понятные.

Как вычислить высоту Edit Control, чтобы изменить его размер

Когда программа изменяет шрифт в окне редактирования, ей необходимо вычислить новую высоту окна редактирования, чтобы шрифт отобразился правильно. Если edit control содержит бордюр, то элемент управления должен автоматически добавить белое пространство, чтобы текст не наезжал на бордюр.

В этой статье, на примере показывается, как программа может изменять высоту окошка редактирования при изменении шрифта, чтобы текст в окошке смотрелся правильно.

Высота окошка редактирования вычисляется как высота шрифта плюс половина высоты наименьшего шрифта окошка редактирования или высоты системного шрифта. Для того, чтобы вычислить новую высоту edit control при смене шрифта, можно воспользоваться следующей функцией:

Пример кода

   void ResizeEdit(HWND hwndEdit, HFONT hNewFont)
    {
       HFONT       hSysFont,
                   hOldFont;
       HDC         hdc;
       TEXTMETRIC  tmNew,
                   tmSys;
       RECT        rc;
       int         nTemp;
 
       // Получаем DC для edit control.
       hdc = GetDC(hwndEdit);
 
       // Получаем метрики системного шрифта.
       hSysFont = GetStockObject(SYSTEM_FONT);
       hOldFont = SelectObject(hdc, hSysFont);
       GetTextMetrics(hdc, &tmSys);
 
       // Получаем метрики для нового шрифта.
       SelectObject(hdc, hNewFont);
       GetTextMetrics(hdc, &tmNew);
 
       // Возвращаем первоначальный шрифт в DC и освобождаем DC.
       SelectObject(hdc, hOldFont);
       DeleteObject(hSysFont);
       ReleaseDC(hwndEdit, hdc);
 
       // Вычисляем новую высоту для окошка редактирования.
       nTemp = tmNew.tmHeight + (min(tmNew.tmHeight, tmSys.tmHeight)/2) +
       (GetSystemMetrics(SM_CYEDGE) * 2);
 
       // Изменяем размер окна редактирования.
       GetWindowRect(hwndEdit, &rc);
       MapWindowPoints(HWND_DESKTOP, GetParent(hwndEdit), (LPPOINT)&rc, 2);
       MoveWindow( hwndEdit,
                   rc.left,
                   rc.top,
                   rc.right - rc.left,
                   nTemp,
                   TRUE);
    }


<< ВЕРНУТЬСЯ В ПОДРАЗДЕЛ

<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ




Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS