你如使用MFC,记得调用AfxEnableControlContainer()使支持包容ACTIVE X

解决方案 »

  1.   

    都加了,还是不好用,,加了OCX,后对话框死活不出,去了OCX,一下就出,
    大侠们
    ????
      

  2.   

    你在建立DLL时就有这个选项,选中就是了。自己事后补救很容易出错。
      

  3.   

    你在DLL的输出函数接口中使用动态调用MFC就可以了,
    使用这个函数。
    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));同时,别忘记把父窗口的句柄传递进去,下面是一个调用DLL中对话框的函数的例子,可以参考。
    int WINAPI CallDialog()
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState( )); HWND hWnd = ::GetActiveWindow ();
    CWnd *pParent = CWnd::FromHandle (hWnd);
    CDiaMain dlg(pParent);//CDiaMain是一个从CDialog类派生出的类
    dlg.DoModal ();
    return 1;
    }
      

  4.   

    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));同时,别忘记把父窗口的句柄传递进去,下面是一个调用DLL中对话框的函数的例子,可以参考。
    int WINAPI CallDialog()
    {
    AFX_MANAGE_STATE(AfxGetStaticModuleState( ));
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这行我懂,就是用MFC的资源,
    HWND hWnd = ::GetActiveWindow ();
    CWnd *pParent = CWnd::FromHandle (hWnd);
    CDiaMain dlg(pParent);//CDiaMain是一个从CDialog类派生出的类
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~这和构造一个DIALOG一样呀,
    dlg.DoModal ();
    return 1;

    另外,我又试了,还没显示,是不是我的另的地方用的不对,你把你能过的那个发一份吧
    [email protected],,另外别把DEBUG的东东打进去,我的EMAIL才4M
    呵呵
      

  5.   

    dll高手请进!!为什么我的dll里不能放ActiveX,
    同样的问题也出在DELPHI上,
    问一下,DELPHI的高手吧
      

  6.   

    VC不行了,这都不能小CASE,我要学DELPHI了
      

  7.   

       DLL里封装一个窗口是强项,窗口里可以放很多的控件。其实ACTIVEX就是一个控件而已,不知道你那个ACTIVEX需不需要激活,如果需要的话,最好在对话框建好后再去激活,而不要在属性里事先激活。
       还有,你最好把你的DLL改成EXE测试正确后,再把它改回DLL。我经常这么做。
      

  8.   

    是一个
    AFXENABLECONTROLCONTAINER()
      

  9.   

    是一个
    AFXENABLECONTROLCONTAINER()