您的位置:程序门 -> vc/mfc -> 界面



如何让view里的clistctrl随着主窗体的最大化而放大?


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何让view里的clistctrl随着主窗体的最大化而放大?
发表于:2007-07-27 10:29:41 楼主
我做了个小系统,是基于single   document的,在view里放了个clistctrl来显示从数据库里读出的数据记录。当运行时,主窗体打开后默认不是全屏,需要最大化才是
满屏。然而主窗体最大化后clistctrl并没有跟着放大,还是原来那么小,我觉得这样不爽,下面是view里的oinitupdate方法:
//
//
void   cmaterial_misview::oninitialupdate()  
{
cview::oninitialupdate();
crect   rect;
getclientrect(rect);
rect.top+=0;
plist.create(ws_child ¦ws_visible ¦ws_border ¦lvs_report,rect,this,1);
plist.setbkcolor(rgb(255,255,255));
plist.settextcolor(rgb(0,0,0));
plist.settextbkcolor(rgb(117,151,240));
plist.setextendedstyle(lvs_ex_fullrowselect ¦lvs_ex_gridlines ¦lvs_ex_headerdragdrop);
//设置表头
plist.insertcolumn(0,_t( "物资编号 "),lvcfmt_left,100);
plist.insertcolumn(1,_t( "物资名称 "),lvcfmt_left,100);
plist.insertcolumn(2,_t( "规格型号 "),lvcfmt_left,100);
plist.insertcolumn(3,_t( "物资种类 "),lvcfmt_left,100);
plist.insertcolumn(4,_t( "单位 "),lvcfmt_left,100);
                  ......
//
}
//
请问:
(1)我如何让主窗体一打开就是满屏的?
  (2)如何让clistctrl跟着主窗体的放大而放大?
谢谢!
马上给分!!!
发表于:2007-07-27 10:45:141楼 得分:0
1   在c...app::initinstance中找到showwindow语句,改成showwindow(sw_maximize);
2   响应视图类的onsize(),在里面调整控件大小。
发表于:2007-07-27 10:46:052楼 得分:0
谢谢大家帮帮小弟呀,这个问题本来我想给50分的,但是系统只让我给10分,没办法
发表于:2007-07-27 11:18:593楼 得分:0
感谢这位兄弟,主窗体是可以一启动就最大化了,但是view里的clistctrl还是没有跟着放大阿?现在该怎么办?
发表于:2007-07-27 12:19:204楼 得分:0
获取view的clientrect而后用movewindow
发表于:2007-07-27 12:26:225楼 得分:0
兄弟,我按照你说的做了:
crect   rect;
getclientrect(rect);
movewindow(rect);
没有效果
发表于:2007-07-27 13:01:476楼 得分:0
你调用的是视图的movewindow吧,应该调用listctrl的movewindow
发表于:2007-07-27 13:31:187楼 得分:0
是的,那我再试试看
发表于:2007-07-27 14:01:048楼 得分:0
兄弟
我按照你说的,运行时抱错:
crect   rect;
getclientrect(rect);
plist.movewindow(rect);
发表于:2007-07-27 14:04:569楼 得分:0
你调试的时候看一下rect的值,看看是不是有问题,或者自己设置一个固定值看看,如果还不行那就是你的plist的问题了!
发表于:2007-07-27 14:29:1410楼 得分:0
我根据你说的调试了下,下面是rect的值:
rect={top=0,left=0,bottom=472,right=756},其实并不是屏幕大小。
很显然,还是主窗口初始化的值大小,我能否先获得客户端的屏幕大小,然后再把这个值
赋给这个rect?如果能,怎么做?我是菜鸟,请说详细点!
谢谢!!
发表于:2007-07-27 15:27:3411楼 得分:0
int   cxscreen   =   ::getsystemmetrics(sm_cxscreen);//获得屏幕宽
int   cyscreen   =   ::getsystemmetrics(sm_cyscreen);//   获得屏幕高
如果我想把{top=0   bottom=cyscreen   left=0   right=cxscrenn}这组值赋给
rect,应该怎么写?
发表于:2007-07-27 15:49:5612楼 得分:0
已搞定,谢谢楼上的几位兄弟的提醒,谢谢!
发表于:2007-07-29 03:38:1913楼 得分:0
老大们,直接用clistview岂不是更好^_^
发表于:2007-07-29 15:20:0014楼 得分:0
出错是什么原因呢
发表于:2007-07-29 18:21:3715楼 得分:0
1.在主应用程序中的初始化实例函数initinstance()函数中如下设置m_pmainwnd-> showwindow(sw_showmaximized);m_pmainwnd-> updatewindow();即可使主窗口在启动时为最大化显示方式.
2.至于说使控件和窗口同时变化大小.可以在该控件所在的view中先获得该view的大小即rect,然后用该控件的movewindow(rect)函数实现.


快速检索

最新资讯
热门点击