在开始菜单中点击关闭计算机!
     任何一个窗体里有这么一段代码: private void main_FormClosing(object sender, FormClosingEventArgs e)
        {
                e.Cancel = true;
        }
     就这么一句  e.Cancel = true; 计算机就关不了了!  但是其他的应用程序好像都退出了!
     我想问下 
     windows  的关机消息是分别  传递给所有的应用程序(窗口过程)吗?
     e.Cancel = true到底干了些什么!  是不是他返回了一个值 使windows关机消息 失效了!
           那么 为什么所有其他的应用程序都退出了  ?
     我一直以为一个window  消息只能传递给一个窗口过程!我错了吗》?  
     拜托了,谁可以告诉我  上面的问题。  谢谢大家了!

解决方案 »

  1.   

    当然关不了,这就是个死循环了,关闭取消,关闭取消,windows关闭的前提是打开的程序窗口都已经关闭了,明白没?而你的这个窗口是无法关闭的!
      

  2.   

    这个效果类似于有个word文档没有保存
    关机的时候会提醒你是否保存,如果你点了取消就不会关机在Windows关机或注销的时候会给每个进程传送一个WM_QUERYENDSESSION消息,如果中间有的进程不能顺利的结束,这时该信息执行的结果将返回FALSE,这时Windows将不再继续向后面的进程发送WM_QUERYENDSESSION消息,只有所有的进程都可以顺利的结束,才代表顺利结束.
      不管WM_QUERYENDSESSION消息最后是否可以顺利结束,Windows会再向所有的进程传送WM_ENDSESSION消息,而wParam的内容指出是否可以顺利结束如果返回FALSE则Windows将不会退出http://blog.csdn.net/qsdnet/archive/2007/02/26/1514815.aspx
      

  3.   

    http://topic.csdn.net/t/20050831/17/4242772.html
      

  4.   

    关闭计算机是根据进程来看的吧,就是点击关机按钮后,系统生成临时计划任务,然后调用关机进程,再然后在explorer进程中关闭所有打开的winform,如果winform有无响应的,则返回重新关闭或者做人工提示。。我记得是这么个流程
      

  5.   

     
     追问一下:
         基本上所有的标准窗口右上角都一个关闭程序(窗口)的按钮。
         当我们点击这个关闭按钮》》   发什么什么:
         操作系统 得到鼠标单击事件 再把他转换成消息 放到消息队列 
         消息被分配到 这个窗口。  窗口处理消息  。触发closeing 事件
         这个时候 窗口是如何被关闭的   应用程序需要再跟操作系统做一下交互,任何操作系统再给窗口发送关闭指令(消息)吗?   还是这个时候  应用程序 就可以直接自己完成  退出了?