我在扩展动态库中使用了Custom  Control控件,该控件在对话框应用程序下可正常工作,但是封装到动态库中之后,再在应用程序中调用包含该控件的对话框,对话框不显示,删除Custom  Control控件,对话框即可正常显示。
我跟了一下Create的过程,就是CreateDialogIndirect时直接返回失败了,返回了NULL的HWND。

解决方案 »

  1.   

    对话框不显示的可能原因:
    1 符窗口HWND无效
    2 在ONINITDIALOG里用了ENDDIALOG
    3 无效的对话框资源ID
    4 使用没有注册的的自定义控件
    5 对话框的某些控件创建失败,如RICHEDIT,要加上AfxInitRichEdit();
      

  2.   

    将对话框应用程序的窗口句柄传进DLL中;CDialog dlg(CWnd::FromHandle(hMainWnd));hMainWnd-->传进来的句柄。
      

  3.   

    应该是控件的注册不成功,或者加上AfxEnableControlContainer();
      

  4.   

    to laiyiling:控件注册是成功的,而且加上了AfxEnableControlContainer();
      

  5.   

    to laiyiling:可否将您的邮箱给我,我把源程序发给你帮我看看??
      

  6.   

    添加自定义控件后,有没有重新导入*.lib?
    给我看看:[email protected]
      

  7.   

    你是不是在InitInstance里去弹出对话框了?
      

  8.   

    CoInitialize(NULL);
    AfxEnableControlContainer();
      

  9.   

    谢谢各位,已经搞定了,用GetModuleHandle获取wndcls.hInstance 就OK了,论坛中有一篇文章有讲