Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2022, 00:19   #1
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию Как поймать клик мыши на панели задач?

Здравствуйте! Первоначально окно расположено в каком-либо углу экрана по нажатию ЛКМ окно сворачивается в пиктограмму, а затем по нажатию ЛКМ по пиктограмме, оно восстанавливается в другом углу экрана. Проблема в том, что по щелчку левой клавиши мыши оно сворачивается в пиктограмму на панели задач, и, соответственно, на второе щёлканье ЛКМ не реагирует. Возможно, я вновь усложняю задачу, но как работать с панелью задач, и возможно ли отработать как-то нажатие ЛКМ так чтобы задача была выполнена. Ясно, что в функцию моего окна сообщение о нажатии клавиши из панели задач не придёт, а как тогда отработать это?
Я сделал через MoveWindow() свернул окно, оно у меня расположилось выше панели задач, но тут другая проблема свёрнутое в пиктограмму окно не реагирует на нажатие мыши. Хз... возможно, есть советы, желательно без хуков?)

[CODEcase WM_LBUTTONDOWN:
GetWindowInfo(hwnd, &winf);
SystemParametersInfo(SPI_GETWORKARE A, 0, &rcSPI, 0);
if(!IsIconic(hwnd))
MoveWindow(hwnd, 0, cyScreen - GetSystemMetrics(SM_CYCAPTION) - (cyScreen - rcSPI.bottom),
GetSystemMetrics(SM_CXMINIMIZED),
GetSystemMetrics(SM_CYCAPTION),
TRUE);
else
MoveWindow(hwnd,
winf.rcWindow.right - cxQuarterScreen,
winf.rcWindow.top,
cxQuarterScreen,
cyQuarterScreen, TRUE);][/CODE]

Когда окно сворачивается в пиктограмму на панели задач это ссылка на окно или всё ещё моё окно?) Т.е. могу я с ним работать, как с окном до его сворачивания? Если я кликаю по свёрнутому окну(пиктограмме) в панели задач окно получает сообщения об этом нажатии клавиши мыши или нет?
apofioz вне форума Ответить с цитированием
Старый 07.09.2022, 01:29   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

TrackMouseEvent
Цитата:
Сообщение от apofioz Посмотреть сообщение
Когда окно сворачивается в пиктограмму на панели задач это ссылка на окно или всё ещё моё окно?) Т.е. могу я с ним работать, как с окном до его сворачивания? Если я кликаю по свёрнутому окну(пиктограмме) в панели задач окно получает сообщения об этом нажатии клавиши мыши или нет?
На панели задач другое окно (созданное панелью задач) и клики по нему обрабатываются панелью задач.
macomics вне форума Ответить с цитированием
Старый 07.09.2022, 02:05   #3
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
TrackMouseEvent

На панели задач другое окно (созданное панелью задач) и клики по нему обрабатываются панелью задач.
Вопрос как это обработать, не могу понять, если они обрабатываются панелью задач и я не могу с этим ничего поделать, то, как мне реализовать, то, что требуется в задании. Как мне в моём окне обработать это, что вторая часть задания выполнялась.
а затем по нажатию ЛКМ по пиктограмме, оно восстанавливается в другом углу экрана.
apofioz вне форума Ответить с цитированием
Старый 07.09.2022, 04:58   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Вам надо перестать заниматься фигней - клики другого окна, хуки... и обработать сооветствующие вин. сообщения для вашего окна.
p51x вне форума Ответить с цитированием
Старый 07.09.2022, 05:08   #5
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
хуки... и обработать сооветствующие вин. сообщения для вашего окна.
О хуках только теоретически знаю, так что это, на данный момент, не мой уровень.(
В общем-то я не хочу перехватывать клики над другим окном...
Почему другого - это моё окно, но свёрнутое в пиктограмму, почему оно перестаёт быть моим окном после этого, после сворачивания в пиктограмму?
apofioz вне форума Ответить с цитированием
Старый 07.09.2022, 05:43   #6
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Что за каша у вас в голове? Не перестает. Так же, как и процесс в Диспетчер задач ваш, но окно другое. Так же, как и в проводнике файлы ваши, но окно другое.
p51x вне форума Ответить с цитированием
Старый 07.09.2022, 06:14   #7
apofioz
Форумчанин
 
Регистрация: 22.01.2014
Сообщений: 313
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Что за каша у вас в голове? Не перестает.
Каша как каша поэтому и пытаюсь разобраться, пока безуспешно.

Цитата:
Сообщение от p51x Посмотреть сообщение
Так же, как и процесс в Диспетчер задач ваш, но окно другое. Так же, как и в проводнике файлы ваши, но окно другое.
Да, но в проводнике я к своим фалам обратиться могу, кликнуть по ним - открыть, закрыть, изменить... А в данном случает, ну, понятно, что в данном случае. Кстати как-то добавляют в трей иконки, работают с панелью задач, значит должны быть WinAPI для работы и этими объектами)

Но как-то же всё это функционирует, если кликаю на пиктограмме, окно восстанавливается в том же углу, в котором оно было до того как его свернули, как-то система реагирует на это знает, где было окно до сворачивания. Я смотрел в spy++ там море всяких сообщений малопонятных, и ни одного из тех, которые я наблюдаю, когда кликаю в рабочей области окна, из чего ясно, что свёрнутое окно уже со мной не контактирует, но не ясно почему.
А если применить функцию SetCapture(), чтобы реагировало на нажатие ЛКМ вне области окна т.е. например на заголовке окна и.т.д. Тогда можно свернуть с помощью MoveWindow() и так же вернуть всё обратно с помощью той же функции. Я пробовал, но ничего путного не получилось, где лучше вызывать функцию SetCapture() WM_LBUTTONDOWN -- УЖЕ ПОЗНО я кликнул на окне.. WM_CREATE - слишком рано, приложение начинает тормозить...
Без обид, просто пытаюсь вникнуть в программирование под Windows на WinAPI и многое для меня, словно, тёмный лес.
apofioz вне форума Ответить с цитированием
Старый 07.09.2022, 08:06   #8
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
а затем по нажатию ЛКМ по пиктограмме, оно восстанавливается в другом углу экрана.
При сворачивании окна WM_ACTIVATE или WM_SHOWWINDOW вы просто должны задать координаты одного из трех других углов. Тогда при разворачивании окна обычным способом, оно отобразится в другом углу экрана. См. SetWindowPos

Это все можно реализовать не вторгаясь в другое приложение с хуками и все будет в рамках задания. Прочитайте его внимательнее. По нажатию ЛКМ на пиктограмме ваше окно так и так будет развернуто.

Последний раз редактировалось macomics; 07.09.2022 в 08:11.
macomics вне форума Ответить с цитированием
Старый 07.09.2022, 08:14   #9
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Почему другого - это моё окно, но свёрнутое в пиктограмму, почему оно перестаёт быть моим окном после этого, после сворачивания в пиктограмму?
Вы ошибаетесь. Ваше окно это только рамочка с заголовком, которая отображается как окно. Когда оно появляется, то на панели создается дополнительное дочернее окно, которое не является вашим. Нажатия на этом окне обрабатывает панель, а сворачивания - система. При ЛКМ на этом дополнительном окне панель генерирует сообщение о разворачивании вашего окна, а системе посылается сигнал о его показе. Там еще будут мероприятия связанные с фокусом ввода, активацией, перерисовкой и т. д.
Кстати миниатюра тоже не ваше окно, просто панель задач создала пиктограмму вашего окна в виде картинки (которую регулярно обновляет) и создала еще одно свое окно с этой картинкой.

Последний раз редактировалось macomics; 07.09.2022 в 08:18.
macomics вне форума Ответить с цитированием
Старый 07.09.2022, 08:46   #10
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от apofioz Посмотреть сообщение
Да, но в проводнике я к своим фалам обратиться могу, кликнуть по ним - открыть, закрыть, изменить...
И с окном абсолютно также - сообщения приходят, процесс работает, окно соврачивается и разворачивается. Даже прогресс операций показывается.

Цитата:
Сообщение от apofioz Посмотреть сообщение
Кстати как-то добавляют в трей иконки, работают с панелью задач, значит должны быть WinAPI для работы и этими объектами)
Конечно. И с вашим окном можно работать, и тоже ВинАПИ есть.

Цитата:
Сообщение от apofioz Посмотреть сообщение
Но как-то же всё это функционирует, если кликаю на пиктограмме, окно восстанавливается в том же углу, в котором оно было до того как его свернули, как-то система реагирует на это знает, где было окно до сворачивания.
А почему бы ей не знать, если только тип отображения поменялся?

Цитата:
Сообщение от apofioz Посмотреть сообщение
Я смотрел в spy++ там море всяких сообщений малопонятных, и ни одного из тех, которые я наблюдаю, когда кликаю в рабочей области окна, из чего ясно, что свёрнутое окно уже со мной не контактирует, но не ясно почему.
Потому что надо было в начале смотреть сообщения для вашего окна, а не лезть непонятно куда. Поставьте лог в ВАШУ функцюю окна и увидите.

Цитата:
Сообщение от apofioz Посмотреть сообщение
Я пробовал, но ничего путного не получилось, где лучше вызывать функцию SetCapture() WM_LBUTTONDOWN -- УЖЕ ПОЗНО я кликнул на окне.. WM_CREATE - слишком рано, приложение начинает тормозить...
Без обид, просто пытаюсь вникнуть в программирование под Windows на WinAPI и многое для меня, словно, тёмный лес.
Нафига? Вам приходит сообщение сворачивания и разворачивания, вы их можете обработать... чего вам не хватает?
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Клик мыши по цвету xRamzeSx Общие вопросы Delphi 8 06.02.2012 00:58
Поймать клик мыши maks5 Общие вопросы Delphi 1 06.01.2012 00:01
Как поймать клик по строке в ListView? jungle Win Api 5 19.10.2009 10:10
TСhart, клик мыши и координаты XY, Определение координат оси при клике мыши Aravild Компоненты Delphi 1 31.01.2009 16:28
Клик мыши stayer Общие вопросы Delphi 1 30.10.2008 19:53