CSDN的好人们,我想请教一下MFC多文档应用程序的框架,类与类之间的关联

ouyangzhongwen 2013-01-22 01:33:41

我第一次接触MFC多文档应用程序的编程,想模仿上图的界面写一个自己的小程序。
我有以下几个问题希望得到大家的解答:
(1)、(这是最笨的啦,也是我最想知道的)嘿嘿,多文档应用程序中的各个类的关联。比如CMDIFrameWnd、CDocument、以及View类等他们之间是怎样相互调用的?

(2)、以下是我针对上图的实现,提出的一些个人疑问。
1》、怎样才能实现在主框架中只显示工具栏的那几个自绘的图标?
2》、在子窗口中是不是使用了静态拆分,使左边和右边不一样。
3》、我要怎么样才能在子窗口的部分区域加载jpg的图片,还带滚动条的?有可用的控件吗?

20分问这么多问题,我自己都不好意思了……没办法啊,穷苦人家的娃儿……在此先谢谢大家!
...全文
373 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
ouyangzhongwen 2013-01-24
  • 打赏
  • 举报
回复
谢谢各位,就是分不多! 这个问题已经有一些头绪了,继续一边看书一边摸索。
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
"picture控件好像没有上下左右的滚动条吧" 所有派生自 CWnd 的 都有 一个 内嵌的 滚动条。 “如果不用图片控件自己写的话,” 可以使用 static(picture 是 static的一种)
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 18 楼 ouyangzhongwen 的回复:
引用 16 楼 tiger9991 的回复:1.CMDIFrameWnd是MainFrame的父类,可以这么认为,CDocument和View 是同级关联。 CMDIFrameWnd有多个CDocument和View的组合 2.SetMenu(NULL)把菜单栏干掉就可以了。 明白很多了,谢谢! 嗯,菜单栏干掉啦! 如果不用自带的那种工具栏,要写成好看点……
是不是在Oncreate函数中修改toolbar的加载?莫非是修改IDR_MAINFRAME的样子?
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 20 楼 schlafenhamster 的回复:
1. 像TAB , 那个 X 可以自绘 加 上去。 2。对话框后面 灰色 的 才是 view
展示图片的应该不是picture控件吧? 我准备尝试一下,用对话框来做! 但是现在还不知道怎么把图片加载进去。 picture控件好像没有上下左右的滚动条吧? 如果不用图片控件自己写的话,我可不可以固定一个区域,在这个区域来显示图片,那么在这个区域怎么来支持滚动条呢?
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
1. 像TAB , 那个 X 可以自绘 加 上去。 2。对话框后面 灰色 的 才是 view
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 17 楼 schlafenhamster 的回复:
那个 子窗口 像是 弹出的 对话框,不是‘分割’,而是在 对话框中 拖入的 控件

嗯,我也这样子觉得!不过我没有做过这种类型的。如果是子窗口是对话框的话,它可不可以达到下图这个效果呢?
http://img.my.csdn.net/uploads/201301/23/1358906455_3663.png
(不知道怎么样才能把图片在这里贴出来………………)
(1)、展示图片的控件 类似 tab标签。但是对话框中的Tab标签不能允许用户点击关闭吧??
(2)、假设是对话框的话,在多文档应用的背景下,在读写数据的时候,这个对话框起到的作用就和CView类似了吧?
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 16 楼 tiger9991 的回复:
1.CMDIFrameWnd是MainFrame的父类,可以这么认为,CDocument和View 是同级关联。 CMDIFrameWnd有多个CDocument和View的组合 2.SetMenu(NULL)把菜单栏干掉就可以了。
明白很多了,谢谢! 嗯,菜单栏干掉啦! 如果不用自带的那种工具栏,要写成好看点儿的,是改写MainFrame类里的哪个函数吧?
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
那个 子窗口 像是 弹出的 对话框,不是‘分割’,而是在 对话框中 拖入的 控件
傻X 2013-01-23
  • 打赏
  • 举报
回复
1.CMDIFrameWnd是MainFrame的父类,可以这么认为,CDocument和View 是同级关联。 CMDIFrameWnd有多个CDocument和View的组合 2.SetMenu(NULL)把菜单栏干掉就可以了。
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 13 楼 VisualEleven 的回复:
(1) 你可以参考MFC深入浅出。 (2) 你可以不显示菜单栏,只显示工具栏即可。
好的。谢谢! 我想请问 VisualEleven:那个加载图片的区域是怎么做到在部分固定区域显示的呢?
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 12 楼 schlafenhamster 的回复:
像是单文档就可以了
里面的那个子窗口是使用了静态拆分吗?让左侧可以设置参数,右侧可以显示图片
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
CFormView 就是对话框的 View 形式。有个 对话框模板 ,可以拖控件
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
在APP wizard新建项目的时候,最后一步选择生成的类时,View类的基类选择CFormView,证明是可行的!!
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 25 楼 schlafenhamster 的回复:
"WS_EX_TOOLWINDOW" 风格的 才是你说的那样。
不知您又没有接触过CFormView? 我觉得这个有可能是我想要的。 CFormView类是用于窗体视图的基类。一个窗体视图是包含控件的基本视图,这些控件以对话模板资源为基础被放置好。如果在应用中想使用窗体,则可用CFormView。这些视图使用CScrollView的功能,支持滚动。 嘿嘿,继续摸索!
schlafenhamster 2013-01-23
  • 打赏
  • 举报
回复
"WS_EX_TOOLWINDOW" 风格的 才是你说的那样。
ouyangzhongwen 2013-01-23
  • 打赏
  • 举报
回复
引用 23 楼 schlafenhamster 的回复:
"picture控件好像没有上下左右的滚动条吧" 所有派生自 CWnd 的 都有 一个 内嵌的 滚动条。 “如果不用图片控件自己写的话,” 可以使用 static(picture 是 static的一种)
嗯,我尝试了用非模态对话框来做,在窗口最小化的时候不是最小化在主窗口的左下角,而是整个缩在了屏幕的左下角!
Eleven 2013-01-22
  • 打赏
  • 举报
回复
(1) 你可以参考MFC深入浅出。 (2) 你可以不显示菜单栏,只显示工具栏即可。
schlafenhamster 2013-01-22
  • 打赏
  • 举报
回复
像是单文档就可以了
ouyangzhongwen 2013-01-22
  • 打赏
  • 举报
回复
嘿嘿,找到一篇想要的东西!链接放在这儿,给和我有相同需要的童鞋分享一下。 http://blog.csdn.net/kenkao/article/details/3227851
jimette 2013-01-22
  • 打赏
  • 举报
回复
操作吧啊 眼看千遍 不如手过一遍 学赵老师了!
加载更多回复(9)

15,980

社区成员

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

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