Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Вниз

как получить хэндл окна, находящегося под курсором мыши?   Найти похожие ветки 

 
lucifer ©   (2005-12-01 17:15) [0]

Собственно сабж!


 
Игорь Шевченко ©   (2005-12-01 17:37) [1]

GetCursorPos + WindowFromPoint


 
ANB ©   (2005-12-01 17:42) [2]


> lucifer ©   (01.12.05 17:15)

Или использовать другой хук, который присылает хендл окна.


 
Lucifer ©   (2005-12-02 11:58) [3]

>GetCursorPos + WindowFromPoint
не больно хорошо работает! т.к. при  выполнении функции WindowFromPoint возвращается значение хэндла не самого окна,а к примеру если навести не на само окно, а его компонент - то хэндл компонента!

>Или использовать другой хук, который присылает хендл окна.

А можно по подробнее!

Всем огромное спасибо!


 
Lamer@fools.ua ©   (2005-12-02 12:11) [4]

>>Lucifer ©   (02.12.05 11:58) [3]

>не больно хорошо работает! т.к. при  выполнении функции WindowFromPoint возвращается значение хэндла не самого окна,а к примеру если навести не на само окно, а его компонент - то хэндл компонента!
Работает как раз прекрасно.  Но если нужно именно окно в понятиях пользователя, то GetParent() или GetAncestor(), вероятно, спасёт отца русской демократии.


 
Lucifer ©   (2005-12-02 12:20) [5]

>то GetParent() или GetAncestor(),

хорошо, спасибо, с первым я примерно разобрался, но со вторым параметром второго не совсем? Можно по подробнее?


 
lucifer ©   (2005-12-02 12:25) [6]

вся проблема в том, что мне надо закрыть окно которое находиться под урсором мыши в момент нажатия определённой кнопки мыши? как закрывать окно зная его хэндл я научился, а вот как получать сам хэндл самого окна, а не его составляющего пока нет!

Заранее благодарен в любой помощи!


 
ANB ©   (2005-12-02 12:31) [7]


> lucifer ©   (02.12.05 12:25) [6]

WH_GETMESSAGE
Но тоже получишь хендл контролла.
Вот этот код достанет тебе хендл окна :

hMainWnd := hCallWnd;
while (
    ((GetWindowLong(hMainWnd, GWL_STYLE) and WS_CHILD) <> 0)
and ((GetWindowLong(hMainWnd, GWL_EXSTYLE) and WS_EX_MDICHILD) = 0)
) do hMainWnd := GetParent(hMainWnd);


 
ANB ©   (2005-12-02 12:32) [8]


> lucifer ©   (02.12.05 12:25) [6]

Не забудь отфильтровать только мышиные события, а то повесишь комп (Ctrl+Alt+Del + перелогинится - помогает)


 
Lucifer ©   (2005-12-29 20:04) [9]

>Не забудь отфильтровать только мышиные события, а то повесишь комп (Ctrl+Alt+Del + перелогинится - помогает)
Я не поял к чему, но за код огромное спасибо!! Работает точно так, как надо, а то я уже начал думать, что придёться отказаться от этого проекта.
Ещё раз огромное спасибо за помощь, очень признатален!



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.03.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.014 c
2-1141628718
mfender
2006-03-06 10:05
2006.03.19
TTreeView &amp; OnChange


1-1139902820
NeyroSpace
2006-02-14 10:40
2006.03.19
Обработка ошибок при инициализации приложения


3-1138109339
Tornado
2006-01-24 16:28
2006.03.19
MS SQL Server Connect


15-1140472832
GanibalLector
2006-02-21 01:00
2006.03.19
Снифер для GPRS сетей


8-1128869883
Zur
2005-10-09 18:58
2006.03.19
TImage





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский