Orion9

|
Posted: Mon Jul 28, 2025 17:58 Post subject: |
|
|
Loopback wrote: | надо будет попробовать исправить |
Да, было бы здорово. Но и сейчас уже стало неплохо, когда знаешь истинную причину. Стараюсь теперь ближе к центру кликать по горизонтали - пока ни разу не лоханулся промахнулся )
Кстати, неплохой пример с менюшкой на предыдущей странице. Я когда с функцией обратного вызова разбирался, тоже пробовал что-то такое. С практической точки зрения совершенно бесполезное, но с технической точки зрения может кому-то пригодится:
Code: | # WM_MENUSELECT
SetMessageAction /P 0x011F "MenuSelectCallback"
Func MenuSelectCallback(hWnd, uMsg, wParam, lParam)
Local buf = Buffer(100), _
nId = BitAND(wParam, 0xffff)
DllCall("GetMenuStringW", _
"handle", lParam, _
"uint", nId, _
"ptr", buf.ptr, _
"int", 50, _
"uint", 0)
WinSetText("uMsg: " & uMsg & " ID: " & nId & " lParam: " & lParam & " Item: " & buf.GetStr())
ShowHint("uMsg: " & uMsg & auCRLF & _
"ID: " & nId & auCRLF & _
"lParam: " & lParam & auCRLF & _
"Item: " & buf.GetStr(), "", "", 500, 1)
EndFunc |
Функция MenuSelectCallback вешается на сообщение WM_MENUSELECT в окне ТС и вызывается каждый раз, когда происходит выбор пункта меню. Работает и на верхнем меню ТС, и на контекстном. Функция ничего не делает, только выводит информацию о пункте меню в заголовок и в отдельную подсказку, но неплохо демонстрирует, как работает Callback через SetMessageAction. |
|