Скачать исполняемый
файл (необходимы динамические библиотеки MFC) - 5 Kb
Вот что можно сделать буквально за пять минут с помощью API Windows
2000. Программа делает прозрачным любое указанное мышью окно. Запустите
программу и нажмите кнопку "Hide". В системном трее появится
новая иконка с изображением буквы "Т". Затем сделайте активным
любое окно и щелкните левой кнопкой мыши на иконке. Voila, окно стало
прозрачным!
А ведб основная функциональность программы заключается всего в 4
строках кода (6 с объявлениями переменных). Все остальное - сгенерированный
MFC шаблон:
HWND hWnd;
POINT pt;
::GetCursorPos(&pt);
hWnd=::WindowFromPoint(pt);
SetWindowLong(hWnd,GWL_EXSTYLE,GetWindowLong(hWnd,GWL_EXSTYLE)^WS_EX_LAYERED);
SetLayeredWindowAttributes(hWnd,RGB(0,0,0),m_slider.GetPos(),LWA_ALPHA);
Первое, что делается в этом фрагменте - определяется окно, находящееся
под курсором мыши - это выполняется при помощи функций GetCursorPos()
и WindowFromPoint
, затем у этого окна устанавливается
стиль WS_EX_LAYERED
(новый в W2k) с помощью функции SetWindowLong
,
и, наконец, прозрачность окна устанавливается в значение (в диапазоне
от 0 до 255), определяемое слайдером. Функия SetLayeredWindowAttributes
доступна только в Windows 2000. Эта функция может ыть использована
и для задания цветового ключа, т.е. значения цвета, который становится
абсолютно прозрачным, в то время как остальные цвета остаются неизменными.
Эти два эффекта можно комбинировать.
Функция SetLayeredWindowAttributes
определяется следующим
образом:
BOOL SetLayeredWindowAttributes(
HWND hwnd, // хэндл нужного окна
COLORREF crKey, // цветовой ключ
BYTE bAlpha, // значение прозрачности
DWORD dwFlags // выполняемое действие
);
Функция SetLayeredWindowAttributes
может использоваться
и для создания эффектов "затухания", а также для создния
окон произвольной формы (обычно это делается с использованием регионов,
однако предлагаемый способ работает гораздо быстрее).
Ну, вот и все. Удачного программирования!