On-line: гостей 8. Всего: 8 [подробнее..]
АвторСообщение





Пост N: 43
Зарегистрирован: 27.08.23
ссылка на сообщение  Отправлено: 01.03.26 13:29. Заголовок: Проблем в HWGUi - WM_LBUTTONDOWN и WM_LBUTTONUP


Операционная система Windows 10 Pro 22H2
Harbour 3.4.0dev (669f310ff4) (2018-04-28 17:24)
HWGui 2.23 b7

Я разрабатываю одну программу и столкнулся с проблемой, которую постараюсь описать. Речь идет о программе для поиска кратчайших путей от начального узла до всех остальных (известный алгоритм Дейкстры). Создаётся главное окно:

INIT WINDOW oWnd MAIN TITLE "Дијкстра алгоритам - мрежа" AT 0, 0 SIZE 1300, 780 FONT oFont ;
STYLE WS_OVERLAPPEDWINDOW + WS_CLIPCHILDREN + WS_CLIPSIBLINGS ;
ON INIT {|| Main_OnSize( oWnd, 0, 0, oPanelLeft, oBoard ) } ;
ON OTHER MESSAGES {|o, msg, wParam, lParam| Main_OnOther_Wheel( o, msg, wParam, lParam, oBoard ) }


Окно разделено на две части, левая часть — это:

// левая панель
@ 10, 10 PANEL oPanelLeft OF oWnd ID 4001 SIZE 520, 710
oWnd:bSize := {|o, w, h| Main_OnSize( o, w, h, oPanelLeft, oBoard ) }


Затем следуют несколько контролов (BUTTON, CHECKBOX, LISTBOX и SAY, все они «OF oPanelLeft»),
а правая часть — это:

// справа: область рисования (HBoard)
@ 540, 10 BOARD oBoard OF oWnd ID 3001 SIZE 740, 670 ;
BACKCOLOR CLR_WHITE ;
ON PAINT {|o, hDC| Board_Paint( o, hDC ) }
oWnd:bSize := {|o, w, h| Main_OnSize( o, w, h, oPanelLeft, oBoard ) }


// перехватываю mouse для pan/zoom/hit-test через bOther
oBoard:bOther := {|o, msg, wParam, lParam| Board_OnOther( o, msg, wParam, lParam ) }


В правой части (HBoard) я планировал графически отобразить сеть с узлами и участками. Сеть должна масштабироваться и перемещаться по BOARD.
Проблема заключается в том, что функция Board_OnOther( o, msg, wParam, lParam ) «перехватывает» только msg == WM_MOUSEWHEEL, а сообщения
WM_MOUSEMOVE, WM_LBUTTONDOWN и WM_LBUTTONUP не замечает, игнорирует.
Также функция Main_OnOther_Wheel( o, msg, wParam, lParam, oBoard ) «перехватывает» msg == WM_MOUSEWHEEL и msg == WM_MOUSEMOVE,
а WM_LBUTTONDOWN и WM_LBUTTONUP не замечает, игнорирует.
Я не понимаю, почему так происходит, ведь в одном примере для HWGui я нашёл похожую ситуацию, только там главное окно без добавленных контролов, и функция
ON OTHER MESSAGES { | a, b, c, d | OnOtherMessages( a, b, c, d ) } «видит» все сообщения WM_LBUTTONDOWN, WM_LBUTTONUP,
WM_MOUSEMOVE и WM_MOUSEWHEEL
(я проверил, протестировал — и это работает корректно).
Поскольку мне необходимо, чтобы мои функции, указанные выше, «перехватывали» все сообщения типа WM_LBUTTONDOWN, WM_LBUTTONUP, WM_MOUSEMOVE и
WM_MOUSEWHEEL
, существует ли способ реализовать это? Может ли кто-нибудь помочь мне в решении данной проблемы?

Спасибо: 0 
ПрофильЦитата Ответить
Новых ответов нет


Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 20
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет