Форум: "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