需要实现一个以DLL形式提供的编辑模块,主程序会传递给DLL模块一个窗口句柄,DLL模块在这个窗口上绘制并响应自己的编辑控件。这种情况用规则DLL还是扩展DLL?
规则DLL和扩展DLL的区别?
希望大家详细解释一下,或者提供一点相关的资料链接,英文的也行。

解决方案 »

  1.   

    都可以。
    规则DLL可以被各种程序调用,扩展DLL只能被MFC程序调用。提供给外部使用的控件类只能用扩展DLL。
      

  2.   

    规则可以被各种语言调用,只要你的接口参数标准
    扩展的,需要MFC程序调用,这个是一个限制的地方
      

  3.   

    如果我在的导出函数的参数中传递窗口句柄,也可以用规则DLL吗?
      

  4.   

    规则DLL 可以在任意环境下调用
    扩展DLL 只能在VC下调用参数类型有窗口句柄,不如使用扩展DLL
      

  5.   

    看程序的需要,规则的或者是扩展的dll都可以被程序所正常的加载
      

  6.   

    MFC规则DLL 包含一个继承自CWinApp的类,但其无消息循环;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。MFC规则DLL的概念体现在两方面:  (1) 它是MFC的  “是MFC的”意味着可以在这种DLL的内部使用MFC;  (2) 它是规则的  “是规则的”意味着它不同于MFC扩展DLL,在MFC规则DLL的内部虽然可以使用MFC,但是其与应用程序的接口不能是MFC。而MFC扩展DLL与应用程序的接口可以是MFC,可以从MFC扩展DLL中导出一个MFC类的派生类。
    MFC扩展DLL的内涵为MFC的扩展,用户使用MFC扩展DLL就像使用MFC本身的DLL一样。除了可以在MFC扩展DLL的内部使用MFC以外,MFC扩展DLL与应用程序的接口部分也可以是MFC。我们一般使用MFC扩展DLL来包含一些MFC的增强功能,譬如扩展MFC的CStatic、CButton等类使之具备更强大的能力。
      

  7.   

    http://soft.yesky.com/lesson/318/2166818.shtml
      

  8.   

    感谢楼上的回答。
    不过关于接口是否标准似乎说的还是不清楚。
    接口参数标准
    能不能说的确切点。
    比如说CWND*可以传递吗?HWND呢?
      

  9.   

    强制转换为LPVOID, 进去后换回来。
      

  10.   

    MFC规则dll有两种:regular DLL with MFC statically linked(MFC静态连接,发布时候只需要提供实现的DLL)
                     regular DLL using shared MFC DLL(MFC动态连接,发布时候如果客户端系统没有MFC库,则DLL不能被加载)
    MFC的扩展DLL和MFC的常规(regular)DLL的区别在于:前者可以导出MFC类,而后者不能,只能导出自己写的C++类
      

  11.   

    regular 为什么非要译为"规则的",第一次看到"规则的dll"还纳闷了半天,
    翻译成"常规的"不会好一些吗?
      

  12.   

    MFC扩展 DLL 其实也可以只导出标准 DLL 接口的,其实他们的区别不像看起来的那么大
    对于你想做的界面功能,我有一个 Demo 实现了这个功能,
    参考:http://blog.csdn.net/qrlvls/archive/2008/12/28/3629935.aspx
    代码:http://download.csdn.net/source/920415
      

  13.   

    补充:我的示例中同样用到了将一个窗口句柄传递给一个 DLL,DLL在其上创建和管理自己的窗口
      

  14.   

    老大让我“研究”Regular DLLs 和 Extension DLLs的区别,还要是本质的区别