源程序中
void CDlgEditChange::OnCancel() 
{
}
写错,改为
void CDlgEditChange::OnOk() 
{
}

解决方案 »

  1.   

    // Create font 
    注意m_font1.CreateFontIndirect( &lf ); 
    你需要在OnDestroy中调用m_font1.DeleteObject()
      

  2.   

    同意kaden()的说法,你的font资源没有释放,用完后应该调用释放语句将你创建的字体资源释放掉,即 
    m_font1.DeleteObject();
    m_font2.DeleteObject();
    详见msdn中CFont::CreateFontIndirect() ;
      

  3.   

    谢谢各位!!!问题得到部分解决了我将m_font1 和 m_font2 以及 m_brBack m_nTimer 都 DeleteObject()
    现在 在父窗口中关闭该“无模式对话框”,系统资源都正常,没有丢失。但是,使用对话框中的 Ok 或 Cancel 按钮,来关闭对话框(且在Ok或Cancel消息中已经加了m_font1,m_font2,m_brBack,m_nTimer等等的DeleteObject)。系统资源还是有一定的丢失,但是不明显。大概 30次 丢失7%各位可以给我分析一下么?
      

  4.   

    ////////////////////////////////////////////////////////////////////
    奇怪!!
    我重新做了一个小程序,主对话框上 一个按钮,开启一个无模式对话框(上面的方法)。在主对话框(即,父窗口)中使用 XXX->DestroyWindow(),关闭打开的无模式对话框,则资源一点也不丢失。但是如果使用无模式对话框的 OK 或 Cancel 自己关闭,则资源有丢失(虽然,看不出来)。大概 30次重复,资源会丢失 10% 到底怎么回事???希望高手指点我一下。谢谢!!!!
    ////////////////////////////////////////////////////////////////////
      

  5.   

    如果你是在父窗口中new出来无模式对话框,那么这个对话框可能会泄漏的.最好加上处理WM_NCDESTROY消息的函数,并加上delete this;试试!