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



基于dialog的界面上有5个button,一个treelist,一个listbox。需要实现点击一个按钮的时候,listbox隐藏,同时5个按钮重新布局,能实现码


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


基于dialog的界面上有5个button,一个treelist,一个listbox。需要实现点击一个按钮的时候,listbox隐藏,同时5个按钮重新布局,能实现码[已结贴,结贴人:nofoot]
发表于:2007-03-05 19:49:26 楼主
rt
treelist和listbox的大小是固定的,两者处在同一个水平高度,占据了界面的80%。5个按钮分布在界面的底部。

当按一个按钮的时候,listbox要隐藏,这样为了美观,要让界面变窄。如何实现?
界面变窄后,5个本来在一排的按钮要分成两排了,要重新布局一下。如何实现?

我试了下动态创建按钮,但是创建之后如何响应按钮消息我不会了。
发表于:2007-03-05 20:22:261楼 得分:5
创建之后如何响应按钮消息我不会了

还是on..clicked吧?
发表于:2007-03-05 20:25:142楼 得分:0
我以前都用classwizard添加的啊,现在添加不了了。
发表于:2007-03-05 23:13:053楼 得分:0
你把代码里的一些和wizard有关的删掉了。
发表于:2007-03-06 08:33:144楼 得分:7
其实没有必要动态创建按钮
直接对对话框上的按钮添加控件变量,如m_button,m_list
隐藏listbox就   m_list.showwindow(sw_hide)
布局按钮就m_button.movewindow(crect(左,上,下,右));

若要动态创建按钮则要在resource.h里加自定义的id号,创建按钮时用该id号,然后用classwizard添加该id响应按钮消息
发表于:2007-03-06 08:36:565楼 得分:7
sorry   error
布局按钮是   m_button.movewindow(crect(左,上,右,下));
发表于:2007-03-06 08:52:176楼 得分:7
控件也是子窗口,类一般从   cwnd   派生,可以找到其窗口句柄,隐藏一个窗口用   showwindow   ,移动、改变大小用   movewindow   即可.
发表于:2007-03-06 09:21:377楼 得分:7
每一个控件都有id或者说是名字比如idb_button1之类的
你可以在onbuttondown代码里面
m_bctrl
~~~~~~
弄在成员变量里面,初始化根据需要随便为true或者false
if(m_bctrl)
{
getdlgitem([id号码])-> showwindow([true/false]);
getdlgitem([id号码])-> movewindow([l,t,r,b]);
                                                                  ~~~~~~~~~
                                        这四个参数不止决定了按钮的位置,也决定了按钮的大小
m_bctrl   =   false;
}
else
{
getdlgitem([id号码])-> showwindow([true/false]);
getdlgitem([id号码])-> movewindow([l,t,r,b]);
                                                                  ~~~~~~~~~
                                        这四个参数不止决定了按钮的位置,也决定了按钮的大小
如果按钮都不可见了,那么也就没有必要设置移动了
m_bctrl   =   true;
}
发表于:2007-03-06 09:25:028楼 得分:7
哦,对了,如果是按钮的话,补充一下,给按钮添加一个成员变量,使用类向导,将变量的类型设置为control,cbutton,那么每个按钮都有一个控件变量对应了
那么上面的代码里面
getdlgitem([idc_button1])-> showwindow
就可以改为
m_bt1.showwindow
~~~~~
这个认为是button1对应的成员变量
但是getdlgitem是公认的万能方法


快速检索

最新资讯
热门点击