Последние записи
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
16th
Июл
Рисовать на рабочем столе
Posted by Chas under Delphi
Где можно найти пример с исходниками для рисовалки на рабочем столе, позволяющая рисовать на рабочем столе. Прямо на окнах, поверх любой запущенной программы
Somebody
Можно, например, рисовать в topmost layered окне. В таком случае не рисуется только поверх панели задач и менюшек.
uses
Windows, Messages;
const
windowClassName = 'RandomLetter$';
windowPosition: TPoint = (X: 0; Y: 0);
layerPosition: TPoint = (X: 0; Y: 0);
var
hSurfaceDc: HDC;
hSurfaceBitmap: HBITMAP;
hFont0: HFONT;
surfaceRect: TRect;
surfaceSize: SIZE;
screenWidth, screenHeight: Integer;
function MainWindowProc(hWnd: HWND; msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
hWndDc: HDC;
c: Char;
begin
result := 0;
case msg of
WM_CREATE:
begin
screenWidth := GetSystemMetrics(SM_CXSCREEN);
screenHeight := GetSystemMetrics(SM_CYSCREEN);
SetRect(surfaceRect, 0, 0, screenWidth, screenHeight);
surfaceSize.cx := screenWidth;
surfaceSize.cy := screenHeight;
hWndDc := GetDC(hWnd);
hSurfaceDc := CreateCompatibleDC(hWndDc);
hSurfaceBitmap := CreateCompatibleBitmap(hWndDc, screenWidth, screenHeight);
ReleaseDC(hWnd, hWndDc);
hFont0 := GetStockObject(ANSI_VAR_FONT);
SelectObject(hSurfaceDc, hSurfaceBitmap);
SelectObject(hSurfaceDc, hFont0);
SetTextColor(hSurfaceDc, $0000ff);
SetBkMode(hSurfaceDc, TRANSPARENT);
SelectObject(hSurfaceDc, GetStockObject(BLACK_PEN));
SelectObject(hSurfaceDc, GetStockObject(BLACK_BRUSH));
Rectangle(hSurfaceDc, 0, 0, screenWidth, screenHeight);
RegisterHotKey(hWnd, 0, 0, VK_NUMPAD0);
UpdateLayeredWindow(hWnd, 0, @windowPosition, @surfaceSize,
hSurfaceDc, @layerPosition, 0, nil, ULW_COLORKEY);
end;
WM_PAINT:
begin
ValidateRect(hWnd, nil);
exit;
end;
WM_DESTROY:
begin
DeleteObject(hSurfaceDc);
DeleteObject(hSurfaceBitmap);
DeleteObject(hFont0);
PostQuitMessage(0);
end;
WM_HOTKEY:
DestroyWindow(hWnd);
WM_TIMER:
begin
c := char(byte('A') + Random(26));
TextOut(hSurfaceDc, Random(screenWidth), Random(screenHeight), @c, 1);
UpdateLayeredWindow(hWnd, 0, @windowPosition, @surfaceSize,
hSurfaceDc, @layerPosition, 0, nil, ULW_COLORKEY);
end;
else
result := DefWindowProc(hWnd, msg, wParam, lParam);
end;
end;
var
windowClass: WNDCLASSEX;
hMainWindow: HWND;
mess: MSG;
begin
with windowClass do
begin
hInstance := SysInit.HInstance;
lpszClassName := windowClassName;
lpfnWndProc := @MainWindowProc;
style := CS_OWNDC;
cbSize := sizeof(windowClass);
hIcon := LoadIcon(0, IDI_APPLICATION);
hIconSm := LoadIcon(0, IDI_APPLICATION);
hCursor := LoadCursor(0, IDC_ARROW);
end;
RegisterClassEx(windowClass);
hMainWindow := CreateWindowEx(
WS_EX_TOOLWINDOW or WS_EX_TOPMOST or WS_EX_TRANSPARENT or WS_EX_LAYERED,
windowClassName, windowClassName, WS_VISIBLE or WS_POPUP or WS_MAXIMIZE,
0, 0, 0, 0, 0, 0, hInstance, nil);
SetTimer(hMainWindow, 1, 50, nil);
while GetMessage(mess, 0, 0, 0) do
DispatchMessage(mess);
halt(mess.wParam);
end.
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)