Главная » 2016 » Апрель » 24 » Работаем С Рабочим Столом
17:00
Работаем С Рабочим Столом
В этой статье ми будим рассматривать работу разных функций над десктопом, а именно рисовать и запоминать его содержимое. Как всегда, я постараюсь всё хорошенечко растолковать и показать. Надеюсь, что тебе понравится сегодняшнее занятие. Для этого нам понадобиться форма с двумя кнопками и одной картинкой. Соответственно ми ставим две кнопки TButton и Одину компоненту TImage. Для первой кнопки нужно написать событие OnClick: procedure TForm1.Button1Click(Sender: TObject); var ScreenDC:HDC; begin ScreenDC := GetDC(0); Rectangle(ScreenDC, 10, 10, 200, 200); ReleaseDC(0,ScreenDC); end; С помощью этой процедуры ми рисуем прямо на десктопе. Во время рисования все запущенные приложения также поддаются. Если они попадаются под руку, то рисование происходит поверх них. Для этого ми об'явили переменную ScreenDC типа HDC. HDC – это контекст рисования в windows, и работает почти так же, как и TCanvas. С помощью функции GetDC(0) делаем возвращение контекста окна указанного в скобках. Но в этих скобках стоит 0 (ноль), а это значит, что нужен глобальный контекст, то есть самого десктопа. Далее делаем вызов функции Rectangle, она похожа TCanvas.Rectangle, есть только одно отличие – первый параметр теперь, это контекст устройства, а затем идут координаты прямоугольника. Это связано с тем, что раньше рисование делалось через объект TCanvas, а сейчас ми рисуем средствами GDI Windows. TCanvas.Rectangle всего лишь вызывает Rectangle из Windows API и подставляет нужный контекст устройства и размеры. После рисования, ми освобождаем больше не нужный нам контекст через функцию ReleaseDC, чтобы не засорять память. Если вам нужно рисовать не на десктопе, а внутри определённого окна, то в этой процедуре нужно поправить только первую строчку. А именно, в качестве параметра GetDC передавать указатель на окно, чтобы узнать указатель окна чужой программы, нужно воспользоваться функцией FindWindow.
Просмотров: 197 | Добавил: ggptkx | Рейтинг: 0.0/0
Всего комментариев: 0
avatar