客户区的设计问题,请高手指点一二,谢谢!

calmman1980 2011-07-22 10:38:30
我想在客户区里按一定的次序放置很多子窗口与控件.我期望当控件A"吃掉"一部分客户区后,控件B能得到剩余的客户区,依此类推.

但问题在于,父窗口的客户区总是一定的,分割客户区需要客户程序自己完成.

我的方案

将要创建的子窗口,以及控件按次序编组,创建的时候,遍历这个编组,客户区从队列开始逐渐的向后传递,过程中不断的被各种控件消耗,直到最后一个控件.
这样每一个窗口与空间都可以根据相互的位置计算自己的位置,同时当父窗口OnSize的时候,还能动态的调整自己的尺寸与位置.

但不足的地方是,每个子窗口的创建行为不一, 不易给出统一的接口.

我的问题, 分配,切割有没有更优化的方案? MFC有没有提供这样的机制?

如果能有第三方代码,那是最好不过了.
谢谢!
...全文
120 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
calmman1980 2011-08-07
  • 打赏
  • 举报
回复
谢谢各位热心解答
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
其实就是一堆rect
rect的计算分配就是协调各自的位置和大小
可以固定数据,这个时候要xxx才能看到后面的窗口

可以不固定,按比例分配
也可以有的固定,有的按比例分配

楼上那程序就是我自己自绘单文档框架用的

楼主你看着办
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
补充前面:
CAutoFrm 改成Cxxx
gz_qmc 2011-08-02
  • 打赏
  • 举报
回复
假如你要分割的窗口为xxx
那么,重载xxx的虚函数

void CAutoFrm::RecalcLayout(BOOL bNotify)
{
if(m_bInRecalcLayout) return;
m_bInRecalcLayout = TRUE;

CRect rect,rect1,rect2,rect3,rect4;

GetClientRect(&rect);
rect.left=300;
rect.top=100;
rect.bottom-=40;

GetClientRect(&rect1);
rect1.right=300;
rect1.bottom=100;

GetClientRect(&rect2);
rect2.left=300;
rect2.bottom=100;

GetClientRect(&rect4);
rect4.top=rect4.bottom-40;
rect3.SetRect(0,100,300,rect4.top);


if(::IsWindow(mTitBar.m_hWnd)) mTitBar.MoveWindow(&rect1);
if(::IsWindow(mTopBar.m_hWnd)) mTopBar.MoveWindow(&rect2);
if(::IsWindow(mLeftBar.m_hWnd)) mLeftBar.MoveWindow(&rect3);
if(::IsWindow(mInfoBar.m_hWnd)) mInfoBar.MoveWindow(&rect4);

RepositionBars(AFX_IDW_PANE_FIRST,AFX_IDW_PANE_LAST,AFX_IDW_PANE_FIRST,reposExtra,CRect(0,0,0,0),&rect);
m_bInRecalcLayout = FALSE;
}


你想怎么吞就怎么吞,注意啊,rect是最后自动分配的那个窗口
一般就是分完后剩下的,没有分的地盘还是XXX的
lgstudyvc 2011-08-02
  • 打赏
  • 举报
回复
mfc莫有你需要的现成的

你自己写个类管理,可适用所有的控件

2 lou de hui da ye bu ma fan
calmman1980 2011-08-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 buyong 的回复:]
你可以参考子窗口平铺的代码,这种代码有很多
[/Quote]
对, 我要的就是这个!
大侠能推荐一套你觉得不错的吗?谢谢
zp_11_zp_cool_ 2011-07-26
  • 打赏
  • 举报
回复
来学习下
buyong 2011-07-25
  • 打赏
  • 举报
回复
你可以参考子窗口平铺的代码,这种代码有很多
Eleven 2011-07-22
  • 打赏
  • 举报
回复
我猜你想表达的是窗口收缩和扩展吧,MoveWindow、SetWindowPos();
psbeond 2011-07-22
  • 打赏
  • 举报
回复
最好弄张图示例一下。我没看明白。


------------------------------------------------------------------------
软件介绍 优于以前发布的1.0~3.0版本,修正了其他的小bug和大漏洞,高手还得多多指点,面向客户,模板易修改。 附带了模板的PSD源文件。源码包含很具体的使用流程和修改指示流程。 最大特点:适合新手学习的全站静态化程序。采用FSO组件才能正常运行;用户访问一次页面则自动更新相 应的侧边栏内容和其他相关后台添加的内容。本站没有专业blog的功能模块化,没有专业blog和其他cms程序的专业化,有的只是我自己的设计思想。希望大家能喜欢 很好的兼容了firefox 和 IE ,符合w3c设计标准 功能: 1.文章,图片,音乐功能:发表自动HTML生成,分类内容列表批量静态生成可自动更新,批量更新模板,摘要,评论,清晰易用多功能UBB工具栏,可设置置顶,批量删除评论 2.友情链接--HTML生成,前台客户端自动更新,可审核 3.涂鸦收藏--HTML生成,前台客户端自动更新,审核,分类,简介,自由加喜欢的外链,可置顶 4.CSS管理--后台编辑css样式表 5.可手动生成静态页面,提高更新速度,并在生成前可更改“广告,显示数,截取字节等” 6.留言,评论的后台审核,UBB,验证码支持,可屏蔽垃圾留言--发表后全部HTML自动生成 7.强大的数据库操作:备份/还原/压缩;数据库的SQL操作,后台添加修改表和字段,创建新数据库;输出SQL数据库结构。 8.指定目录下的文件夹的文件管理,包括上传的文件--节省空间。 9.关键词过滤,屏蔽功能,可后台修改添加关键词 10.站内搜索支持多个关键词搜索 11.tags标签相关内容显示,也静态化,自动更新 12.安全功能: a)防止ASP木马和木马图片,清晰的后台界面 超级管理员的二级密码验证 b)SQL注入记录IP和注入信息(有待改进啊...高手指点) c)表单SQL过滤 13.超快速无组件上传功能(比原装化境快50倍,通过原化境和网上资料修改而成),可以设定大小和上传类型。 14.W3C优化,兼容firefox 和IE. 15.HTML生成页面之前可以设置生成的参数,如列表数,标题字符显示数,广告。 如果您搜索到月儿猫猫其他版本,不要使用,就用客户体验版。谢谢   1.您是第一次使用月儿猫猫程序,进入后台登陆页面并选择“静态HTML生成”菜单项,开始生成HTML页面,使您浏览没有数据资料的整站能正常,并激活静态页面的同步更新功能...默认用户名和密码都是:moonlightcat.cn 管理员二级密码默认是:123456 2.注意:后台设置完成后不会弹出此窗口了... 3.经过初次生成后所有静态页面都可以自动同步更新信息啦...您只需要后台发布您的信息,前台所有页面均自动更新从新生成HTML页面,前提是页面被访问,访问一次更新一次... 4.点这里进行登陆设置

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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