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);
}
これがどのように起こるか考えていますか?
ありがとう、
ロブ。