我想显示一个文件替换对话框,我的程序如下:
         CFindReplaceDialog dlg;
dlg.Create(0, 0, NULL, FR_DOWN, NULL);
为什么,对话框只闪一下,而不显示?

解决方案 »

  1.   

    CFindReplaceDialog dlg=new CFindReplaceDialog;
    dlg->Create(0, 0, NULL, FR_DOWN, NULL);
      

  2.   

    纠正:CFindReplaceDialog *dlg=new CFindReplaceDialog;
    dlg->Create(0, 0, NULL, FR_DOWN, NULL);
      

  3.   

    我想是要加上dlg.Execute()或dlg.Show()之类的函数,或Create的参数中加入SHOW或HIDE等宏
    ,看一下帮助
      

  4.   

    规范一点的:CFindReplaceDialog *dlg;
    dlg=new CFindReplaceDialog;
    dlg->Create(0, 0, NULL, FR_DOWN, NULL);
      

  5.   

    VC中的控件可不一定要在堆分配的吧,不像VCL
      

  6.   

    这个问题有可能是Create后,该环镜就消失,也就是函数已返会,栈上的对象被析构,与窗口关联的对象就不存在了,所以要用new在堆上创建对象。
    如果不是这一问题,你看看MSDN对Show参数介绍,或看看有没有别的错误。
      

  7.   

    好像没有调用dlg.ShowWindow(true);
      

  8.   

    楼上说的是,Create后要用ShowWindow处理
      

  9.   

    闪了一下,是不是楼主已经用了ShowWindow的,如能保证对象一直可见就好,堆分配和栈分配都一样。
      

  10.   

    我如此做  
             CFindReplaceDialog *dlg 
    dlg = new CFindReplaceDialog;
             dlg.Create(0, 0, NULL, FR_DOWN, NULL);
             dlg.ShowWindow(true);后,显示这一句:dlg.Create(0, 0, NULL, FR_DOWN, NULL);有错误。错误是:C:\Documents and Settings\LeiYang1\桌面\临时文件夹\sun\Findreplace\f\fDlg.cpp(177) : error C2228: left of '.Create' must have class/struct/union type
      

  11.   

    CFindReplaceDialog *dlg;
    dlg=new CFindReplaceDialog;
    dlg->Create(0, 0, NULL, FR_DOWN, NULL);
    来晚了,mscf完全正确!
      

  12.   

    楼主看清楚了,dlg是指针,要用->
      

  13.   

    正确的做法是:
             CFindReplaceDialog *dlg;
    dlg = new CFindReplaceDialog;
    dlg->Create(0, "s", NULL, FR_DOWN, NULL);

    dlg->ShowWindow(SW_SHOW);
      

  14.   

    dlg->ShowWindow(SW_SHOW);一句可以不要的