【发布时间】:2013-09-25 09:55:54
【问题描述】:
我使用 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);
}
知道这是怎么发生的吗?
谢谢,
抢。
【问题讨论】:
标签: hook subclass subclassing marmalade marmalade-edk