Вверх ↑
Этот топик читают: Гость
Ответов: 893
Рейтинг: 18
#1: 2008-12-24 20:50:50 ЛС | профиль | цитата
Както уже поднимали вопрос на эту тему а вот найти её не удалось...
Хотел зделать програмку для разблокирования заблокированных элементов формы , но столкнулся с трудностью , несмог получить hendle заблокированного элемента формы
code_11036.txt

Может кто чего посоветует ?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
файлы: 1code_11036.txt [1KB] [190]
Ответов: 1161
Рейтинг: 160
#2: 2008-12-24 21:40:42 ЛС | профиль | цитата
странно - если кнопка заблокирована, то твоя схема пытается разблокировать форму, а если сделать кнопку разблокированной, а вместо операции "разблокировать" сделать "заблокировать", то будет работать(ух говорю и не понимаю, что говорю )
карма: 0

0
Ответов: 893
Рейтинг: 18
#3: 2008-12-24 21:56:16 ЛС | профиль | цитата
LainX, Да так и есть , элементы на которые можно получить хендл только активные , а вот как получить хендл не активного (заблокированного) элемента формы ума не приложу .
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2008-12-24 23:31:43 ЛС | профиль | цитата
LainX писал(а):
странно

ничего странного
MSDN писал(а):
Remarks

The WindowFromPoint function does not retrieve a handle to a hidden or disabled window, even if the point is within the window. An application should use the ChildWindowFromPoint function for a nonrestrictive search.

карма: 27
0
Ответов: 893
Рейтинг: 18
#5: 2008-12-25 02:32:50 ЛС | профиль | цитата
Dilma, а как выйти из ситуаци красиво и со вкусом ?
Ато чёто ничего не приходит на ум как отыскать ету злосчастную кнопку...

Упс забыл авторизироватся
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2008-12-25 10:16:31 ЛС | профиль | цитата
в этой же цитате и написано как...
карма: 27
0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2008-12-25 23:34:56 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 19:28:06
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#8: 2008-12-25 23:36:17 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 19:28:06
карма: 0

0
Ответов: 893
Рейтинг: 18
#9: 2008-12-25 23:41:51 ЛС | профиль | цитата
Орегинал код элемента маус ;)

begin
GetCursorPos(pos);
dtInteger(_Data,WindowFromPoint(pos));
end;


Заменил на


begin
GetCursorPos(pos);
dtInteger(_Data,ChildWindowFromPoint(pos));
end;


Результат
Подготовка к сборке проекта...
Генерация кода целевого языка
Компоновка проекта...
Command line: dcc32.exe "C:\Program Files\HiAsm2\Elements\delphi\code\Project1.dpr" "-UC:\Program Files\HiAsm2\." -Q
Borland Delphi Version 12.0 Copyright (c) 1983,98 Inprise Corporation

C:\Program Files\HiAsm2\Elements\delphi\code\hiMouseEvent.pas(112) Error: Incompatible types: 'HWND' and 'TPoint'

C:\Program Files\HiAsm2\Elements\delphi\code\Project1.dpr(16) Fatal: Could not compile used unit 'hiMouseEvent.pas'
Сборка завершена.

карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5446
Рейтинг: 323
#10: 2008-12-26 12:32:12 ЛС | профиль | цитата
Buik, естественно, ибо сказано в MSDN

MSDN писал(а):

Syntax

HWND ChildWindowFromPoint(
HWND hWndParent,
POINT Point
);

карма: 1

0
Ответов: 893
Рейтинг: 18
#11: 2008-12-27 21:11:40 ЛС | профиль | цитата
iarspider, а вот етого я пока не понял , естли найдёш свободную минутку растолкуй пожалуйста в чём фокус ?
Я конечно интуитивно понимаю что пролема в синтаксисе , но пока что мои знания не позволяют свободно разбиратся в исходном коде делфи
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5446
Рейтинг: 323
#12: 2008-12-27 22:13:30 ЛС | профиль | цитата
Byuik, поясняю:

Для вызова ChildWindowFromPoint нужны два аргумента: HWND и TPoint, а для вызова WindowFromPoint - только один TPoint.

Когда ты попытался слепо использовать эту функцию, ты получил сообщение: "Я (компилятор) не знаю, как из TPoint сделать HWND".
Чтобы использовать ChildWindowFromPoint нужно получить HWND родительского окна, в котором по координатам ищем дочернее окно.
карма: 1

0
Ответов: 893
Рейтинг: 18
#13: 2008-12-27 22:24:15 ЛС | профиль | цитата
iarspider, так получается HWND это то что получает сейчас фцнкция WindowFromPoint , и для использования функции ChildWindowFromPoint нужен результат функции WindowFromPoint .
Я правильно выражаюсь ?
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5446
Рейтинг: 323
#14: 2008-12-27 22:42:14 ЛС | профиль | цитата
Эм... Не совсем. HWND - это (уникальный) числовой идентификатор окна. Как его получили - вопрос второй (например - через FindWindow).
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2008-12-27 22:58:59 ЛС | профиль | цитата
Byuik писал(а):
так получается HWND это то что получает сейчас фцнкция WindowFromPoint

это будет так только в том случае, если под недоступным элементом находится именно родительский контрол. В такой сиутации не прокатит
code_11075.txt

ну и наконец последний нюанс: ChildWindowFromPoint принимает точку с координатами клиентской области родительского элемента, а WindowFromPoint - с координатами экрана.
карма: 27
0
файлы: 1code_11075.txt [184B] [226]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)