社区
C++ Builder
帖子详情
关于动态加载Frame的问题,期待高手解答!
显刚
2004-01-02 01:07:42
我希望实现这样一个需求;
在一个应用程序中建立一个Form;
在Form中加载若干个Frame,而这些Frame是定义在DLL中的.
实验过程碰到了问题
DLL接口中new出来的Frame没有显示出来.
而且对象的Parent属性无法付值.
期待高手解答,解决给分!
...全文
193
31
打赏
收藏
关于动态加载Frame的问题,期待高手解答!
我希望实现这样一个需求; 在一个应用程序中建立一个Form; 在Form中加载若干个Frame,而这些Frame是定义在DLL中的. 实验过程碰到了问题 DLL接口中new出来的Frame没有显示出来. 而且对象的Parent属性无法付值. 期待高手解答,解决给分!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
31 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
显刚
2004-01-06
打赏
举报
回复
问题已经解决了,在此谢谢大家的帮助!
结帖了!
quady
2004-01-06
打赏
举报
回复
没有试过Frame,不过在DLL中做过Form,并设置其父为调用Dll的主窗体。
HWND gParent; // The handle of the form that will be attached to.
TMainWin *gMainWin = NULL;
//调用此方法创建一个新的窗体,并设置其父窗体句柄为hwnd
bool __stdcall StartAttach(HWND hwnd)
{
gParent = hwnd; // Save the handle of parent window.
if(gParent)
{
gMainWin = new TMainWin( gParent );
gMainWin->Width = 400;
gMainWin->Height = 300;
gMainWin->Top = 0;
gMainWin->Left = 0;
gMainWin->Show();
return true;
}
return false;
}
下面是Form的构造函数,把owner改为ParentWindow,具体看帮助。
__fastcall TMainWin::TMainWin(HWND ParentWindow)
: TForm(ParentWindow)
显刚
2004-01-06
打赏
举报
回复
因为显示Frame时用的是API函数
::ShowWindow(frame->Handle,SW_SHOW)
看看还有什么其他方法让它显示出来
大家踊跃讨论,解决另外开贴给分决不食言!
显刚
2004-01-06
打赏
举报
回复
到刚才为止,报错的问题已经解决了
Frame本身也能正常显示了
但是Frame中的控件,除了Label以外其他的都不显示
可能jishiping(JSP 季世平)说的原因是有影响
显刚
2004-01-05
打赏
举报
回复
非常感谢 ljlln(阿明) 的指导.
只是我还想听听其他人的意见
这个问题这样结帖有些草率了.
等到这个周末吧!
ljlln
2004-01-05
打赏
举报
回复
BCB5我没有试过/我建议你使用6!好多功能BCB5都没有!
如:向dll中传递打开的数据库的指针!
jishiping
2004-01-05
打赏
举报
回复
我从没有在程序里用过Frame。刚才测试了一下,发现在DLL中使用TFrame的话会有很多问题。如果在DLL的Project里建一个Frame,保存。在EXE的Project中添加这个Frame的话,就会出现错误提示。我对比了一下,在DLL的Project中创建的Frame,和EXE的Project中创建的Frame,然后比较2个*.dfm文件,竟然发现他们不同。在DLL中创建的Frame多了一些属性,比如PixelsPerInch、OldCreateOrder之类的。反正我现在认为,BCB5在对Frame的处理中,有一些BUG。如果只是在EXE的POroject创建Frame,并且在EXE中使用Frame,那么好像还没有什么问题。但是一旦在DLL中使用Frame,那么就会有很多问题。就好像MDIChild类型的Form一样,如果在EXE中使用没有问题,但是一旦将MDIChild放在DLL中使用,那么就会出现很多问题。我的结论(针对BCB5),不要将Frame、MDIChild放在DLL中,否则有很多BUG。
显刚
2004-01-05
打赏
举报
回复
QQ 228805300
lazygod
2004-01-05
打赏
举报
回复
我程序顺利通过……但是代码不在手旁。你有qq没?108931931.这里好慢
显刚
2004-01-05
打赏
举报
回复
还是有问题呀,lazygod(Use any item) 你自己试过了吗?
要不,麻烦你把代码贴上来.
这个问题很典型哦.
显刚
2004-01-05
打赏
举报
回复
好,我现在就试试看
lazygod
2004-01-05
打赏
举报
回复
晕死了
MyFrame->Parent = NULL;
DestroyFrame(MyFrame);
犯一堆低级错误
lazygod
2004-01-05
打赏
举报
回复
MyFrame->Parent = NULL;
DestroyFrame(frmMain->MyFrame);
//次序倒了
lazygod
2004-01-05
打赏
举报
回复
没仔细看,和ljlln(阿明)的原理一样。不过我用的倒是BCB5.
你需要在OnClose先释放Frame
DestroyFrame(frmMain->MyFrame);
MyFrame->Parent = NULL;
否则关闭时frmMain自做主张去释放MyFrame。
Can't assign a TFont to a TFont
大概这个问题出现在MyFrame->Parent = Parent上。
TFrame3 * pNewFrame =new TFrame3(pParent)里构造函数TFrame3(pParent)中的pParent可以用其他TComponent代替,我是用TPanel.你试一下用TApplication这么写:
BOOL SetParent(TApplication* App, TForm* Parent)
{
TFrame3 * pNewFrame =new TFrame3(App) ;
pNewFrame->Parent= Parent;
}
这样还不行,我也不知该如何是好了:)
显刚
2004-01-05
打赏
举报
回复
lazygod(Use any item)
也是用的BCB6吧
我的工具必须用正版,买了BCB5只能用它
没办法
就没有别的方法可以实现了吗???
lazygod
2004-01-05
打赏
举报
回复
我是把Form的指针传入
写一个函数输出
BOOL SetParent(TForm* Parent)
在里面new, SetParent
在Dll里再写一个释放函数
DestroyFrame()
释放时调用
ljlln
2004-01-05
打赏
举报
回复
你还可以使用导出类的方式调用!
在dll声明导出的TFrame类,然后再你需要的地方new一个Frame就行了!
定义Frame
class __declspec(dllexport) __stdcall TFrame3 : public TFrame
{
__published: // IDE-managed Components
TMemo *Memo1;
private: // User declarations
public: // User declarations
__fastcall TFrame3(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TFrame3 *Frame3;
定义dll的接口函数
class __declspec(dllexport) __stdcall TFrame3 ;
调用:
TFrame3 * pNewFrame =new TFrame3(this) ; //new的时候访问地址错误????
有点问题!
望各位大虾帮忙解答!谢谢
显刚
2004-01-05
打赏
举报
回复
再顶一下!!!
almser
2004-01-05
打赏
举报
回复
顶!
显刚
2004-01-03
打赏
举报
回复
是否要考虑打补丁才行啊?
BoweirrKing(忽然变傻) :
关闭时出现致命错误是因为在堆上new的对象没有删除掉,这只是个例子,细节还有很多内容呢。不过这个功能显然在BCB5中存在障碍。很伤心。。。。。
加载更多回复(11)
web自动化-
Frame
表单&鼠标操作
本课程主要讲解web自动化中
frame
表单与鼠标的操作,主要内容如下: 1.
frame
表单介绍 2.
frame
表单切换 3. 表单切换案例 4. 鼠标操作 5. 鼠标操作案例
我在CSDN参与的3000个帖子
2:100分急求,随机输出十个小写字母,但是,要求这十个字母不相同 3:求Sn=a+aa+aaa+…+aaa…a(n个a)之值 4:数组题 望
高手
帮忙! 5:呵呵,来推荐一下我的网站,本站提供大量当今流行的免费的音乐和免费电影,...
新手电脑硬件软件故障
解答
(三)
另一种方式是SFR(Split
Frame
Rendering,分帧渲染),SLI驱动程序内建对多重着色和
动态
负载平衡的机制,将待渲染的画面横向一分为二,两块显卡分别负责上下两部分的渲染工作。不过每块显卡的渲染任务量并非单纯的...
单独编译使用WebRTC的音频处理模块
关于回声消除滤波器延迟的计算, 之前自己一直认为只要这个延迟计算准确,就能得到理想的回声消除效果,现在发现这个想法太幼稚 ,一是 AECM 算法本身有一定局限性,二是 Android 上的采集延迟没有系统 API 支持,...
数学工具常见
问题
集
不要轻易地把这样锻炼自己能力的机会给否定掉,而去
期待
或者"恳求"别人的帮助来替自己寻找偷懒的理由,然后才是去有效地寻找资料,或者当自己考虑比较成熟的时候在公众论坛上提出自己的
问题
。 当然,上面主要是...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章