我将winapi CreateWindowEx打包成一个简单的类.由于每个窗口共享一个相同的wndProc(hwnd,msg,wparam,lparam),我将CreateWindowEx创建的每个窗口放入一个映射以分发msg,如下所示:
wndProc(hwnd, msg, wparam, lparam){
if(map[hwnd]!=nil){
switch(msg){
map[hwnd].wndProc(...)
}
}
}
Run Code Online (Sandbox Code Playgroud)
每次窗口或其父窗口被销毁时,将其从地图中删除:
case WM_DESTROY: delete(map, hwnd)
Run Code Online (Sandbox Code Playgroud)
但是像按钮这样的东西不会收到WM_DESTROY.我在WM_NOTIFY和WM_COMMAND打印了所有的消息,但我注意到了.
那么如何在合适的时间从地图中删除这些子窗口呢?或者一种方式分发msg而不创建一个hwnd地图?
归档时间: |
|
查看次数: |
804 次 |
最近记录: |