WM_CLOSE和WM_DESTROY的区别解决办法
WM_CLOSE和WM_DESTROY的区别
wm_destroy
和wm_close有什么区别?
程序只响应wm_destroy就可以关闭了,还要wm_close干什么?
PS.我在一个程序中只响应wm_destroy,没有响应wm_close,点击关闭按钮后程序(进程)正常退出了啊!!
但是
case WM_CLOSE:
messagebox(...);
break;
点击关闭按钮后,却可以弹出窗口,难道是点击关闭按钮产生wm_close消息?
------解决方案--------------------
WM_CLOSE是可选的,可以给你一个机会决定关不关
WM_DESTROY你没有得选择,因为DestroyWindow已经调用,窗口已经开始销毁。
这些简单的知识只要有耐心多试两次就可领会,不需要什么都发帖的。
------解决方案--------------------
点击关闭按钮后,响应WM_CLOSE, 然后又调用DestroyWindow();
反过来,你响应WM_DESTROY,并不会调用OnClose();
------解决方案--------------------
WM_CLOSE只是关闭了当前的窗口资源,但是该进程在后台还是运行的,并没有退出。 如果你希望只是关闭这个窗口不关闭程序,可以只调用WM_CLOSE
------解决方案--------------------
WM_CLOSE消息是你点击“关闭”按钮产生的消息,窗口的默认处理函数DefWindowProc针对这个消息会产生一个默认的协作:发出WM_DESTROY消息。所以你没有处理WM_CLOSE消息,只处理WM_DESTROY消息同样也正常退出了。
wm_destroy
和wm_close有什么区别?
程序只响应wm_destroy就可以关闭了,还要wm_close干什么?
PS.我在一个程序中只响应wm_destroy,没有响应wm_close,点击关闭按钮后程序(进程)正常退出了啊!!
但是
case WM_CLOSE:
messagebox(...);
break;
点击关闭按钮后,却可以弹出窗口,难道是点击关闭按钮产生wm_close消息?
------解决方案--------------------
WM_CLOSE是可选的,可以给你一个机会决定关不关
WM_DESTROY你没有得选择,因为DestroyWindow已经调用,窗口已经开始销毁。
这些简单的知识只要有耐心多试两次就可领会,不需要什么都发帖的。
------解决方案--------------------
点击关闭按钮后,响应WM_CLOSE, 然后又调用DestroyWindow();
反过来,你响应WM_DESTROY,并不会调用OnClose();
------解决方案--------------------
WM_CLOSE只是关闭了当前的窗口资源,但是该进程在后台还是运行的,并没有退出。 如果你希望只是关闭这个窗口不关闭程序,可以只调用WM_CLOSE
------解决方案--------------------
WM_CLOSE消息是你点击“关闭”按钮产生的消息,窗口的默认处理函数DefWindowProc针对这个消息会产生一个默认的协作:发出WM_DESTROY消息。所以你没有处理WM_CLOSE消息,只处理WM_DESTROY消息同样也正常退出了。