zoukankan      html  css  js  c++  java
  • 特殊的Windows消息

    WM_CREATE消息

           该消息是Windows发送给视图的第一个消息。由于当应用程序框架调用Create函数时该消息就会被发送,而此时窗口创建还未完成,窗口还不可见,因此在控制函数OnCreate内部,不能调用那些依赖于窗口处于完全激活状态的Windows函数。

           但是我们可以在被重载的OnInitialUpdate函数内调用这些函数。不过必须注意,对于SDI程序,在视图生存期间OnInitialUpdate函数可能会被调用多次。

    注意:OnInitialUpdate函数是视图窗口完全建立后,在调用OnDraw函数之前第一个被调用的函数,很多初始化工作可以放在这个函数里,因此很重要。

     

    WM_CLOSE消息

    当用户从系统菜单中关闭窗口或者父窗口被关闭时,Windows都会发送WM_CLOSE消息。如果在派生视图类中重新定义了OnClose消息映射函数,就完全可以控制关闭过程。例如:如果需要提醒用户将变化的内容保存在文件中时,就可以将这步工作放在OnClose函数中来完成。只有在确认了关闭窗口是非常安全的情况下,才可以调用基类的OnClose函数,由它来继续处理关闭过程。此时,视图对象和相应的窗口仍然处于活动状态。

    注意:当使用完整的应用程序框架结构时,也可以不使用WM_CLOSE的消息控制函数。作为应用程序框架的高度结构化的程序退出过程的一部分,我们可以通过重载CDocument::SaveModified虚函数来达到这个目的。

     

    WM_QUERYENDSESSION消息

          当用户退出Windows时,Windows就会发送WM_QUERYENDSESSION消息给所有正在运行的应用程序,而OnQueryEndSession消息映射函数正是用来处理这一消息的。如果我们对WM_CLOSE消息函数编写了相应的控制函数,则同样也需要对WM_QUERYENDSESSION 消息编写相应的控制函数。

     

    WM_DESTROY消息

          Windows在发送WM_CLOSE消息之后,紧接着就会发送WM_DESTROY消息,而OnDestroy消息映射函数正是处理这一消息的。当程序收到该消息时,它将假设此时视类已经完全消失,但仍然处于活动状态,并且视窗的子窗口还仍然处于活动状态。利用这个消息的控制函数,就可以在对依赖于当前窗口存在的所有东西做清除工作。不过,一定要记住,应该调用基类的OnDestroy函数,而不能在用户自己的视图的OnDestroy函数中“终止”窗口的析构过程,终止析构的处理应该放在OnClose函数中。

     

    WM_NCDESTROY消息

          当窗口被关闭时所发送的最后一个消息就是这个消息。由于此时所有子窗口都已经被关系,所以我们可以在OnNcDestroy函数中做一些不依赖于该窗口是否处于活动状态的最后的处理工作,不过最好一定要调用基类中的OnNcDestroy函数。

     

  • 相关阅读:
    职场篇:聚焦与复盘
    职场篇:直面情绪杀手【已补更】
    .NetCore实践篇:成功解决分布式监控ZipKin聚合依赖问题(三)
    职场篇:为何我们需要思想大洗礼?
    职场篇:从温水煮青蛙说起
    .NetCore实践篇:分布式监控系统zipkin踩坑之路(二)
    postman application/json;
    yapi 个人空间 这个分组的问题
    yapi 的分组的理解!
    yapi的安装
  • 原文地址:https://www.cnblogs.com/lidabo/p/3573020.html
Copyright © 2011-2022 走看看