我的一个对话框程序在退出的时候要写一些配置文件,可是如果用户非正常退出(我是指用户在未退出程序的情况下,直接关闭WINDOWS等操作),就得不到写配置文件的机会。请问如何解决这个问题?
我重载了OnClose函数、OnCancel函数、OnOk函数,响应了WM_DESTROY消息,均无法解决这个问题。

解决方案 »

  1.   

    还记得在98下面,如果你非法关机的话下次开机得自检,为什么?如果微软自己可以实现在非法关闭windows系统的情况下能实现对程序的控制。那就不会出现自检了...(个人猜测,或许我理解错了,但重在参与^_^)
    要不就是在windows“服务”中加入你自己的程序,保证在用户正常关闭系统但非法关闭楼主的程序之前完成写文件。
    关注
      

  2.   

    这个很简单的,在程序启动时,往INI文件写入FALSE,当正常程序退出的最后时,往INI文件写入TRUE,程序启动时先读取INI,便知道程序是否正常退出了。
      

  3.   

    我告诉你们如何解决吧:
    响应WM_QUERYENDSESSION消息即可,如下:
    BOOL CSerialCOMDlg::OnQueryEndSession() 
    {
    if (!CDialog::OnQueryEndSession())
    return FALSE; if (isConfigChanged) //配置已更改,写入文件
    InitFromFile(FALSE);

    return TRUE;
    }to JedyChen(Jedy.Chen)
    拔电源属于恶做剧,而未退出程序直接关闭系统是正常的操作,如果要钻牛角尖的话,还要测试一下硬盘坏了没有,因为如果硬盘坏了,保存也会不成功的。不过你说的还有部分正确,就是响应一个消息而已,这个问题我在vckbase上一发不到一分钟就解决了,在CSDN上发了快两天了,也解决不了,不是CSDN水平差,而是高手不知道去哪了!
      

  4.   

    不会,学,不过可能你已经是高手了,偶是新手,所以偶发的问题都有人解答!
    CSDN的确能帮到人,起码帮到了偶~