24小时热门版块排行榜    

查看: 1526  |  回复: 7

qiaoyusun

铁虫 (小有名气)

[求助] MFC里怎么给主窗口加滚动条?

图像处理的程序一般都是多窗口的模式,现在子窗口里的滚动条是有的,但是发现当打开的子窗口很多的时候,主窗口就不够大了,所以想加个滚动条,但是不知道怎么操作。如果有高手肯不吝赐教烦请稍微详细一些,比如在哪个类哪个函数里添加什么语句。多谢,多谢!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

【答案】应助回帖

qiaoyusun(金币+5): 就是技术学得不够好啊,我知道子窗口是在initialupdate里设置大小的,但是主窗口不太会。 2011-08-02 21:05:42
qiaoyusun(金币+5): 这个设置我也有,不管用啊 2011-08-03 13:11:31
MFC中,窗口的滚动条是“自动”出现的,而不必自己添加。
但前提是您要选用哪种CView的继承类。
您要选用CScollView,那么,在InitialUpdate函数中,就可以设置窗口的大小。
那么,运行的时候,如果窗口的尺寸小于当初的设置,那么滚动条就自动出现了。

建议:认真看看《Visual C++技术内幕》
2楼2011-08-02 16:07:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

sudo

木虫 (正式写手)


jjdg(金币+1): 感谢参与 2011-08-02 22:31:22
主窗口用的是CScrollView还是CScrollDialog?

前者可以参考http://blog.csdn.net/keyouan2008/article/details/5820602

后者可以参考http://blog.csdn.net/liang_lq/article/details/6224888
3楼2011-08-02 16:11:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiaoyusun

铁虫 (小有名气)

引用回帖:
2楼: Originally posted by yalefield at 2011-08-02 16:07:06:
MFC中,窗口的滚动条是“自动”出现的,而不必自己添加。
但前提是您要选用哪种CView的继承类。
您要选用CScollView,那么,在InitialUpdate函数中,就可以设置窗口的大小。
那么,运行的时候,如果窗口的尺寸 ...

选的是CScollView类,InitialUpdate函数里也有设窗口的大小,但是运行的时候窗口的尺寸是变了,滚动条没有唉。
4楼2011-08-02 22:35:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

【答案】应助回帖


jjdg(金币+1): 感谢参与 2011-08-03 00:09:49
引用回帖:
4楼: Originally posted by qiaoyusun at 2011-08-02 22:35:13:
选的是CScollView类,InitialUpdate函数里也有设窗口的大小,但是运行的时候窗口的尺寸是变了,滚动条没有唉。

运行的时候窗口的尺寸,是不是小于InitialUpdate函数里所有设窗口的大小?
5楼2011-08-02 23:47:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiaoyusun

铁虫 (小有名气)

jjdg: 加代码啊 2011-08-03 22:15:40
jjdg:编辑内容 2011-08-04 13:03
jjdg: 看不见是因为你设得超过了显示器的分辨率 2011-08-04 13:04:32
引用回帖:
5楼: Originally posted by yalefield at 2011-08-02 23:47:42:
运行的时候窗口的尺寸,是不是小于InitialUpdate函数里所有设窗口的大小?

MainFrm的PreCreateWindow里设了cs的大小,主窗口确实会跟着改变。不过如果尺寸设大了超出了显示器的尺寸就看不到边了,设小了也没见有滚动条出现。View的InitialUpdate里的尺寸好像是管着窗口的。

[ Last edited by jjdg on 2011-8-4 at 13:03 ]
6楼2011-08-03 13:17:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主

【答案】应助回帖

qiaoyusun(金币+10): 2011-08-06 22:07:56
引用回帖:
6楼: Originally posted by qiaoyusun at 2011-08-03 13:17:52:
MainFrm的PreCreateWindow里设了cs的大小,主窗口确实会跟着改变。不过如果尺寸设大了超出了显示器的尺寸就看不到边了,设小了也没见有滚动条出现。View的InitialUpdate里的尺寸好像是管子窗口的。

从你的代码来看,应该是你的sizeTotal太大。cs和cy分别为滚动窗口的水平、垂直分量,表明 窗口的水平、垂直方向尺寸小于其指定像素单位时将出现水平方向滚动条和垂直方向滚动条。通过修改滚动尺寸, 可改变出现滚动条的最小窗口。也就是说,你现在指定的是2000*2000像素的尺寸。一般显示器的分辨率可以达到这个尺寸?
VC++中使用CscrollView代替Cview类即可实现滚动窗口。此时,系统生成OnInitialUpdate()成员函数:
void CmyscrollView::OnInitialUpdat()
{
CscrollView::OnIntialUpdate();
Csize sizeTotal;
SizeTotal.cs=sizeToal.cy=100;
SetScrollSizes(MM-TEXT,sizeTotal);
}

