MDI子窗口初始位置的问题

peppet 2014-11-10 12:42:08
我用多文档结构,想做一个表格化的编辑工具,左边目录树里选择文件,右边展示内容,所以自定义了两个document template
左边是固定的一个CTreeView,用于显示目录,点击叶子的时候在右边弹出CListView
有个问题是这个ClistView的初始位置总是把CTreeView盖住,OnGetMinMaxInfo里只能指定最大化时的位置,而且我设置了还无效
void CChildTDFrame::OnGetMinMaxInfo(MINMAXINFO FAR* lpMMI)
{
// TODO: Add your message handler code here and/or call default
// lpMMI->ptMaxPosition
lpMMI->ptMinTrackSize.x=1000;
lpMMI->ptMinTrackSize.y=1000;
lpMMI->ptMaxPosition.x = 1000; //这里不生效
lpMMI->ptMaxPosition.y = 1000; //这里不生效

lpMMI->ptMaxSize.x=1000;
lpMMI->ptMaxSize.y=1000;
lpMMI->ptMaxTrackSize.x=1000;
lpMMI->ptMaxTrackSize.y=1000;

CMDIChildWnd::OnGetMinMaxInfo(lpMMI);
}

请问有什么办法可以限制弹出的子窗的初始位置呢?
...全文
202 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
信阳毛尖 2014-11-11
  • 打赏
  • 举报
回复
怎么感觉你这个逻辑有点儿问题呢: view只有一个,view上面的窗口可以创建多个,也就是说一个doc对应一个view,再在这个view上创建你需要的多个窗口啊
hhhh63 2014-11-11
  • 打赏
  • 举报
回复
重写最大化事件,用MOVEWINDOW重新定一下位置。 感觉总的界面布局思路要改一下,就象VS编辑环境一样,中间是MDI窗口,两边是树型停靠窗口,这样比较规范,编程容易。 新建项目时有一个资源管理器样式选项,选上就是你要的效果了。
peppet 2014-11-11
  • 打赏
  • 举报
回复
搞定了,谢谢各位! 思路是MDI结构下,用CControlBar派生类作为侧面停靠窗口,在窗口上摆TreeCrl即可
peppet 2014-11-10
  • 打赏
  • 举报
回复
再描述下我的意图 我的目的就是制作一个类似资源管理器的东西,左边是一个固定位置和大小的CTreeView(而且不应该让用户打开多个CTreeView),右边是CListView,点击CTreeView的节点打开CListView,可以打开多个。CListView最大化最小化等各种改变只在右边区域,不影响左边 不知道有没有讲清楚。 新手没什么分,再加50点吧。。帖子再等一段时间,看看有没有人指点迷津。。
peppet 2014-11-10
  • 打赏
  • 举报
回复
我在RightFrame的Onsize里面用了movewindow,使RightFrame最大化后没有覆盖LeftFrame 但是单击leftFrame后,RightFrame的最大化状态就被取消了,各种问题.. 看来还是得用多文档的切割视图 但是我不需要每个子视图都有一个left。。
peppet 2014-11-10
  • 打赏
  • 举报
回复
引用 3 楼 peppet 的回复:
[quote=引用 1 楼 hhhh63 的回复:] 创建子窗口时直接限定位置,在create或createex中定坐标。 还有,这种情况直接创建资源管理器型的项目是不是更好。
谢谢!小弟初学,还想请详细解释下,这个create是要在frame类里面重载吗? 另外资源管理器型是指“windows explorer ”类型么?[/quote] 在create中改了一下rect值,可以控制初始的位置了! 但最大化的时候的问题还没解决,仍然会覆盖掉leftView,OnGetMinMaxInfo里面设定最大化时左上角位置无效,为什么呢。。
hubo86915531 2014-11-10
  • 打赏
  • 举报
回复
引用 4 楼 peppet 的回复:
[quote=引用 2 楼 hubo86915531 的回复:] CView::ShowWindow(SW_HIDE)
这不是隐藏窗口么,我要窗口可见,但是想控制一下创建后的初始位置[/quote] 那你可以分别建两个内存DC 一个CTreeView 一个CListView 然后将两个内存DC 拷贝到输出设备DC
peppet 2014-11-10
  • 打赏
  • 举报
回复
引用 2 楼 hubo86915531 的回复:
CView::ShowWindow(SW_HIDE)
这不是隐藏窗口么,我要窗口可见,但是想控制一下创建后的初始位置
peppet 2014-11-10
  • 打赏
  • 举报
回复
引用 1 楼 hhhh63 的回复:
创建子窗口时直接限定位置,在create或createex中定坐标。 还有,这种情况直接创建资源管理器型的项目是不是更好。
谢谢!小弟初学,还想请详细解释下,这个create是要在frame类里面重载吗? 另外资源管理器型是指“windows explorer ”类型么?
hubo86915531 2014-11-10
  • 打赏
  • 举报
回复
CView::ShowWindow(SW_HIDE)
hhhh63 2014-11-10
  • 打赏
  • 举报
回复
创建子窗口时直接限定位置,在create或createex中定坐标。 还有,这种情况直接创建资源管理器型的项目是不是更好。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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