Scribble, частина друга C + + Builder

Незважаючи на те що тільки що завершена нами програма Scribble виконує все, для чого призначалася, робить вона це не цілком коректно На даному етапі ми не збираємося зробити

її ідеальною, але над поліпшеннями попрацюємо Щоб зрозуміти, в чому, власне, проблема, запустіть Scribble і за допомогою миші намалюйте що-небудь на порожньому полі його вікна (я зазвичай малюю щось віддалено нагадує квадрат) Тепер мінімізуйте вікно програми, натиснувши кнопку мінімізації (або вибравши команду мінімізації з системного меню) Тепер, клацнувши на іконці програми на панелі інструментів Windows 95 або NT, розкрийте вікно знову в повнорозмірне стан І вгадайте, що ви побачите – так-так, порожнє поле вікна Що ж трапилося

Властивість Canvas обєкта TForm не є незмінним Тобто все, що намальовано в поле форми, пропадає після того, як форма була оновлена Мінімізація, а потім відновлення вікна тягнуть за собою подію оновлення Якщо ми хочемо, щоб наші шедеври були деякий час під рукою, нам доведеться якось вирішити цю невелику проблему А дозвіл її лежить у події OnPaint (При малюванні) і його обробнику

Метод OnPaint викликається для форми кожного разу, коли вікно форми стає недоступно Як ми вже бачили, це відбувається, коли ми мінімізуємо, а потім відновлюємо вікно форми Також це відбувається, якщо ви відкриваєте інше вікно поверх форми Наприклад, якщо ви в центрі екрану відкриваєте вікно повідомлення (message box), то та частина форми, яка опиниться під ним, буде недоступною CBuilder розпізнає недоступність форми, обробляючи повідомлення Windows WM_PAINT У відповідь на цей метод форма викликає відповідний метод форми OnPaint, Якщо такий є Оскільки в програмі немає обробника події OnPaint, Нічого не викликається, коли форма повинна бути перемальована, і, отже, нічого не відбивається на екрані Прийшов час поправити ситуацію, що склалася

Джерело: Теллес М – 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>

*

*