zoukankan      html  css  js  c++  java
  • MFC中的DestroyWindow( )、OnDestroy()、OnNcDestroy()、PostNcDestory()

    virtual void PostNcDestroy( );
    参数: 在窗口被销毁以后,缺省的OnNcDestroy成员函数调用这个函数。派生类可以利用这个函数来执行自定义的清除工作,比如删除指针。 

    afx_msg void OnNcDestroy( );
    说明:
    当非客户区即将被销毁时,框架调用这个函数,这是Windows的窗口被销毁时调用的最后一个成员函数。缺省的实现执行一些清除工作,然后调用虚成员函数PostNcDestroy。
    如果你希望执行自己的清除操作,例如删除,则应重载PostNcDestroy。如果你重载了OnNcDestroy,则必须调用基类的OnNcDestroy以确保内部为窗口分配的内存都被释放。


    virtual BOOL DestroyWindow( );
    函数功能:销毁指定的窗口。这个函数通过发送WM_DESTROY 消息和 WM_NCDESTROY 消息使窗口无效并移除其键盘焦点。
    返回值:如果销毁了窗口,则返回非零值;否则返回0。

    afx_msg void OnDestroy( );
    返回值:
    框架调用这个成员函数以通知CWnd对象它将被销毁。OnDestroy是在CWnd对象已经从屏幕上清除以后被调用的。
    首先为被销毁的CWnd调用OnDestroy,然后当CWnd的子窗口被销毁时为它们调用OnDestroy。可以假定当OnDestroy运行的时候,所有的子窗口依然存在。

    综合以上:先调用DestroyWindow,在此间会有OnDestroy消息,接着窗口被销毁,于是DestroyWindow返回TRUE,然后是OnNcDestroy消息,之后再调用PostNcDestroy。
    也不知道这个结论对不对,我的想法是,OnNcDestroy是非客户区销毁时调用,而DestroyWindow销毁的是窗口,非客户区是没有窗口句柄的。

    常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。

    昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。
  • 相关阅读:
    实用小软件
    没有找到MSVCP71.dll,迅雷5无法进行离线下载,P2P Seacher无法连入emule网络
    PSP2000V3版5.03系统误删PSP文件夹的拯救方案
    图书馆图书检索的小技巧
    thinkpad指点杆(trackpoint)在WPS的word文档中失效的解决办法
    笔记本电池死而复生
    调试Page.IsPostBack,感觉好奇怪
    OleDbSchemaGuid.Columns返回DataTable介绍
    静态类生命周期的问题
    IE中居中,FF中出问题
  • 原文地址:https://www.cnblogs.com/htj10/p/13034185.html
Copyright © 2011-2022 走看看