Форум: "WinAPI";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
ВнизКак получить хэндл окна Найти похожие ветки
← →
AngelSaint (2003-07-30 09:40) [0]Доброго времени суток мастера!
Проблема в следующем: есть окно моей программы. Как мне узнать дескриптор окна программы, которая была активна до того, как активизировалась моя софтина? т.е. мне нужно, чтобы мое окно спокойно висело посреди экрана и не мешало работе с другими приложениями. Если можно, то поподробней или киньте ссылку на нужную статью.
← →
Игорь Шевченко (2003-07-30 10:03) [1]WM_ACTIVATE обрабатывать
← →
AngelSaint (2003-07-30 14:02) [2]а причем тут WM_ACTIVATE? тут я смогу только узнать что мое приложение активируется, а мне нужно другое.
> Игорь Шевченко © (30.07.03 10:03)
> WM_ACTIVATE обрабатывать
← →
VMcL (2003-07-30 14:09) [3]>AngelSaint (30.07.03 14:02)
F1:
WM_ACTIVATE
fActive = LOWORD(wParam); // activation flag
fMinimized = (BOOL) HIWORD(wParam); // minimized flag
hwndPrevious = (HWND) lParam; // window handle
hwndPrevious
Value of lParam. Identifies the window being activated or deactivated, depending on the value of the fActive parameter. If the value of fActive is WA_INACTIVE, hwndPrevious is the handle of the window being activated. If the value of fActive is WA_ACTIVE or WA_CLICKACTIVE, hwndPrevious is the handle of the window being deactivated. This handle can be NULL
← →
Иван (2003-07-30 14:47) [4]Используй хуки.
Вот общая ссылка на информацию по хукам (правда С-й синтаксис):
www.firststeps.ru.\mfc\winapi\hook\hook1.html
А вот более точные данные:
...
7.4.2 - Hook-точка WH_CBT
www.firststeps.ru\mfc\winapi\hook\r.php@7
Windows вызывает подключаемую процедуру WH_CBT перед активизацией, созданием, разрушением, уменьшением, максимизированием, перемещением, или установкой размеров окна; перед завершением системной команды; перед удалением события мыши или клавиатуры из системной очереди сообщений; перед установкой фокуса ввода; или перед синхронизацией системной очереди сообщений.
7.4.11 - Hook-точки WH_SHELL
www.firststeps.ru.chm::/mfc/winapi/hook/r.php@16
Windows вызывает подключаемую процедуру WH_SHELL тогда, когда оболочка прикладной программы собирается быть активной и когда окно верхнего уровня создается или разрушается.
7.5.1.14 - Функция SetWindowsHookEx
www.firststeps.ru.chm::/mfc/winapi/hook/r.php@25
Функция SetWindowsHookEx устанавливает определяемую программой подключаемую процедуру в цепочку hook-точек. Прикладная программа устанавливает фильтр - процедуру, чтобы контролировать некоторые типы событий в системе. Подключаемая процедура может контролировать события связанные или с конкретным потоком или со всеми потоками в системе. Эта функция заменяет функцию SetWindowsHook.
---
P.S.
Не забывай передавать управление следующей ловушке (7.5.1.2 - Функция CallNextHookEx),
а также удалять по завершении программы ловушку из цепочки (7.5.1.17 - Функция UnhookWindowsHookEx)
иначе тебе прийдется перезагружать тачку.
Тема сложная, я сам еще не разобрался, пока что накапливаю нужную информацию. Будет что путевое - кинь ссылку на мыло. Если разберешься с трансляцией С-ых типов к дельфийским - мыль.
А может тебе просто нужно сделать так, чтобы твое окно плавало поверх других, на манер FleshGet"овской корзинки?
Тогда все просто.
В свойстве формы .FormStyle выбери тип окна "поверх всех окон" - fsStayOnTop.
fsStayOnTop - форма является SDI-окном, но все время остается поверх всех остальных окон(искл. окна с тем же атрибутом).
Дополнительно:
fsNormal - форма является обычным SDI-окном или диалоговым окном.
fsMDIChild - форма является дочерним MDI-окном(вложенные окна).
fsMDIForm - форма является родительским MDI-окном, то есть обрамляющим окном MDI-приложения.
Панель задач - окно с атрибутом fsStayOnTop.
Желаю удачи.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c