这个例子里面,cs和cy分别为滚动窗口的水平、垂直分量,表明窗口的水平、垂直方向尺寸小于100像素单位时将出现水平方向滚动条和垂直方向滚动条。通过修改滚动尺寸,可改变出现滚动条的最小窗口。例如,若“sizeTotal.cx=600;sizeTotal.cy=800;”,则当窗口尺寸小于600*800时,就会出现滚动条。
努力学习!以正当途径!获得需要的知识!
7楼2011-08-04 12:58:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qiaoyusun

铁虫 (小有名气)

jjdg: 那你看看msdn,里面有例子的吧 2011-08-04 23:42:55
引用回帖:
7楼: Originally posted by jjdg at 2011-08-04 12:58:03:
从你的代码来看,应该是你的sizeTotal太大。cs和cy分别为滚动窗口的水平、垂直分量,表明 窗口的水平、垂直方向尺寸小于其指定像素单位时将出现水平方向滚动条和垂直方向滚动条。通过修改滚动尺寸, 可改变出现滚 ...

OnInitialUpdate里这个sizeTotal的设置是控制子窗口的,当子窗口的PreCreateWindow是cx和cy小于这个sizeTotal的时候就会出现滚动条。决定主窗口大小的设置在MainFrm里的PreCreateWindow函数中。但我就不知道主窗口的sizeTotal在哪里设置。
8楼2011-08-04 16:08:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 qiaoyusun 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 今日不放榜?网传国自然预计 8 月 27 日可查结果 +15 医学老男孩 2026-08-20 18/900 2026-08-21 13:46 by 医学老男孩
[基金申请] 感觉是下周放榜了 +7 angus9576 2026-08-17 12/600 2026-08-21 13:38 by weiyin
[基金申请] 看来今天不会放榜了? +5 chengyan1220 2026-08-21 5/250 2026-08-21 12:34 by gltch
[基金申请] 只有每年这种时候来逛逛小木虫 +23 yaoyewhu2008 2026-08-20 25/1250 2026-08-21 12:19 by Poppy1104
[基金申请] 今天基金会出结果吗?20260819 +15 kkkl_v 2026-08-19 16/800 2026-08-21 11:22 by 365372687
[基金申请] 科研孤儿太难了 +15 我4大白菜 2026-08-20 16/800 2026-08-21 11:07 by yming1319
[基金申请] 应该是下周三26日公布了吧? +4 哈哈蛤? 2026-08-21 4/200 2026-08-21 10:58 by Vivilian
[基金申请] 今天放榜没戏了吧 +9 yuleib84 2026-08-19 11/550 2026-08-21 10:06 by gltch
[基金申请] 基金啊基金 +4 longfie172 2026-08-20 4/200 2026-08-21 08:58 by mark mao
[基金申请] 估计是周四 +3 archvillain 2026-08-18 3/150 2026-08-21 01:48 by jnhyjjm
[基金申请] 今天系统多次维护,明天很可能放榜! +10 zju2000 2026-08-16 11/550 2026-08-20 20:02 by cl479861084
[基金申请] 时间戳变了,能看出什么问题? +18 基诺咪客 2026-08-17 23/1150 2026-08-20 17:19 by Godzela
[基金申请] 重要消息,中午系统在维护 +11 yuleib84 2026-08-18 12/600 2026-08-20 11:09 by xskun
[教师之家] 为什么余额宝的年化利率越来越低?主要原因有哪些? +5 瞬息宇宙 2026-08-15 5/250 2026-08-19 20:23 by super2002521
[基金申请] 2027广东省杰青 +4 奶牛小黑 2026-08-15 10/500 2026-08-19 11:02 by wanfengnew
[基金申请] 快农历七夕节了,轻松一下,男人悄悄话,女施主请不要进来。 +6 Tide man 2026-08-14 7/350 2026-08-19 09:56 by ZJTJZ
[基金申请] 明天放榜? +5 Shxjjxjkx 2026-08-18 5/250 2026-08-18 18:14 by -大大大大大-
[基金申请] 今天维护系统维护 祝所有人 高中 +8 gjjjzhong 2026-08-18 9/450 2026-08-18 13:01 by 家与远方
[精细化工] 招聘 金属平磨液,抛光液研发工程师 +3 小天0311 2026-08-14 3/150 2026-08-16 07:31 by H9PLUS
[基金申请] 各位道友,我要去昆明玩几天,回来见。 +7 Tide man 2026-08-14 8/400 2026-08-15 01:11 by arzu_hma
信息提示
请填处理意见