• 主页
  • Windows SDK/API
  • 基础类
  • ActiveX
  • 数据库及相关技术
  • 网络及通讯开发
  • VCL组件使用和开发

请教,在DLL中,如何通过FindComponent来查找访问主程序窗体中的组件。

nikita2000 2017-12-20 12:17:42
我在DLL中,接收主程序窗体Form的指针,然后用FindComponent来访问主程序窗体Form的Edit组件,编译运行时,查找不到主程序窗体Form的Edit组件,请问错在哪里?谢谢!

dll源程序
extern "C" __declspec(dllexport) void __stdcall MyDllProc(TForm *pForm)
{
TEdit *Edit1 = dynamic_cast<TEdit*>(pForm->FindChildControl("Edit1"));
Edit1->Text = "123456";
}

主程序
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE MyDll = LoadLibrary(L"MyDll.dll");
if(MyDll)
{
void __stdcall (*MyDllProc)(TForm*);
MyDllProc = (void __stdcall (*)(TForm*))GetProcAddress(MyDll, "MyDllProc");
MyDllProc(this);
}
FreeLibrary(MyDll);
}
...全文
351 点赞 收藏 3
写回复
3 条回复
nikita2000 2017年12月23日
问题解决了,原因是不能用 dynamic_cast<TEdit*>,用(TEdit*)就可以了。
回复 点赞
nikita2000 2017年12月20日
回楼上,不可以,因为pForm是TForm类型的指针,不是主程序窗体TForm1的指针,由于DLL是独立的Project,所以没有include主程序窗体TForm1的头文件。
回复 点赞
ooolinux 2017年12月20日
直接: TEdit *Edit1 = pForm->Edit1; 不可以吗?
回复 点赞
发动态
发帖子
C++ Builder
创建于2007-08-02

2563

社区成员

10.2w+

社区内容

C++ Builder相关内容讨论区
社区公告
暂无公告