Delphi DLL中的ParentWindow

Delphi DLL中的ParentWindow,delphi,dll,Delphi,Dll,我正在尝试将ParentWindow分配给在dll中创建的控件。该控件是一个编辑器,我需要处理一个文本文件,但该控件需要一个ParentWindow 如果在dll中创建此控件,如何解决此问题 我使用的是Delphi 5。还创建可能在dll中不可见的TForm,然后创建控件并将其添加到表单中。这是一个常见的问题,正确的答案是不要这样做 我的第一个问题是,为什么您觉得需要在DLL中创建控件?为什么不在代码中创建它,或者在EXE中包含控件本身呢 第二,如果您想将一个控件添加到一个单独的二进制文件中,但

我正在尝试将ParentWindow分配给在dll中创建的控件。该控件是一个编辑器,我需要处理一个文本文件,但该控件需要一个ParentWindow

如果在dll中创建此控件,如何解决此问题


我使用的是Delphi 5。

还创建可能在dll中不可见的TForm,然后创建控件并将其添加到表单中。

这是一个常见的问题,正确的答案是不要这样做

我的第一个问题是,为什么您觉得需要在DLL中创建控件?为什么不在代码中创建它,或者在EXE中包含控件本身呢


第二,如果您想将一个控件添加到一个单独的二进制文件中,但它在一个包中。软件包专门设计用于简化导出控件。

您需要从某处获取父窗口!通常,加载和调用DLL的主机应用程序将提供一个窗口句柄。看起来DLL为应用程序提供了自定义控件,因此应用程序当然需要提供父窗口句柄


另外,您通常也需要整个应用程序的窗口句柄,将其设置为application.handle,然后再在DLL中执行任何操作。

好的,谢谢您的回答,我在第一次回答之前已经解决了几分钟

首先,我需要解释为什么我不嵌入,这是因为客户这样问我

解决方案是将我的表单句柄作为参数发送到我的dll,通过这种方式测试后,我没有收到任何错误

只修改我的过程的原型,将HWND作为参数接收到内存中创建的控件的ParentWindow属性。
仅此而已。

这是一个很好的答案,但我决定将我的表单句柄作为参数发送到DLL。那么,为什么不提供您的解决方案作为答案,从而可能帮助其他有类似问题的人呢?一天后你甚至可以接受自己的回答。我个人认为这是一个有点愚蠢的回答。如果我想使用闪烁式控制装置呢。我无法将其嵌入.exe,因为它是一个外部.dll。我可以将其作为.obj文件包含,但前提是您拥有原始的src。Mozilla可嵌入控件怎么样。为什么我不能将在第三方DLL中创建的内容设置为Delphi表单的父级?包不是导出控件的全部。我过去使用过软件包,现在不会使用,除非绝对必要。鉴于技术上的准确性,而且大多数情况下,否决权似乎有点多,将Delphi控件放入DLL是/错误的/应该做的事情。我非常有兴趣阅读关于将Delphi应用程序拆分为一个主shell应用程序和多个独立扩展包的主题。你能给我推荐一个我能读到的关于这个主题的好摘要吗?拉里-我从这里开始:尼克,你的答案是正确的,就我个人而言,如果我在做一个独立的应用程序,我不会再这样做了,但是你知道,顾客总是在改变要求。Ryan,你的观点也是正确的,下次我会先问问题。斯玛瑟,这是解决办法,我不想其他人有类似的问题。谢谢大家。