社区
Delphi
帖子详情
如何控制mdi子窗口位置和大小
cd20102010
2011-02-18 10:27:42
现有一个mdi窗口工程,父窗口为form1,mdi子窗口为form2(动态创建的)。
如何form2的显示位置和大小,使他显示时只显示在父窗口form1的客户区(即除了菜单栏,工具栏,状态栏之外的大小和位置)。
当他最大化时,显示在父窗口form1的客户区(即除了菜单栏,状态栏之外的大小和位置)。
当form1客户区的大小改变时,他也自动跟着缩放到适合的比例(即除了菜单栏,工具栏,状态栏之外的大小和位置)。
...全文
376
6
打赏
收藏
如何控制mdi子窗口位置和大小
现有一个mdi窗口工程,父窗口为form1,mdi子窗口为form2(动态创建的)。 如何form2的显示位置和大小,使他显示时只显示在父窗口form1的客户区(即除了菜单栏,工具栏,状态栏之外的大小和位置)。 当他最大化时,显示在父窗口form1的客户区(即除了菜单栏,状态栏之外的大小和位置)。 当form1客户区的大小改变时,他也自动跟着缩放到适合的比例(即除了菜单栏,工具栏,状态栏之外的大小和位置)。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cd20102010
2011-02-19
打赏
举报
回复
怎么设置子窗口坐标啊
luo000102
2011-02-19
打赏
举报
回复
应该可以在创建子窗体的时候设置子窗体的坐标在父窗体内来实现
keeley20
2011-02-18
打赏
举报
回复
http://download.csdn.net/source/3027985
我上传了一个MDI控制的Demo,希望能对你有帮助。
kye_jufei
2011-02-18
打赏
举报
回复
使用基於進行繼承inherited。。。
cd20102010
2011-02-18
打赏
举报
回复
楼上的大哥,你的工程中那么多外部控件,你能去掉吗,我调试通不过。另外,我希望mdi子窗口是在设计时就已经设计好的啊,然后创建,这样可以在设计时把一些控件放上去布局啊。还有,关键是子窗口显示时的位置和大小要和主窗口有一定的关系,即:
现有一个mdi窗口工程,父窗口为form1,mdi子窗口为form2(动态创建的)。
如何form2的显示位置和大小,使他显示时只显示在父窗口form1的客户区(即除了菜单栏,工具栏,状态栏之外的大小和位置)。
当他最大化时,显示在父窗口form1的客户区(即除了菜单栏,状态栏之外的大小和位置)。
当form1客户区的大小改变时,他也自动跟着缩放到适合的比例(即除了菜单栏,工具栏,状态栏之外的大小和位置)。
MDI
窗体限制
大小
禁用最大化最小化按钮
MDI
窗体
控制
,禁止调整
大小
,禁用最大化及最小化按钮。
WINDOWS
窗口
类型及
控制
(基于VB开发环境)
1、 实现一个
MDI
主
窗口
,二个
MDI
子
窗口
。 要求: (1)能通过菜单对
窗口
的显示进行
控制
,如通过菜单选择显示某个
MDI
子
窗口
(2)对
MDI
子
窗口
的
大小
和
位置
进行处理,
MDI
子
窗口
要显示在
MDI
主
窗口
的中间。 (3)对
MDI
主
窗口
要实现菜单栏,工具栏和状态栏。
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中(如果必要,你也 可以直接写成静态库链接到最终的执行程序里),适合一个项目多人同时进行开发。 **/
MDI
.zip_92E_richtextbox_文本编辑器
MDI
文本编辑器。每个
子
窗口
包含一个多行的RichTextBox,
MDI
父
窗口
有一个格式菜单,其中包含的
子
菜单能够
控制
活动
子
窗口
中文本的
大小
、字体和颜色。此外,父
窗口
应该有文件菜单,其菜单项为新建、关闭和退出。
XDockFloat ActiveX控件
XDockFloat ActiveX控件 能在
MDI
和SDI应用程序里容易地创建高级的GUI。特点包括:可停靠(Dockable)和可浮动(floatable)的VB
窗口
(Dockable是指拖动
窗口
A,当经由
窗口
B的某一边缘地带时,
窗口
A可以成为
窗口
B上的
子
窗口
而停靠在
窗口
B的某一角落);可以包括其他控件的工具条;在VB的菜单
控制
里绘制图象和在Microsoft工具条
控制
里显示下拉列表;运行时动态布局
窗口
等。XDockFloat和第三方菜单和工具条相兼容。
XDockFloat ActiveX控件的运行界面如下:
XDockFloat ActiveX控件的关键特色: VB窗体可停靠到其他
窗口
(dockable); 窗体可关联到其他
窗口
(pinnable); 其他
窗口
可以放到选定的
窗口
内或与之分开; 停靠(dock)和浮动Microsoft工具条; 可以把
窗口
停靠(dock)到已停靠到其他
窗口
的
窗口
上(Dock的意思见控件简介部分); 与第三方菜单和工具条相兼容; 保存和加载停靠/浮动(dock/float)状态; 设置个性化的停靠
窗口
大小
(dock size)和停靠风格(dock style); 运行时改变
窗口
和工具条的布局; 在运行时把一个
MDI
子
窗口
改变为一个可停靠/可浮动(dockable/floatable)的
窗口
或把一个可停靠/可浮动的
窗口
改变为一个
MDI
子
窗口
; 运行时隐藏或显示可停靠(dockable)和可浮动(floatable)
窗口
和工具条; 在标准的VB菜单
控制
条上绘制图象; 在工具条的下拉菜单上绘制图象。 XDockFloat ActiveX控件系统要求: Windows NT/2000, 95/98, ME, XP。
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章