VC++ (.Net) 2010 Рисование графики в окне

Как я могу нарисовать файл .png в определенном окне, например, в блокноте?

HWND hWnd = FindWindow(0, "Untitled - Notepad");

void DrawTohWnd()
{
     Image^ newImage = Image::FromFile("smile.png");
     //Draw newImage to Window (Notepad)...
     //...
}

person Bawss    schedule 20.01.2012    source источник
comment
Для этого требуется внедрить DLL в процесс, чтобы вы могли создать подкласс окна и перехватить сообщение о рисовании. Вы не можете написать такой код на C++/CLI, для этого требуется собственный код. Очень трудно получить права.   -  person Hans Passant    schedule 20.01.2012
comment
@HansPassant: вы правы насчет внедрения DLL. Но управляемый код может прекрасно выполнять подклассы окон. См. NativeWindow::AssignHandle.   -  person Ben Voigt    schedule 21.01.2012


Ответы (1)


Самый простой способ — использовать метод Graphics::DrawImage. и передайте свой объект Image (вместе с любыми другими желаемыми параметрами, указывающими параметры рисования).

Но для этого требуется, чтобы у вас был экземпляр класса Graphics, соответствующий вашему окну (HWND). Его можно получить, вызвав метод Graphics::FromHwnd. .

Однако будьте осторожны с кодом, который вы написали. Поиск окон по их заголовку по своей сути является хрупким методом — окна часто меняют заголовки.

person Cody Gray    schedule 20.01.2012
comment
Спасибо, да, я просто быстро набрал код, чтобы дать вам, ребята, лучшее понимание моей цели. - person Bawss; 20.01.2012