Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

PaintBox как в MS Paint (только WinAPI)


ProgRAMmer Dimonych ©   (2010-12-26 20:23:00) 

Стоит задача сделать на чистом WinAPI что-то вроде графического редактора. Область рисования делаю отдельным оконным классом, WS_CHILD. Обработкой WM_NCHITTEST, WM_WINDOWPOSCHANGING и WM_WINDOWPOSCHANGED сделал такие же точки для ресайза на границах окна, как в MS Paint. Работают.

Но при изменении размеров этого "PaintBox"-а происходит постоянная перерисовка. В MS Paint вместо этого рисуется FocusRect, а собственно окно с изменёнными размерами рисуется по окончании ресайза. Соответственно, не мерцает. Перерыл гугл, пробовал использовать разные способы, обрабатывая WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE, убирая из стилей класса CS_HREDRAW и CS_VREDRAW. Ни один из способов не работает.

Есть ли вообще какое-нибудь работающее решение, кроме как временно изменять настройки системы SPI_SETDRAGFULLWINDOWS?


ProgRAMmer Dimonych   (2010-12-28 03:14:00) [1]

> [4] clickmaker ©   (27.12.10 13:27)
> > Область рисования делаю отдельным оконным классом
>
> нафига? можно же растровой операцией xor воспользоваться.
> Собственно, так и работают все графические редакторы, MS
> Paint в том числе

По условию задачи там предполагается использование метафайлов и кой-каких свистелок по мелочи. Поэтому удобно обернуть это всё в отдельный класс: оконный и Delphi-йский. Такие велосипеды :)


Дмитрий С   (2010-12-27 17:15:00) [2]

пэйнт, кстати, может работать как ole сервер (или типа того).


clickmaker   (2010-12-27 13:27:00) [3]

> Область рисования делаю отдельным оконным классом

нафига? можно же растровой операцией xor воспользоваться. Собственно, так и работают все графические редакторы, MS Paint в том числе


KilkennyCat   (2010-12-26 23:32:00) [4]

Не объемное. Я давно как-то с похожей проблемой столкнулся, причем как раз Игорь Шевченко что-то путное посоветовал, но что? не помню...


ProgRAMmer Dimonych   (2010-12-26 23:29:00) [5]

> [1] Игорь Шевченко ©   (26.12.10 22:38)
> MS Paint работает ? Значит есть

Вот, собственно, и хотелось бы поинтересоваться, насколько объёмным будет это решение. Ну и опять же - не изобретать велосипед, а взять готовые чертежи, т.е. информация о том, с чего начать и с какой стороны подступиться :)


Игорь Шевченко   (2010-12-26 22:38:00) [6]


> Есть ли вообще какое-нибудь работающее решение


MS Paint работает ? Значит есть


Наверх

Титульная страница Поиск, карта сайта Написать письмо