Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.03.27;
Скачать: CL | DM;

Вниз

PaintBox как в MS Paint (только WinAPI)   Найти похожие ветки 

 
ProgRAMmer Dimonych ©   (2010-12-26 20:23) [0]

Стоит задача сделать на чистом 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?


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


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


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


 
ProgRAMmer Dimonych ©   (2010-12-26 23:29) [2]

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

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


 
KilkennyCat ©   (2010-12-26 23:32) [3]

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


 
clickmaker ©   (2010-12-27 13:27) [4]

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

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


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

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


 
ProgRAMmer Dimonych ©   (2010-12-28 03:14) [6]

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

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



Страницы: 1 вся ветка

Текущий архив: 2011.03.27;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
15-1292354107
Фокс Йовович
2010-12-14 22:15
2011.03.27
Убить процесс


15-1292362195
Юрий
2010-12-15 00:29
2011.03.27
С днем рождения ! 15 декабря 2010 среда


2-1294129298
cross
2011-01-04 11:21
2011.03.27
освобождение памяти под интерфейс


15-1292323166
ixen
2010-12-14 13:39
2011.03.27
Setup и Firebird


15-1291997404
alexdn_
2010-12-10 19:10
2011.03.27
Картинка в php