1:win2000下编译过的可执行文件(release),在xp下运行出错.2:把工程copy到xp下,debug运行可以,release运行依然出错,但rebuild all后release运行成功.在xp下rebuild的可执行文件在2000下也正常.3:然后找原因,恢复到从2000copy过来的工程,在程序中加了若干messagebox打log,release运行,发现错误的原因是因为有个dialog create失败.somedialog::onintialupate()
{
   m_menuitemdlg = new CFontStyle(this,MENUITEM);
   m_menuitemdlg->Create(IDD_FONTSTYLEDLG,this);
   m_menufocusdlg->ShowWindow(TRUE);   m_menufocusdlg = new CFontStyle(this,MENUFOCUS);
   m_menufocusdlg->Create(IDD_FONTSTYLEDLG,this);//这个地方出错
   m_menufocusdlg->ShowWindow(TRUE);}两个dlg构造都是成功的.前面一个同样的dlg创建成功,这个却失败了.Create函数我没有重写过.不知道各位老大有何高见.

解决方案 »

  1.   

    ShowWindow(TRUE); ??
    查查参数。
      

  2.   

    是什么样的错误提示,
    看一看是不是在没有CREATE之前你无意间用到了对该对话框的操作!
      

  3.   

    我觉得两个都指定IDD_FONTSTYLEDLG的原因
      

  4.   

    谢谢mackz.不过true==SW_SHOWNORMAL,似乎没什么问题出错的地方有句写错了,以下面的为准.
    m_menufocusdlg = new CFontStyle(this,MENUFOCUS);
    m_menufocusdlg->Create(IDD_FONTSTYLEDLG,this);
    m_menufocusdlg->ShowWindow(TRUE);m_menuitemdlg = new CFontStyle(this,MENUITEM);
    m_menuitemdlg->Create(IDD_FONTSTYLEDLG,this);//这个地方出错
    m_menuitemdlg->ShowWindow(TRUE);错误的原因是有指令对非法内存操作.
      

  5.   

    应该不是资源问题,在我程序中有多处使用这种create方式,只有这个地方出错.
      

  6.   

    是不是我的问的太绕?有人遇到过类似问题没有呢?2000下编译的程序在xp下出错,但在xp下重新编译就运行成功?
      

  7.   

    是不对话框的某个控件没有InitCommonControlsEx?
      

  8.   

    问题解决,曾经去掉了frame的min,max按钮,并加入了自画标题栏.把这些code去掉就ok,
    估计是代码中有内存泄露或者是某些style无法和xp兼容吧...