Обработка сообщения MSH_MOUSEWHEEL
Модуль MSWHEEL посылает сообщение колесика активному окну, используя дескриптор окна, возвращенный из функции GetForegroundWindow. Активное окно должно принять решение, ответить ли на это сообщение, или передать его каким-либо дающим возможность функционировать колесику органам управления или активным внедренным объектам OLE.
Если активное окно должно транслировать сообщение колесика, оно может использовать или функцию PostMessage, или SendMessage. Для органов управления со встроенным обеспечением колесика мыши, Вам необходимо решить, должно ли приложение использовать функцию SendMessage и проверять возвращаемое значение.
Для программ с внедренной технологией OLE, используйте функцию PostMessage. Здесь нет никакой необходимости проверять возвращаемое значение , так как модель программы с внедренной технологией OLE - это контейнер, который отправляет сообщение серверу, а затем забывает о нем. Сообщение поднимается до серверного приложения, чтобы начать действовать или нет.
Для OLE серверов (включая серверы с объектами документа), поместите код, который становится внедренным, обрабатывающий сообщение колесика в оконной процедуре окна. При передаче сообщения программам с внедренной технологией OLE, чтобы получить соответствующий дескриптор окна, рекомендованный вызов - IOleInPlaceObject:GetWindow.
Внедренная программа должна гарантировать, что код, который обрабатывает сообщение MSH_MOUSEWHEEL, присутствует в оконной процедуре окна, которому она возвращает значение для вызова интерфейса IOleInPlaceObject:GetWindow.
В особенности обратите внимание! на то, что окно рамки не представляется, когда приложение внедряется, так что, если код, который обрабатывает сообщение находится в оконной процедуре окна рамки, сообщение не будет обработано. Например, в Microsoft Word и Microsoft Excel окно документа - самый высокий уровень встроенного окна, таким образом это то, где обрабатывается затребованное сообщение. |