Win32 API 中的窗口过程必须是静态\全局函数,因为它不能采用类对象(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);
}
}
Run Code Online (Sandbox Code Playgroud)
(省略注册\创建\msg-loop...)
Events() 似乎没有触发...我错过了什么吗?
| 归档时间: |
|
| 查看次数: |
495 次 |
| 最近记录: |