我想先做好一个整体的筐架,然后具体的功能我都做成DLL的形式.我是把主窗体的FormStyle设置成为MDIForm,然后想把DLL中的窗体的FormStyle设为MDIChild,但是在从主窗体调用dll中的窗体的时候.老是提示"NO MDI Forms are currently active"请问各位高手应该怎样传递参数才能解决该问题?
解决方案 »
- 着急啊,中文字符串比较问题
- 求教:错误提示adoquery1:cannot perorm this operation on an open dataset
- 流的操作问题:为什么这段代码达不到目的? ----在线等待一个解答!
- 大家知道在VC中打::就能弹出全局函数和全局变量的代码辅助框,那么我想在DELPHI中想要看看它都支持哪些全局API和变量,怎么看
- 关闭窗口时如何使其最小化而不是真正关闭,谢谢!
- 关于ACCESS进行更新的问题
- 怎样获得主机的机器名?
- 单位买复印机,请问什么型号的好一些?
- Socket与路由器
- 求教:请大侠推荐几个好的打印控件
- 欢迎大家下载我的软件,下载者有分.
- ado升级问题
光传递 Application 的 Handle 是不够的,需要传递整个 Application 对象。这样:Library ShowFrmdll;
uses
...
Unit1 in 'Unit1.pas' {Form1};var
DLLApp: TApplication;function ShowDllForm(App:TApplication; ACaption:String):Longint;stdcall;
begin
Application := App; if not Assigned(Form1) then
Form1:=TForm1.Create(Application);
Result:=Longint(Form1);
Form1.Caption := ACaption;
Form1.Show;
end;procedure DLLUnloadProc(Reason : Integer);
begin
if Reason = DLL_PROCESS_DETACH then Application := DLLApp;//恢复
end;exports
ShowDllForm;begin
DLLApp := Application; //保存 DLL 中初始的 Application 对象
DLLProc := @DLLUnloadProc; //保证 DLL 卸载时恢复原来的 Application
end.要注意的是,创建的窗体被释放后再卸载 DLL。
My Email:
[email protected]
[email protected]
[email protected]
http://qixin000.vicp.net/down
取下把,我把它放到那里了;
程序实现的功能是
将包注意窗体的菜单添加到主窗体的菜单中来;
还有包中一些窗体的功能函数的调用;
程序有点乱,是以前测试用的;
自己整理一下吧;更好的利用包技术的思想,请看我的回答
http://expert.csdn.net/Expert/topic/1962/1962766.xml?temp=.2309839
使用dll讲的,不过道理是一样的
从这个程序中应该能看到,它们之间的耦合性很高;所以代码不好;
所以要考虑用我说的这个方法解决
http://expert.csdn.net/Expert/topic/1962/1962766.xml?temp=.2309839
大家看看,提点意见;
要不我单独发一个帖子大家讨论一下吧;