Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Вниз

Рисование в, к примеру, Paint   Найти похожие ветки 

 
alek   (2007-10-15 22:57) [0]

Проблемка такая: с помощью моей программы надо вставить изображение в область для рисования, скажем, MS Paint. Все попытки не увенчались успехом, после обновления окна то, что я туда вставлял исчезало. Подскажите, пожалуйста, как это реализовать? Ничего дельного придумать не могу :(


 
alek   (2007-10-15 23:17) [1]

Хочется, чтобы после перерисовки окна мои изменения на "области рисования" сохранились.


 
homm ©   (2007-10-16 00:04) [2]

> [0] alek   (15.10.07 22:57)
> с помощью моей программы надо вставить изображение в область
> для рисования, скажем, MS Paint

Забудь об этом.


> [1] alek   (15.10.07 23:17)
> Хочется, чтобы после перерисовки окна мои изменения на "области
> рисования" сохранились.

Перерисовка окна происходит из той самой «области рисования», буферного битмапа, но никак не в обратном направлении.

Копируй свое изображение в буфер обмена и заставь пэйнт вставить его.


 
alek   (2007-10-16 12:45) [3]

var
bTmp : TBitmap;
Format_: Word;
Data_: Cardinal;
APalette: HPALETTE;
begin
bTmp := TBitmap.Create;
bTmp.Height := 200;
bTmp.Width := 200;
bTmp.Canvas.Brush.Color := RGB(1,1,1);
bTmp.Canvas.Rectangle(10,10,100,100);
bTmp.SaveToClipboardFormat(Format_,Data_,APalette);
bTmp.Free;
OpenClipboard(Application.Handle);
EmptyClipboard;
SetClipboardData(Format_, Data_);
CloseClipboard;
...

Скопировал в буфер, а как заставить пейнт вставить это из буфера обмена (помимо сочетаний клавиш и Edit-Paste - так вставляет, но это не то)? SendMessage(хендл пейнта, WM_Paste,0,0)? Не получается %)


 
clickmaker ©   (2007-10-16 12:57) [4]


> SendMessage(хендл пейнта, WM_Paste,0,0)? Не получается

не думаю, что пейнт так вот прямо обрабатывает WM_paste
нужно WM_COMMAND посылать, или WM_CHAR/WM_KEYDOWN, чтоб сымитировать Ctrl+V


 
alek   (2007-10-16 13:29) [5]

Штука в том, что Paint это только наглядный пример. Допустим, что есть окно, в котом можно рисовать мышкой, но нет возможности вставить изображение - нет ни меню, ни сочетаний клавиш - вот в него и надо "вставить" изображение...


 
clickmaker ©   (2007-10-16 13:35) [6]


> [5] alek   (16.10.07 13:29)

а уверен, что оно вообще допускает это?


 
homm ©   (2007-10-16 13:37) [7]

> Допустим, что есть окно, в котом можно рисовать мышкой,
> но нет возможности вставить изображение - нет ни меню, ни
> сочетаний клавиш - вот в него и надо "вставить" изображение...

Никак, ибо
> Перерисовка окна происходит из той самой «области рисования»,
> буферного битмапа, но никак не в обратном направлении.


 
alek   (2007-10-16 13:58) [8]

Спасибо за разъяснения )... Тогда еще один вопрос: нарисованное же должно где-то храниться - в памяти, есть ли возможность подменить кусок этой памяти или нет?


 
homm ©   (2007-10-16 14:13) [9]

> [8] alek   (16.10.07 13:58)

Должно. Хранится. Либо в памяти, либо в видеопямяти. Нахождения точного месторасположения буфера — задача не сложная, но неустойчивая, т.к. при поиске мы можем опираться на такие понятия, как «первый дискриптор», «предпоследний дискриптор». Любое изменение версии программы влечет к изменению порядков возникновения и количества дискрипторов. Здесь под «дискриптором» я понимаю THandle объекта GDI. Не факт, что вообще возможно получить список этих объектов для другово процесса.



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

Форум: "WinAPI";
Текущий архив: 2008.06.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.041 c
15-1211181236
Ega23
2008-05-19 11:13
2008.06.29
Строки из resource-файла или что-то другое?


2-1212144201
n_sch
2008-05-30 14:43
2008.06.29
Выборка (поиск) необходимых строк в текстовом файле (макете)


2-1212564137
Trei
2008-06-04 11:22
2008.06.29
Ссылка


2-1212019695
Johnnnn
2008-05-29 04:08
2008.06.29
Как отключить загрузку изображений в TWebBrowser?


6-1189674294
istok
2007-09-13 13:04
2008.06.29
Обзор сетевого окружения...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский