社区
Delphi
帖子详情
dll中MDI窗口问题
angel_kp
2002-10-30 10:09:42
关于两个dll,其中的MDI窗口互调,动态建立和显示都没有问题,但是在主程序退出的时候出现内存出错(Access violation)!窗体释放的方法是Free,然后把窗口指针置为nil。请问为什么会出错呢??如何解决??
...全文
40
4
打赏
收藏
dll中MDI窗口问题
关于两个dll,其中的MDI窗口互调,动态建立和显示都没有问题,但是在主程序退出的时候出现内存出错(Access violation)!窗体释放的方法是Free,然后把窗口指针置为nil。请问为什么会出错呢??如何解决??
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qinbao01
2002-10-30
打赏
举报
回复
up
solitarywk
2002-10-30
打赏
举报
回复
你在DLL中的MDI窗口的调用函数中窗体是怎么释放的?
DelUser
2002-10-30
打赏
举报
回复
在Form的Destory事件中加入 :
Form := nil;
在Form的Close事件中加入 :
action:=caFree;
angel_kp
2002-10-30
打赏
举报
回复
在close事件中写:action:=caFree;
用
dll
实现
MDI
窗口
用
dll
实现
MDI
窗口
Dll
调用
MDI
窗口
.rar
Dll
调用
MDI
窗口
.rar
Windows进程常用
DLL
模块注入技术
课程结合多种Windows进程常用
DLL
注入技术。远程线程注入APC注入,异步调用过程,向目标线程插入待执行任务从而完成注入。
窗口
消息注入,指定
窗口
进程注入,与全局钩子注入类似。环境块注入,获取进程上下文信息,直接性修改程序执行流程完成注入。进程入口点注入,在程序初始化的时机前将
dll
模块文件注入至目标主线程。进程调试级注入,涉及调试器相关功能调用知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。导入表注入,涉及PE相关知识点,增加区段,移动导入表,增加导入表、增加导出函数,修复表项数据等。内核驱动级
Dll
模块注入技术,内核驱动入门扩展。
C++ Builder
MDI
调用
DLL
子窗体(基于 BCB2010)
C++Builder
MDI
程序调用
DLL
窗体实例。基于 BCB2010
Mdi
Plus
MDI
框架
注意,这是未完成版本!!! 由于作者工作原因,暂时没有时间完成,但是基本功能已经实现,有个小
问题
如果你解决了欢迎发送给我,谢谢! 请用VS2010打开。内含四个
DLL
工程,及一个
DLL
的测试工程。 其
中
一个
问题
是,打开子
窗口
之后子
窗口
内容没有显示,单击子
窗口
客户区之后其内容才显示,目前作者没有解决。 /************************************************************************/ /*
Mdi
Plus框架说明 */ /************************************************************************/ /** 项目名称:
Mdi
Plus框架 版本号: v1.0.1 第一作者: Jef 地址:
中
国/江苏 日期: 20100616 电子邮箱: dungeonsnd@126.com 版权: 1.本框架完全开源。您可以免费使用本程序,但在用于商业用途前请获得第一作者的许可。 2.您使用本程序而导致任何伤害以及经济损失,由过错方依法承担所有责任, 一概与第一作者及合作单位无关。 3.如果您使用本程序则表示您已经同意此版本协议!否则请勿使用! 项目功能:
Mdi
Plus框架是在Windows平台下把SDI程序行为与
MDI
程序行为结合在一起的编程手段。 框架最适合: a.以GDI方式输出为主的应用程序。 b.需要多种文档模板输出的
MDI
程序。 c.需要一个类似于SDI应用程序的固定(禁止改变大小)的View进行绘图。 框架充分进行模块化,把
MDI
的
窗口
创建类放在一个单独的
DLL
中
(
Dll
Mdi
Wnd.
dll
),开发者应该继承 这个类来得到一个文档模板(这样继承者不必考虑创建细节,只负责绘图),并且每一个文档模板最好 放到一个
DLL
中
(如ADoc.
dll
,BDoc.
dll
,CDoc.
dll
)。开发者建立主程序来调用ADoc.
dll
,BDoc.
dll
, CDoc.
dll
,每个文档模板(如ADoc.
dll
)可产生多个对应子
窗口
。 不过,
Dll
Mdi
Wnd.
dll
并没有提供view/doc支持,它的职责只是创建及销毁调用者的需要子
窗口
。 (如果子
窗口
是new创建出来的,ADoc.
dll
的基类C
Mdi
Plus
中
自己会负责delete,开发者可以不调用 delete)。 当然,如果有必要你可以在
DLL
(A.
dll
,B.
dll
,C.
dll
)
中
实现view/doc支持。建议根据 需要开发独立的数据模型模块。 如果按照MVC模式的划分,
Dll
Mdi
Wnd.
dll
可以理解为C(控制器,创建与销毁
窗口
),继承类(如ADoc.
dll
, BDoc.
dll
,CDoc.
dll
)类似于V(视图,负责显示数据),这个框架没有提供M(模型,数据存储)。开发者 应该结合不同的文档模板来实现M。 版本历史: v1.0.1 20100616 第一版本 如何使用: 方法1. 进行项目开发时先建立
DLL
工程(建议选择 add mfc header win32
dll
),然后把
Dll
Mdi
Wnd.
dll
拷贝到新建项目
中
。根据应用需要的不同文档模板建立多个对应的
Dll
工程,这些
Dll
都继承自
Dll
Mdi
Wnd.
dll
的导出类,假定为ADoc.
dll
,BDoc.
dll
,CDoc.
dll
,这些
Dll
隐式链接
Dll
Mdi
Wnd.
dll
。 接着建立支持doc/view类型的
MDI
MFC主程序工程,隐式链接ADoc.
dll
,BDoc.
dll
,CDoc.
dll
。 另外要特别注意的是,主程序要进行必要的修改,如CChildFrame
中
要修改
窗口
样式。建立的
MDI
主程序运行过程
中
将完全类似于SDI程序。如,弹出子
窗口
时它的视图仍然保持最大化(普通的
MDI
应用 程序
中
任意一个子
窗口
从最大化还原时,其它
窗口
都将处于非最大化状态),并且它永远处于弹出的 子
窗口
下面,只能(且必须)建立一个CChildFrame。主程序的所有绘图工作都在这个 CChildFrame对应的view上进行。如果需要调用子
窗口
,只需要创建ADoc.
dll
(或BDoc.
dll
,CDoc.
dll
)导 出类的对象即可。子
窗口
的所有绘图工作都在ADoc.
dll
(或BDoc.
dll
,CDoc.
dll
)
中
实现,所以主程序与 ADoc.
dll
(或BDoc.
dll
,CDoc.
dll
)应该同时开发。 方法2. 开发者可以自己根据需要直接修改Demo版进行开发。 其它: 框架有点类似于多个文档模板的
MDI
应用程序,但是普通的
MDI
程序在新建一个文档前无法绘图,除非 子类化CMainFrame或截获C
MDI
Client的消息。这些方式不便进行模块化开发。
Mdi
Plus框架主要优点是在 新建一个文档前就有一个View进行绘图,并且不同功能进行模块化,各模块放到
Dll
中
(如果必要,你也 可以直接写成静态库链接到最终的执行程序里),适合一个项目多人同时进行开发。 **/
Delphi
5,379
社区成员
262,722
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章