Win32 API 中的 Window-Procedure 必须是静态 \ 全局函数,因为它不能采用类对象 (the this
) 参数。当然可以使用 hWnd->object 字典等变通方法。
我想知道D是否有办法优雅地解决它,例如为每个对象创建一个微小的成员函数副本(以调用对象的真实处理程序)或我可以分配给WNDCLASS.lpfnWndProc
的匿名函数(我知道有匿名函数,但我不能使用他们的extern(Windows)
财产)?
我可以做这样的事情:
class Window {
extern (Windows)
LRESULT delegate (HWND hWnd, UINT msg, WPARAM w, LPARAM l) MyWinProcDelegate;
this() {
MyWinProcDelegate = &Events;
}
extern (Windows)
LRESULT Events (HWND hWnd, UINT msg, WPARAM w, LPARAM l) {
MessageBoxA(null , "Success!!!" , null ,0);
return DefWindowProcA(hWnd, message, wParam, lParam);
}
}
(省略注册\创建\味精循环...)
Events() 似乎没有触发......我错过了什么吗?