C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




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

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


Автор: 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