Я создал подкласс окна с помощью SetWindowSubclass(), и мой обработчик сообщений успешно вызывается, но когда я вызываю DefWindowProc() для передачи сообщений для их первоначальной обработки, никакие сообщения никогда не проходят!
Пишем расширение для Marmalade (набор для кроссплатформенной мобильной разработки). Он позволяет создавать нативные расширения для конкретных платформ, и мы пишем одно для сборки рабочего стола Windows. У нас нет прямого доступа к циклу обработки сообщений, но мы можем создавать подклассы для самостоятельной обработки сообщений, однако, похоже, мы не можем передавать сообщения обратно в Marmalade для нормальной обработки.
Например, даже если ничего не делать в обратном вызове, но вызов DefWindowProc() все равно не работает:
// Initialization:
const UINT_PTR gSubClassId = NULL;
DWORD_PTR subClassCBData = NULL;
SetWindowSubclass(gMainWindow, CadUtil_WindowCB, gSubClassId, subClassCBData);
...
// Message processing callback.
static LRESULT CALLBACK CadUtil_WindowCB(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData)
{
// Messages are correctly diverted here, but DefWindowProc() below isn't passing them on.
return DefWindowProc(hWnd, message, wParam, lParam);
}
Любая идея, как это может произойти?
Спасибо,
Роб.