我使用 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);
}
知道这怎么会发生吗?
谢谢,
罗伯。