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

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


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

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



Возможности языков семейства Си по истине безграничны, однако, в этой свободе кроются и недостатки: всегда нужно программисту держать ухо востро и контроллировать "переполнение буфера", чтобы потом программа не вылетала в "синий экран" на массе разнообразных версий Windows и железа у пользователей. Те же крэкеры и реверсеры специально ищут в коде программ на Си уязвимости, куда можно подсадить любой вирусный код, об этом более подробно автор рассказывал в своём видеокурсе здесь. Я там многое узнал и теперь мой код стал значительно более безопасный.

Изменение размера элемента управления во время выполнения приложения.


Автор: Amit Nabarro.


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

Предположим, Вы испытываете необходимость дать возможность пользователю самостоятельно изменять размер и положение определённого элемента управления? Этот пример показывает, как включить в диалоговое окно такой контрол, как это сделано в редакторе форм Вашего компилятора. В этом нам поможет класс CRectTracker, который будет управлять прорисовкой и изменением размера прямоугольного фрейма. Перво наперво Вам потребуется вызвать CRectTracker и указать нужные координаты:

LPRECT rect = new RECT;
 
 CWnd* wnd = (CWnd*)(GetDlgItem(IDC_EDIT1));
 
 wnd->GetWindowRect(rect) ;
 
 ScreenToClient(rect) ;
 
 m_tracker = new CRectTracker(rect, CRectTracker::dottedLine |
 
                                    CRectTracker::resizeOutside |
 
                                    CRectTracker::hatchedBorder);
 
 m_tracker->Draw(pDC)  ;
 
 

Нужно обработать всего два события:

  • SetCursor
    if (pWnd == this && m_tracker->SetCursor(this, nHitTest))
     
      return TRUE;
     
     

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

  • LButtonDown
    m_tracker->Track(this, point, TRUE);
     
     Invalidate(FALSE);
     
     CDC* pDC = GetDC();
     
     m_tracker->Draw(pDC);
     
     

    Этот обработчик будет заботится о получении координат прорисовке прямоугольника во время изменения его размеров.

    В заключении цикла надо нарисовать элемент управления с новыми координатами:

    LPRECT rect = new RECT;
     
     CWnd* wnd = (CWnd*)(GetDlgItem(IDC_EDIT1));
     
     rect = LPRECT(m_tracker->m_rect);
     
     wnd->MoveWindow(rect,TRUE) ;
     
     

Downloads

Скачать демонстрационный проект - 9 Kb

 





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

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




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



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


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