请教,在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);
}
...全文
396 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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; 不可以吗?

13,871

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