规则dll中提供了一个导出函数,这个函数的具体代码如下:void f()
{
CXXDialog* pDlg=new CXXDialog();
pDlg->Create(IDD_VTS_DIALOG,NULL)l;
pDlg->Show(SW_SHOW);
}然后重载了 对话框的PostNcDestroy函数,  这样带来一个麻烦问题。。
就是当exe去加载dll, 调用这个函数的时候, 函数立即创建一个非模式对话框,但是对话框一闪就没有了我的这个dll中的对话框必须用非模式的, 怎么防止一闪而过啊????救命啊

解决方案 »

  1.   

    CXXDialog* pDlg定义为类成员变量
    因为作用域问题 函数走完你的pDlg就失效鸟
    所以会出现一闪而过的情况
      

  2.   

    我是在堆中中创建的啊
    当然这个pDlg一旦走完函数就挂了如果想不让它一闪而过,那么可以加:  MSG msg;  
    while(GetMessage(&msg,NULL,0,0))  
    {  
    TranslateMessage(&msg);  
    DispatchMessage(&msg);  
    }  为什么不加会一闪而过,加了之后,不会闪啊??求原因。。
      

  3.   

    MFC框架中添加自然是利用了MFC提供的消息循环,而DLL中创建非模态对话框是没有消息循环的
      

  4.   

    基于mfc 的dll也没有吗?
      

  5.   

    结贴:做个总结啊基于多文档,单文档的, 可以在View类中加一个 CXXDlg* pdlg;全局的,这样就不会闪了
    如果程序本身就是基于对话框,在App中,一旦new了对话框,不管是全局,还是局部,一闪而过。。(除非加消息循环)
    感谢各位说的不对,希望再回帖中跟正
      

  6.   

    dll的导出类中 ,应该加个对话框指针成员变量,然后new一下,(有机会做个试验),看会不会闪。
    如果还是会闪,。那么加消息循环