1.本人在VC6.0环境下已经使用MFC APP向导 开发完成一个可执行的WINDOWS应用程序,现在希望利用现有的代码和资源将该应用程序的主窗体封装在一个MFC常规DLL中,以便在其他应用程序中调用。请各位高手多多指教!不胜感谢。比如:
已经使用MFC向导生成一个基于对话诓的的应用程序,现在需要将现有的对话框代码及资源封装在一个MFC常规DLL中,使之可以在另外的应用程序中调用。
本人试了几次,DLL编译成功,但在对话框实例化时返回的句柄总是失败OX0000),但如果直接在DLL新建一个对话框资源却能被其他应用程序正常调用。2.如何将一个已经可以运行的VC应用程序编译成一个 静态连接库,以供其他应用程序使用?

解决方案 »

  1.   

    1.在DLL中必须动态创建,象这样:
    CMyDlg*  MyDlg;
    int  MdllShow()
    {
       MyDlg = new CMyDlg;
    MyDlg->Create("IDD_DIALOG1");  //窗口资源ID
    MyDlg->ShowWindow(SW_SHOWNORMAL);
      return 1;
    }
    int  MdllClose()
    {
      delete MyDlg; 
      return 1;
    }2.将项目改成生成静态连接库就行,在VC.NET下转换很容易。
    把CWinApp继承的类去掉,其他应用程序肯定用不着这个类。
      

  2.   

    谢谢,关于第二点能具体点吗?你是指修改PROJECT的设置吗?能否说下在VC6下的具体设置过程?
      

  3.   

    非也,
    楼上是指把exe工程做成dll后,exe中的CWinApp继承的类(就是应用程序类)就用不上了,不过,依我看,不去掉也没关系,如要去掉,需注意资源头文件在其他类中的包含问题.
      

  4.   

    就是指修改PROJECT的设置,我这儿只有.net,没有VC6.
    CWinApp类不去掉也可以。