Как определить дескриптор окна, на которую указывает мышь ?

 

Приведите плз. рабочий код ?!

Данная конструкция всегда печатает ноль, хотя координаты мыши считывает правильно:

#import "user32.dll" 
    bool  GetCursorPos     (int& Pos[]);
    int   WindowFromPoint  (int& Pos[]);
#import

int Mouse[2];

int start() {
    GetCursorPos(Mouse);
    int WFP = WindowFromPoint(Mouse);

    Print(WFP);

    return(0);
} 
 

Может так попробывать?

#import "user32.dll" 
    bool  SetCursorPos(int PosX, int PosY);
    int   WindowFromPoint(int& Pos[]);
#import

int Mouse[2] = {1000, 600};

void start()
 {
  SetCursorPos(Mouse[0], Mouse[1]);
  Print(WindowFromPoint(Mouse));
 }

Только, что попробывал. Не работает это у меня. Даже устанавливал курсор на чужие окна не МТ4.

Вот, что написано про эту функцию:

Замечания

Функция WindowFromPoint не извлекает дескриптор скрытого или заблокированного окна, даже если эта точка - внутри окна. Прикладная программа, для неограниченного поиска, должна использовать функцию ChildWindowFromPoint.

Может попробывать ChildWindowFromPoint ()?
 

Такое консольное приложение работает:

void _tmain(int argc, TCHAR* argv[])
 {
  while(true)
   {
    POINT Point;
    ::GetCursorPos(&Point);
    std::cout << _T("X = ") << Point.x << _T("   Y = ") << Point.y << _T("   HWND = ") << ::WindowFromPoint(Point) << std::endl;
    ::Sleep(1000);
   }
 }

Прикрепил его.

Тоже самое в МТ4 не работает. Может сделать оболочку в DLL?

Файлы:
experiment.zip  64 kb
 
Zhunko:

Такое консольное приложение работает:

Прикрепил его.

Тоже самое в МТ4 не работает. Может сделать оболочку в DLL?

Спасибо, НО:

Меня интересует: как сделать без DLL !?

Не уж-то придётся перебирать все окна в МТ4 ?!

Вот написал программу, которая пишет в файл с именем: "\files\Windows Id_*********.txt" все окна МТ4:

Файлы:
 

А цель, то, в чем ?

Определить что мышь находиться над активным окном графика ? - смотрите верхнее окно в Z последовательности, и сравнивайте глобальное положение мыши с координатами окна

 
LEOK:

Вот написал программу, которая пишет в файл в именем: "\files\Windows Id_*********.txt" все окна МТ4:

Не верю (с).
Windows enumeration производится при помощи функции-callback'а...
которую в мкл создать нельзя.
 
jartmailru:
Не верю (с).
Windows enumeration производится при помощи функции-callback'а...
которую в мкл создать нельзя.


Так запустите программу и поверите !

Я же её прикрепил ...

и результат работы - тоже.

 
xrust:

А цель, то, в чем ?

Определить что мышь находиться над активным окном графика ? - смотрите верхнее окно в Z последовательности, и сравнивайте глобальное положение мыши с координатами окна


Цель я изложил в стартовом посте.

Повторю: В МТ4 написать код (при помощи WinAPI), который определяет дескриптор окна под курсором мыши !

Думал, что это можно с помощью готовой функции: WindowFromPoint, но пока не получилось.

Вот и написал здесь - с надеждой о помощи ...

 

Ну, что ж, каков вопрос - таков ответ. И не надо так возмущаться, можно подумать что вы нас тут экзаменуете - не получил ответ, ищи сам!

вощще охренели - чем меньшее число под аватаркой тем больше гонору. И вот как после такого появиться желание кому то, чем то помогать ?????

 
xrust:

Ну, что ж, каков вопрос - таков ответ. И не надо так возмущаться, можно подумать что вы нас тут экзаменуете - не получил ответ, ищи сам!

вощще охренели - чем меньшее число под аватаркой тем больше гонору. И вот как после такого появиться желание кому то, чем то помогать ?????


Да никто Вас тут и не собирался экзаменовать, уважаемый !

Если не знаете или не хотите отвечать - не трольте ...

А задают тут вопросы не лично для ВАС, а для пользы остальных.

Если бы я знал ответ - я бы сам тут его выложил ...

 

НЕ ЛИЦЕМЕРЬТЕ - Вы спрашиваете в первую очередь для своей собственной пользы, и не надо "остальных" пристегивать.

И вообще сходите ка ВЫ сюда

Причина обращения: