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



使用group box控件分组问题


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


使用group box控件分组问题
发表于:2008-01-07 22:04:46 楼主
在一个对话框应用程序中我想调整group   box控件的位置,但是这个控件又包含许多控件,我想在移动这个group   box的同时移动它所包含的控件,请问各位大侠有没有比较简洁的办法,比如
发表于:2008-01-07 22:07:181楼 得分:0
在移动property所代表的group   box时,同时移动它所包含的控件,当然可以分别移动它所包含的每个子控件,但是如果子控件太多的话就太麻烦了,请问有没有简单一点的方法?
发表于:2008-01-07 22:09:522楼 得分:0
我所说的移动就是指子控件相对group   box   的相对位置不变,即他们一起移动,有没有简单的方法?
发表于:2008-01-07 22:18:233楼 得分:0
movewindow()吧.
发表于:2008-01-07 22:25:364楼 得分:0
你先学学怎么贴图...
你硬盘里的图片,我们是看不到滴...
发表于:2008-01-07 22:34:405楼 得分:0
虽然图没有贴好,但是我所说的意思很简单,各位应该都看得懂吧
发表于:2008-01-07 22:47:386楼 得分:0
不知道我看懂了米有...
我就按我的理解说一下

如果是在mfc资源编辑器中移动控件,可以按着ctrl或者shift单击控件,就可以把你想要移动的所有控件选中,然后拖动就可以了

如果是在程序运行中动态移动控件...挨个计算吧...
发表于:2008-01-07 22:59:537楼 得分:0
我说的就是在程序中动态移动控件,但是如果group   box包含的子控件太多的话就太麻烦了,有没有简单的方法?
发表于:2008-01-07 23:23:298楼 得分:0
我能想到的最简单办法是这样

首先用一个数组纪录所有控件的id:
uint   nids[]   =   {   idc_groupbox,   idc_1,   idc_2,   blabla...   };

然后用一个循环移动所有控件:
cwnd   *pwnd   =   null;
crect   rc;
for(   int   i   =   0;   i   <   sizeof(   nids   )   /   sizeof(   nids[0]   );   i++   )
{
        pwnd   =   getdlgitem(   nids[i]   );
        if(   pwnd   )
        {
                pwnd-> getwindowrect(   rc   );
                screentoclient(   rc   );         //我觉得这一步还是必要的,但是我没测试过~~
                rc.left   +=   offsetx;
                rc.right   +=   offsetx;
                rc.top   +=   offsety;
                rc.bottom   +=   offsety;
                pwnd-> movewindow(   rc   );
        }
}


写的不好,大家批评指正~~
发表于:2008-01-07 23:33:079楼 得分:0
难道mfc就没提供一种类似这样的功能,就是把group   box和其中的子控件对应起来,然后如果group   box移动的时候在它之中的子控件也跟着移动。


快速检索

最新资讯
热门点击