Об’єднуючи всі разом: Scribble версії 2

Як ви памятаєте, в розділі 2 ми написали програму Scribble (каракулі), яка є навчальною програмою в Visual C + + і займає добру сотню сторінок коду Якщо не памятаєте, нічого страшного в цьому немає Характерні моменти ми розберемо в даному прикладі

Програма Scribble дозволяє малювати на формі за допомогою миші Натиснувши ліву кнопку, ви починаєте процес малювання, так що можна, утримуючи ліву кнопку натиснутою, переміщати мишу за формою, залишаючи за собою слід Коли ми залишили програму Scribble, в ній була купа проблем Першою серйозною проблемою було обмеження (повязане з дизайном програми) в 100 точок, що беруть участь в процесі малювання Хоча це число можна поміняти, але все одно програма залишиться привязаною до конкретного обмеженому числу точок Ми збираємося вирішити цю проблему, використовуючи клас STL vector замість звичайного статичного масиву точок

Друга проблема в програмі Scribble не так помітна, але проте вона є Коли ви малюєте лінію в Scribble і відпускаєте кнопку миші, програма перестає стежити за переміщенням курсору Якщо ви ще раз натиснете кнопку, то у вас вийде окремий шматок зображення Все це здорово, однак проблема проявляється, коли ми перемальовували форму (у процедурі paint) Якщо, наприклад, ви намалювали кілька ліній, а потім згорнули і знову розкрили форму, то відобразиться тільки остання лінія Це відбувається через те, що ми зупиняємо запис координат, коли відпускається кнопка миші, і запускаємо запис за новою (з початку), коли кнопка натискається У даному прикладі ми виправимо Scribble раз і назавжди, так що все буде працювати правильно

Повний вихідний код даного прикладу знаходиться на компакт-диску в каталозі Chapter5 \ ScribbleSTL Якщо хочете, можете не набирати код, а просто скопіювати його з компакт-диска

Замість того, щоб все перебудувати в дизайні проекту, ми будемо виправляти старий проект, додаючи речі, які нам потрібні Якщо вам цікаво, як це все було побудовано спочатку, перегляньте главу 2

Перший крок – замінити існуючі масиви точок на масив типу vector, що містить точки Нам також хотілося б змінити процес, щоб запамятовувати переміщення миші, а також момент, коли відпускається кнопка миші, так що ми збираємося зберігати інформацію в обєкті Цей новий клас C + + міститиме координати X і Y усіх точок, а також прапор, який вказує, чи було це простим переміщенням або малюванням лінії Режим move означатиме, що кнопка миші відпущена в даний момент, а режим draw – що кнопка натиснута

Для цього нам потрібно зробити кілька речей По-перше, треба визначити новий клас, що містить описану вище інформацію По-друге, нам потрібно змінити клас батьківського вікна MDI, щоб можна було використовувати наш новий клас в масиві (vector) з бібліотеки STL і отримувати з цього масиву необхідну інформацію

Джерело: Теллес М – Borland C + + Builder Бібліотека програміста – 1998

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*